Theo mặc định, đối với mỗi bộ giá trị trùng lặp, lần xuất hiện đầu tiên được đặt thành Sai và tất cả các giá trị khác thành True
>>> df.duplicated[] 0 False 1 True 2 False 3 False 4 False dtype: bool
Bằng cách sử dụng 'cuối cùng', lần xuất hiện cuối cùng của mỗi bộ giá trị trùng lặp được đặt thành Sai và tất cả các giá trị khác thành True
Trong bài viết này, chúng tôi sẽ thảo luận về cách xóa nhiều dòng được lặp lại trong Python. Nếu tệp nhỏ và chỉ có một vài dòng, quá trình xóa các dòng lặp lại khỏi tệp có thể được thực hiện thủ công. Tuy nhiên, khi xử lý các tệp lớn, Python có thể hỗ trợ
Sử dụng phương pháp xử lý tệp
Python có các phương thức tích hợp để tạo, mở và đóng tệp, giúp xử lý tệp dễ dàng hơn. Python cũng cho phép thực hiện một số hành động đối với tệp, chẳng hạn như đọc, viết và nối thêm dữ liệu, trong khi tệp đang mở
Để xóa các dòng trùng lặp khỏi tệp văn bản hoặc hàm Python, chúng tôi sử dụng các phương thức xử lý tệp trong Python. Tệp văn bản hoặc chức năng phải nằm trong cùng thư mục với. tệp py chứa chương trình Python
thuật toán
Sau đây là một cách tiếp cận để loại bỏ các dòng lặp lại trong hàm Python
Vì chúng tôi sẽ chỉ đọc nội dung của tệp này, trước tiên hãy mở tệp đầu vào ở chế độ chỉ đọc
Bây giờ, để ghi nội dung vào tệp này, hãy mở tệp đầu ra ở chế độ ghi
Đọc từng dòng của tệp đầu vào, sau đó kiểm tra tệp đầu ra để xem có dòng nào tương tự như dòng này được viết ở đó không
Nếu không, hãy thêm dòng này vào tệp đầu ra và lưu giá trị băm của dòng trong một tập hợp. Thay vì kiểm tra và lưu trữ toàn bộ dòng, thay vào đó, chúng tôi sẽ kiểm tra giá trị băm của từng dòng. Điều này hiệu quả hơn và tốn ít dung lượng hơn khi xử lý các tệp lớn
Bỏ qua dòng đó nếu giá trị băm đã được thêm vào tập hợp
Khi mọi thứ hoàn tất, tệp đầu ra sẽ chứa mọi dòng từ tệp đầu vào mà không sao chép bất kỳ thứ gì
Ở đây, tập tin đầu vào tôi. e. 'Tập tin. txt’ chứa dữ liệu sau –
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.
Ví dụ
Sau đây là một ví dụ để loại bỏ các dòng lặp lại trong hàm Python -
đầu ra
Chúng ta có thể thấy trong kết quả đầu ra sau, tất cả các dòng lặp lại từ tệp đầu vào đều bị loại bỏ trong tệp đầu ra chứa dữ liệu duy nhất như hình bên dưới
Trong quá trình tiền xử lý và phân tích dữ liệu, bạn thường sẽ cần tìm hiểu xem liệu mình có dữ liệu trùng lặp hay không và cách xử lý chúng
Trong bài viết này, bạn sẽ tìm hiểu hai phương pháp,
>>> df.Cabin.duplicated[]0 False3 và
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False4, để tìm và xóa các hàng trùng lặp, cũng như cách sửa đổi hành vi của chúng cho phù hợp với nhu cầu cụ thể của bạn. Bài báo này có cấu trúc như sau
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
- Tìm hàng trùng lặp
- Đếm các hàng trùng lặp và không trùng lặp
- Trích xuất các hàng trùng lặp với
>>> df.Cabin.duplicated[]0 False
5
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool - Xác định bản sao nào cần đánh dấu bằng
>>> df.Cabin.duplicated[]0 False
6
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool - Xoá các hàng trùng lặp
Để trình diễn, chúng tôi sẽ sử dụng một tập hợp con từ bộ dữ liệu Titanic có sẵn trên Kaggle
import pandas as pddef load_data[]:
df_all = pd.read_csv['train.csv']
# Take a subset
return df_all.loc[:300, ['Survived', 'Pclass', 'Sex', 'Cabin', 'Embarked']].dropna[]df = load_data[]
hình ảnh của tác giả
Vui lòng kiểm tra Notebook để biết mã nguồn
1. Tìm hàng trùng lặp
Để tìm các bản sao trên một cột cụ thể, chúng ta chỉ cần gọi phương thức
>>> df.Cabin.duplicated[]0 False3 trên cột
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Kết quả là một Sê-ri boolean có giá trị
>>> df.Cabin.duplicated[]0 False8 biểu thị trùng lặp. Nói cách khác, giá trị
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False8 có nghĩa là mục này giống với mục trước đó
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Để xem toàn bộ sự trùng lặp trong DataFrame, chỉ cần gọi phương thức
>>> df.Cabin.duplicated[]0 False3 trên DataFrame. Nó xuất ra
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False8 nếu toàn bộ hàng giống với hàng trước đó
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.3
Để xem xét các cột nhất định để xác định các bản sao, chúng ta có thể chuyển danh sách các cột cho đối số
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.32
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.52. Đếm số trùng lặp và không trùng lặp
Kết quả của
>>> df.Cabin.duplicated[]0 False3 là một Sê-ri boolean và chúng tôi có thể cộng chúng lại để đếm số lượng trùng lặp. Đằng sau chủ đề,
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False8 được chuyển đổi thành
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.35 và
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.36 được chuyển đổi thành
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.37, sau đó cộng chúng lại
>>> df.Cabin.duplicated[]0 False1
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Giống như trước đây, chúng ta có thể đếm số trùng lặp trong DataFrame và trên các cột nhất định
>>> df.Cabin.duplicated[]0 False2
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Nếu bạn muốn đếm số lượng không trùng lặp [Số lượng của
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.36], bạn có thể đảo ngược nó với phủ định [
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.39] và sau đó gọi
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.50
>>> df.Cabin.duplicated[]0 False63. Trích xuất các hàng trùng lặp với
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False5
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Pandas
>>> df.Cabin.duplicated[]0 False3 trả về Sê-ri boolean. Tuy nhiên, sẽ không thực tế khi xem danh sách
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False8 và
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.36 khi chúng tôi cần thực hiện một số phân tích dữ liệu
Chúng tôi có thể bộ chọn dữ liệu
>>> df.Cabin.duplicated[]0 False5 của Pandas để trích xuất các hàng trùng lặp đó
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False2
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
hình ảnh của tác giả
>>> df.Cabin.duplicated[]0 False5 có thể lấy Sê-ri boolean và lọc dữ liệu dựa trên
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False8 và
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.36. Đối số đầu tiên
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.59 sẽ tìm các hàng được xác định bởi
>>> df.Cabin.duplicated[]0 False3. Đối số thứ hai
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False11 sẽ hiển thị tất cả các cột4. Xác định bản sao nào cần đánh dấu bằng
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False6
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Có một đối số
>>> df.Cabin.duplicated[]0 False6 trong Pandas
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False3 để xác định những bản sao nào cần đánh dấu.
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False6 mặc định là
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False16, có nghĩa là lần xuất hiện đầu tiên được giữ lại và tất cả những lần xuất hiện khác được xác định là trùng lặp
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Chúng tôi có thể thay đổi nó thành
>>> df.Cabin.duplicated[]0 False17 giữ lần xuất hiện cuối cùng và đánh dấu tất cả những cái khác là trùng lặp
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
hình ảnh của tác giả
Có một tùy chọn thứ ba chúng ta có thể sử dụng
>>> df.Cabin.duplicated[]0 False18. Nó đánh dấu tất cả các bản sao là
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False8 và cho phép chúng tôi xem tất cả các hàng trùng lặp
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
hình ảnh của tác giả5. Xoá các hàng trùng lặp
Chúng tôi có thể sử dụng phương thức tích hợp Pandas
>>> df.Cabin.duplicated[]0 False4 để loại bỏ các hàng trùng lặp
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False8
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
hình ảnh của tác giả
Lưu ý rằng chúng tôi đã bắt đầu với 80 hàng, bây giờ là 77. Theo mặc định, phương thức này trả về một DataFrame mới với các hàng trùng lặp đã bị xóa. Chúng tôi có thể đặt đối số
>>> df.Cabin.duplicated[]0 False21 để xóa các bản sao khỏi Khung dữ liệu gốc
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False0
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Xác định bản sao nào cần giữ
Đối số
>>> df.Cabin.duplicated[]0 False6 cũng có thể được đặt cho
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False4 để xác định những bản sao nào cần giữ lại. Nó mặc định là
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False16 để giữ lần xuất hiện đầu tiên và loại bỏ tất cả các bản sao khác
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Tương tự, chúng ta có thể đặt
>>> df.Cabin.duplicated[]0 False6 thành
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False17 để giữ lần xuất hiện cuối cùng và loại bỏ các bản sao khác
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False0
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Và chúng tôi có thể đặt
>>> df.Cabin.duplicated[]0 False6 thành
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.36 để loại bỏ tất cả các bản sao
>>> df.Cabin.duplicated[]0 False1
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Xem xét các cột nhất định để loại bỏ các bản sao
Tương tự, để xem xét các cột nhất định để loại bỏ các bản sao, chúng ta có thể chuyển danh sách các cột cho đối số
Welcome to TutorialsPoint. Welcome to TutorialsPoint. Python programming language in this file. eliminate repeated lines. eliminate repeated lines. eliminate repeated lines. Skip the line.32
>>> df.Cabin.duplicated[]0 False2Kết luận
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Pandas
>>> df.Cabin.duplicated[]0 False3 và
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False4 là hai phương pháp nhanh chóng và thuận tiện để tìm và loại bỏ các bản sao. Điều quan trọng là phải biết chúng vì chúng ta thường cần sử dụng chúng trong quá trình tiền xử lý và phân tích dữ liệu
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Tôi hy vọng bài viết này sẽ giúp bạn tiết kiệm thời gian trong việc học Pandas. Tôi khuyên bạn nên xem tài liệu về API
>>> df.Cabin.duplicated[]0 False3 và
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
>>> df.Cabin.duplicated[]0 False4 và để biết về những điều khác mà bạn có thể làm
1 False
9 False
10 False
14 False
..
271 False
278 False
286 False
299 False
300 False
Name: Cabin, Length: 80, dtype: bool
Cảm ơn vì đã đọc. Vui lòng kiểm tra sổ ghi chép để biết mã nguồn và tiếp tục theo dõi nếu bạn quan tâm đến khía cạnh thực tế của máy học