Làm thế nào để bạn tìm thấy các dòng trùng lặp trong python?

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      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
3 và
>>> 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
4, để 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. Tìm hàng trùng lặp
  2. Đếm các hàng trùng lặp và không trùng lặp
  3. Trích xuất các hàng trùng lặp với
    >>> 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
    5
  4. Xác định bản sao nào cần đánh dấu bằng
    >>> 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
    6
  5. 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      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
3 trên cột

>>> 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      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
8 biểu thị trùng lặp. Nói cách khác, giá trị
>>> 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
8 có nghĩa là mục này giống với mục trước đó

Để xem toàn bộ sự trùng lặp trong DataFrame, chỉ cần gọi phương thức

>>> 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
3 trên DataFrame. Nó xuất ra
>>> 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
8 nếu toàn bộ hàng giống với hàng trước đó

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      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
3 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ủ đề,
>>> 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
8 đượ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.
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      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
1

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      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
2

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      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
63. Trích xuất các hàng trùng lặp với
>>> 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
5

Pandas

>>> 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
3 trả về Sê-ri boolean. Tuy nhiên, sẽ không thực tế khi xem danh sách
>>> 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
8 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 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      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
5 của Pandas để trích xuất các hàng trùng lặp đó

>>> 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
2

hình ảnh của tác giả

>>> 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
5 có thể lấy Sê-ri boolean và lọc dữ liệu dựa trên
>>> 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
8 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. Đố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      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
3. Đối số thứ hai
>>> 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
11 sẽ hiển thị tất cả các cột

4. Xác định bản sao nào cần đánh dấu bằng
>>> 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
6

Có một đối số

>>> 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
6 trong Pandas
>>> 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
3 để xác định những bản sao nào cần đánh dấu.
>>> 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
6 mặc định là
>>> 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
16, 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

Chúng tôi có thể thay đổi nó thành

>>> 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
17 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

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      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
18. Nó đánh dấu tất cả các bản sao là
>>> 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
8 và cho phép chúng tôi xem tất cả các hàng trùng lặp

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      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
4 để loại bỏ các hàng trùng lặp

>>> 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
8

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      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
21 để xóa các bản sao khỏi Khung dữ liệu gốc

>>> 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
0

Xác định bản sao nào cần giữ

Đối số

>>> 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
6 cũng có thể được đặt cho
>>> 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
4 để xác định những bản sao nào cần giữ lại. Nó mặc định là
>>> 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
16 để giữ lần xuất hiện đầu tiên và loại bỏ tất cả các bản sao khác

Tương tự, chúng ta có thể đặt

>>> 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
6 thành
>>> 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
17 để giữ lần xuất hiện cuối cùng và loại bỏ các bản sao khác

>>> 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
0

Và chúng tôi có thể đặt

>>> 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
6 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.
36 để loại bỏ tất cả các bản sao

>>> 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
1

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      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
2Kết luận

Pandas

>>> 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
3 và
>>> 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
4 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

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      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
3 và
>>> 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
4 và để biết về những điều khác mà bạn có thể làm

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

Làm cách nào để tìm các bản sao trong Python?

Nhiều cách để kiểm tra xem có tồn tại trùng lặp trong danh sách Python hay không .
Độ dài của Danh sách và độ dài của Tập hợp khác nhau
Kiểm tra từng phần tử trong tập hợp. nếu có, dup, nếu không, thêm
Kiểm tra danh sách. đếm [] cho từng phần tử

Làm cách nào để xem số lượng hàng trùng lặp?

Bạn có thể đếm số hàng trùng lặp bằng cách đếm True trong pandas. Chuỗi thu được với tính năng sao chép[] . Số True có thể được đếm bằng phương thức sum[]. Nếu bạn muốn đếm số Sai [= số hàng không trùng lặp], bạn có thể đảo ngược nó bằng phép phủ định ~ rồi đếm Đúng bằng sum[].

Chủ Đề