Đối với bất kỳ ai làm việc trong vai trò phân tích, so sánh hai bộ dữ liệu sẽ là hoạt động hàng ngày. Cho dù đó là để chứng minh các thay đổi được thực hiện không ảnh hưởng đến phần còn lại của dữ liệu trong tệp thường được gọi là thử nghiệm hồi quy của Hồi giáo hay để hiểu sự khác biệt giữa hai tệp /bộ dữ liệu. Comparing two data sets will be a day to day activity. Whether that is to prove changes made are not impacting the rest of the data in the file which is typically called as “Regression testing” or to understand the difference between two files /data sets. Show
Có rất nhiều công cụ so sánh tệp có sẵn trên thị trường như Beyond so sánh .ETC Trong bài viết này, chúng tôi sẽ khám phá cách so sánh hai tệp/datasetseff đủ lớn trong khi tạo ra Summery có ý nghĩa bằng thư viện Pythoncompare two large files/datasets efficiently while creating meaningful summery using Python Library “datacompy” DataCompy: là một gói để so sánh hai khung dữ liệu. Ban đầu được bắt đầu như một sự thay thế cho SAS SAS Hãy để xem làm thế nào chúng ta có thể sử dụng thư viện này. Cài đặt DataCompydatacompypip install datacompy Thông tin chi tiết :DataCompy lấy hai khung dữ liệu làm đầu vào và cung cấp cho chúng tôi một báo cáo có thể đọc được của con người có chứa số liệu thống kê cho chúng tôi biết những điểm tương đồng và khác biệt giữa hai khung dữ liệu.takes two dataframes as input and gives us a human-readable report containing statistics that lets us know the similarities and dissimilarities between the two dataframes. Nó sẽ cố gắng tham gia hai DataFrames trong danh sách các cột tham gia hoặc trên các chỉ mục. Các so sánh khôn ngoan về cột cố gắng khớp các giá trị ngay cả khi DTYPE không khớp. Vì vậy, nếu, ví dụ, bạn có một cột có giá trị Thí dụ :Giả sử bạn có 2 tệp CSV - Tải các tệp vào hai khung dữ liệu df1 DataFrame1 -csv1df2 DataFrame2 -csv2Nhập DataCompy & So sánh hai DataFrames Nhập dữ liệu so sánh = datacompy.compare (df1, df2, tham gia_columns = xông acct_id Tạo đầu ra (dưới dạng báo cáo)print(compare.report()) Đầu ra:So sánh dữ liệu - - - - - - - - - - - Tóm tắt DataFrame - - - - - - - - - Các cột DataFrame ROWS0 Bản gốc 5 71 Mới 4 6 Tóm tắt cột - - - - - - - Số lượng cột chung: 4number của các cột trong bản gốc nhưng không phải trong mới: 1 phát danh của các cột trong mới nhưng không phải trong bản gốc: 0 Tóm tắt hàng - - - - - - Khớp trên: acct_idany sao chép trên các giá trị phù hợp: khả năng dung sai yesabsolute: 0,0001 độ dung sai: 0number của các hàng chung: 5Number của các hàng trong bản gốc Số lượng hàng với một số cột được so sánh không bằng nhau: 3number của các hàng với tất cả các cột được so sánh bằng nhau: 2 So sánh cột - - - - - - - - - Số lượng cột so với một số giá trị không bằng nhau: 3number của các cột so với tất cả các giá trị bằng nhau: 1total Số giá trị so sánh không bằng nhau: 5 Các cột có các giá trị hoặc loại không đồng đều - - - - - - - - - - - - - - - - - - - Cột gốc DTYPE Mới DTYPE # Max không đồng đều khác nhau # NULL Diff0 Dollar_amt Float64 Float64 1 0.05 02 Tên đối tượng đối tượng 2 0.00 01 QTY float64 float64 2 3.00 1 Các hàng mẫu có giá trị không đồng đều - - - - - - - - - - - - - - - - - - ACCT_ID DOLLAR_AMT (Bản gốc) Dollar_amt (mới) 0 1234 123.45 123.4 ACCT_ID QTY (Bản gốc) ACCT_ID Tên (Bản gốc) Tên (Mới) 0 1234 George Maharis George Michael Bluth3 1237 Bob Loblaw Robert Loblaw Các hàng mẫu chỉ trong bản gốc (10 cột đầu tiên) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ACCT_ID Dollar_amt Tên QTY DATE_FLD6 1239 1.05 LOOR SEAL Bluth 29.0 1/1/20174 1237 123456.00 Bob Loblaw Nan 1/1/2017 Các hàng mẫu chỉ trong Mới (10 cột đầu tiên) - - - - - - - - - - - - - - - - - - - - - - ACCT_ID DOLLAR_AMT Tên Qty7 1240 1.05 Loose Seal Bluth 111.0 Chi tiết đầu ra là tự giải thích Điều gì đang xảy ra đằng sau hậu trường:
print(compare.df1_unq_rows) Tất cả các hàng chưa từng có từ DF1intersect_rows - so sánh tất cả các cột của các hàng phù hợp và trả về đúng nếu khớp và sai nếu chưa từng có print(compare.intersect_rows)df1_unq_columns () - đưa ra danh sách các cột có trong DF1 nhưng không phải trong DF2. Trong ví dụ của chúng tôi DATE_FLD không có trong DF2 do đó được trả về. in (so sánh.df1_unq_columns ())Điều kiện để xử lý các giá trị trùng lặp: Sự kết hợp trùng lặp có phần ngây thơ khi chọn những hàng nào phù hợp khi có các bản sao. DataCompy sắp xếp theo các trường khác trước khi tạo ID tạm thời, sau đó khớp trực tiếp trên trường đó. Nếu có nhiều bản sao, bạn có thể cần phải tham gia nhiều cột hơn hoặc xử lý riêng chúng. Giới hạn
Tóm lại :DataCompy là thư viện khá hữu ích nếu bạn muốn nhanh chóng so sánh hai bộ dữ liệu. Nó cũng cho phép bạn phục vụ cho sự khác biệt nhỏ giữa các bộ dữ liệu và cung cấp tóm tắt chi tiết về hai khung dữ liệu. Tôi hy vọng bạn thấy bài viết này hữu ích. |