Nếu chúng tôi muốn so sánh các hàng và tìm các bản sao chỉ dựa trên các cột đã chọn thì chúng tôi nên chuyển danh sách tên cột trong đối số tập hợp con của Dataframe. chức năng trùng lặp (). Nó sẽ chọn và trả về các hàng trùng lặp chỉ dựa trên các cột được truyền này Sau đó, bạn có thể đếm số trùng lặp dưới mỗi cột bằng phương pháp được giới thiệu ở phần đầu của hướng dẫn này Show
df.pivot_table(columns=['DataFrame Column'], aggfunc='size') Vì vậy, đây là mã Python hoàn chỉnh để lấy số lượng trùng lặp cho cột Màu import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) dups_color = df.pivot_table(columns=['Color'], aggfunc='size') print (dups_color) Và đây là kết quả
Ngoài ra, bạn có thể lấy số lượng trùng lặp cho cột Hình dạng bằng mã này import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) dups_shape = df.pivot_table(columns=['Shape'], aggfunc='size') print (dups_shape) Sau đó, bạn sẽ nhận được 4 bản sao cho mỗi hình dạng
Trường hợp 2. đếm trùng lặp trên nhiều cộtĐiều gì xảy ra nếu bạn muốn đếm số lần trùng lặp trên nhiều cột? Ví dụ: nếu bạn muốn đếm các bản sao trên cả cột Màu và Hình dạng thì sao? Nếu đúng như vậy, bạn chỉ cần thêm tất cả các cột cần thiết như thế này columns=['Color','Shape'] Vì vậy, mã Python đầy đủ của bạn sẽ trông như sau import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) dups_color_and_shape = df.pivot_table(columns=['Color','Shape'], aggfunc='size') print (dups_color_and_shape) Chạy mã và bạn sẽ nhận được số lượng trùng lặp trên cả hai cột Màu sắc và Hình dạng import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) print (df)0 Trường hợp 3. đếm trùng lặp khi có giá trị NaN trong DataFrameĐối với trường hợp thứ ba, hãy sử dụng tập dữ liệu này có chứa các giá trị NaN giá trị700NaN700NaN800700800DataFrame với các giá trị NaN sẽ trông như thế này import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) print (df)1 Chạy mã và bây giờ bạn sẽ thấy các giá trị NaN đó import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) print (df)2 Sau đó, bạn có thể áp dụng phương pháp tương tự để đếm các bản sao import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) print (df)3 Đây là kết quả import pandas as pd boxes = {'Color': ['Green','Green','Green','Blue','Blue','Red','Red','Red'], 'Shape': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'] } df = pd.DataFrame(boxes, columns= ['Color','Shape']) print (df)4 Để có được số lượng các giá trị NaN, bạn có thể thay thế các giá trị NaN đó bằng bất kỳ giá trị nào bạn chọn và sau đó thực hiện đếm 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à >>> 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
Để 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():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 >>> df.Cabin.duplicated()0 False 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ị >>> df.Cabin.duplicated()0 False8 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 False3 trên DataFrame. Nó xuất ra >>> df.Cabin.duplicated()0 False8 nếu toàn bộ hàng giống với hàng trước đó >>> df.duplicated()0 False Để 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ố >>> df.duplicated()0 False2 >>> df.duplicated(subset=['Survived', 'Pclass', 'Sex'])0 False2. Đế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 ta có thể cộng chúng lại để đếm số lượng trùng lặp. Đằng sau chủ đề, >>> df.Cabin.duplicated()0 False8 được chuyển đổi thành >>> df.duplicated()0 False5 và >>> df.duplicated()0 False6 được chuyển đổi thành >>> df.duplicated()0 False7, sau đó cộng chúng lại # Count duplicate on a column 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 # Count duplicate in a DataFrame Nếu bạn muốn đếm số lượng không trùng lặp (Số lượng của >>> df.duplicated()0 False6), bạn có thể đảo ngược nó bằng cách phủ định ( >>> df.duplicated()0 False9) rồi gọi >>> df.duplicated(subset=['Survived', 'Pclass', 'Sex'])0 False0 # Count the number of non-duplicates 3. Trích xuất các hàng trùng lặp với >>> df.Cabin.duplicated()0 False5 Pandas >>> df.Cabin.duplicated()0 False3 trả về một Sê-ri boolean. Tuy nhiên, sẽ không thực tế khi xem danh sách >>> df.Cabin.duplicated()0 False8 và >>> df.duplicated()0 False6 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 đó # Extract duplicate rows 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 >>> df.Cabin.duplicated()0 False8 và >>> df.duplicated()0 False6. Đối số đầu tiên >>> df.duplicated(subset=['Survived', 'Pclass', 'Sex'])0 False9 sẽ tìm các hàng được xác định bởi >>> df.Cabin.duplicated()0 False3. Đối số thứ hai # Count duplicate on a column 1 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 >>> df.Cabin.duplicated()0 False6 Có một đối số >>> df.Cabin.duplicated()0 False6 trong Pandas >>> df.Cabin.duplicated()0 False3 để xác định những bản sao nào cần đánh dấu. >>> df.Cabin.duplicated()0 False6 mặc định là # Count duplicate on a column 6, 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ặpChúng tôi có thể thay đổi nó thành # Count duplicate on a column 7 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ặphình ảnh của tác giảCó một tùy chọn thứ ba chúng ta có thể sử dụng # Count duplicate on a column 8. Nó đánh dấu tất cả các hàng trùng lặp là >>> df.Cabin.duplicated()0 False8 và cho phép chúng tôi xem tất cả các hàng trùng lặphình ảnh của tác giả5. Xoá các hàng trùng lặp Chúng ta có thể sử dụng phương thức tích hợp sẵn của Pandas >>> df.Cabin.duplicated()0 False4 để loại bỏ các hàng trùng lặp df.drop_duplicates() 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ố # Count duplicate in a DataFrame1 để xóa các bản sao khỏi Khung dữ liệu gốc df.drop_duplicates(inplace=True) 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 >>> 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à # Count duplicate on a column 6 để giữ lần xuất hiện đầu tiên và loại bỏ tất cả các bản sao khácTương tự, chúng ta có thể đặt >>> df.Cabin.duplicated()0 False6 thành # Count duplicate on a column 7 để 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 False0 Và chúng tôi có thể đặt >>> df.Cabin.duplicated()0 False6 thành >>> df.duplicated()0 False6 để loại bỏ tất cả các bản sao >>> df.Cabin.duplicated()0 False1 Xem xét các cột nhất định để loại bỏ các bản saoTươ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ố >>> df.duplicated()0 False2 >>> df.Cabin.duplicated()0 False2Kết luận Pandas >>> df.Cabin.duplicated()0 False3 và >>> 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 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à >>> df.Cabin.duplicated()0 False4 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 Python xử lý các giá trị trùng lặp trong tập dữ liệu như thế nào?Phương thức drop_duplicates() của Pandas giúp loại bỏ các bản sao khỏi Khung dữ liệu Pandas trong Python.
Làm cách nào để tính các giá trị trùng lặp trong Pandas?Bạn có thể đếm các bản sao trong DataFrame của gấu trúc bằng cách sử dụng DataFrame. hàm Pivot_table() . Hàm này đếm số mục trùng lặp trong một cột, nhiều cột và đếm các mục trùng lặp khi có giá trị NaN trong DataFrame.
Làm cách nào để xóa các giá trị trùng lặp trong Pandas DataFrame?Cú pháp hàm pandas drop_duplicates()
. Nếu là 'cuối cùng', các hàng trùng lặp trừ hàng cuối cùng sẽ bị xóa. Nếu Sai, tất cả các hàng trùng lặp sẽ bị xóa. thay thế. nếu Đúng, Khung dữ liệu nguồn được thay đổi và Không được trả lại. |