Hướng dẫn how to compare two csv files in python using pandas - cách so sánh hai tệp csv trong python bằng cách sử dụng gấu trúc

9

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có hai tệp CSV đều bao gồm hai cột.

Cái đầu tiên có ID sản phẩm và số thứ hai có số sê -ri.

Tôi cần tra cứu, tất cả các số sê -ri từ CSV đầu tiên và tìm các trận đấu, trên CSV thứ hai. Báo cáo kết quả, sẽ có số sê -ri phù hợp và ID sản phẩm tương ứng từ mỗi CSV, trong một cột riêng mà tôi cố gắng sửa đổi mã dưới đây, không gặp may.

Làm thế nào bạn sẽ tiếp cận điều này?

import pandas as pd
    A=set[pd.read_csv["c1.csv", index_col=False, header=None][0]] #reads the csv, takes only the first column and creates a set out of it.
    B=set[pd.read_csv["c2.csv", index_col=False, header=None][0]] #same here
    print[A-B] #set A - set B gives back everything thats only in A.
    print[B-A] # same here, other way around.

Đã hỏi ngày 23 tháng 2 năm 2017 lúc 14:12Feb 23, 2017 at 14:12

1

Tôi nghĩ bạn cần

A = pd.DataFrame[{'product id':   [1455,5452,3775],
                    'serial number':[44,55,66]}]

print [A]

B = pd.DataFrame[{'product id':   [7000,2000,1000],
                    'serial number':[44,55,77]}]

print [B]

print [pd.merge[A, B, on='serial number']]
   product id_x  serial number  product id_y
0          1455             44          7000
1          5452             55          2000
3:

A = pd.DataFrame[{'product id':   [1455,5452,3775],
                    'serial number':[44,55,66]}]

print [A]

B = pd.DataFrame[{'product id':   [7000,2000,1000],
                    'serial number':[44,55,77]}]

print [B]

print [pd.merge[A, B, on='serial number']]
   product id_x  serial number  product id_y
0          1455             44          7000
1          5452             55          2000

Đã trả lời ngày 23 tháng 2 năm 2017 lúc 14:32Feb 23, 2017 at 14:32

JEZRAELJEZRAELjezrael

763K85 Huy hiệu vàng1215 Huy hiệu bạc1150 Huy hiệu Đồng85 gold badges1215 silver badges1150 bronze badges

2

Thử cái này:

A = pd.read_csv["c1.csv", header=None, usecols=[0], names=['col']].drop_duplicates[]
B = pd.read_csv["c2.csv", header=None, usecols=[0], names=['col']].drop_duplicates[]
# A - B
pd.merge[A, B, on='col', how='left', indicator=True].query["_merge == 'left_only'"]
# B - A
pd.merge[A, B, on='col', how='right', indicator=True].query["_merge == 'right_only'"]

Đã trả lời ngày 23 tháng 2 năm 2017 lúc 14:34Feb 23, 2017 at 14:34

Bạn có thể chuyển đổi DF thành các tập hợp, sẽ bỏ qua chỉ mục trong khi so sánh dữ liệu, sau đó sử dụng SET SOMMETRIC_DIFFERTY

ds1 = set[[ tuple[values] for values in df1.values.tolist[]]]
ds2 = set[[ tuple[values] for values in df2.values.tolist[]]]

ds1.symmetric_difference[ds2]
print df1 ,'\n\n'
print df2,'\n\n'

print pd.DataFrame[list[ds1.difference[ds2]]],'\n\n'
print pd.DataFrame[list[ds2.difference[ds1]]],'\n\n'

DF1

id  Name  score isEnrolled               Comment
0  111  Jack   2.17       True  He was late to class
1  112  Nick   1.11      False             Graduated
2  113   Zoe   4.12       True                   NaN 

DF2

    id  Name  score isEnrolled               Comment
0  111  Jack   2.17       True  He was late to class
1  112  Nick   1.21      False             Graduated
2  113   Zoe   4.12      False           On vacation 

Đầu ra

     0     1     2      3          4
0  113   Zoe  4.12   True        NaN
1  112  Nick  1.11  False  Graduated 


     0     1     2      3            4
0  113   Zoe  4.12  False  On vacation
1  112  Nick  1.21  False    Graduated 

Đã trả lời ngày 23 tháng 2 năm 2017 lúc 14:34Feb 23, 2017 at 14:34

Bạn có thể chuyển đổi DF thành các tập hợp, sẽ bỏ qua chỉ mục trong khi so sánh dữ liệu, sau đó sử dụng SET SOMMETRIC_DIFFERTYShijo

DF12 gold badges17 silver badges30 bronze badges

Bài đăng này giải thích cách so sánh hai tệp CSV và in ra sự khác biệt trong Python.compare two CSV files and print out differences in Python.

Mục lục:

Bắt đầu nào.

Ví dụ Dữ liệu & Thư viện bổ trợ

Trước tiên chúng tôi phải nhập thư viện Pandas:

import pandas as pd                                 # Load pandas

Hơn nữa, hãy xem xét dữ liệu ví dụ dưới đây:

data1 = pd.DataFrame[{'x1':range[0, 6],             # Create first pandas DataFrame
                      'x2':['x', 'y', 'x', 'x', 'y', 'x'],
                      'x3':range[2, 8]}]
print[data1]                                        # Print first pandas DataFrame

data2 = pd.DataFrame[{'x1':range[3, 8],             # Create second pandas DataFrame
                      'x2':['x', 'x', 'x', 'y', 'y'],
                      'x3':range[5, 10]}]
print[data2]                                        # Print second pandas DataFrame

Đầu ra của cú pháp lập trình Python trước đó được hiển thị trong Bảng 1 và 2: Chúng tôi đã tạo hai khung dữ liệu gấu trúc với cùng một cột nhưng các giá trị khác nhau.

Hãy để Viết các khung dữ liệu gấu trúc này vào hai tệp CSV riêng biệt:

A = pd.DataFrame[{'product id':   [1455,5452,3775],
                    'serial number':[44,55,66]}]

print [A]

B = pd.DataFrame[{'product id':   [7000,2000,1000],
                    'serial number':[44,55,77]}]

print [B]

print [pd.merge[A, B, on='serial number']]
   product id_x  serial number  product id_y
0          1455             44          7000
1          5452             55          2000
0

Sau khi cú pháp Python trước đó được thực thi, bạn sẽ tìm thấy nhiều tệp CSV trong thư mục làm việc hiện tại của mình. Hai tệp này sẽ được sử dụng làm cơ sở cho ví dụ sau.

Ví dụ: So sánh hai tệp CSV và in ra sự khác biệt

Cú pháp lập trình Python sau đây cho thấy cách so sánh và tìm sự khác biệt giữa các khung dữ liệu gấu trúc trong hai tệp CSV trong Python.

Chính xác hơn, chúng tôi đang tìm kiếm các hàng tồn tại trong khung dữ liệu gấu trúc thứ hai, nhưng không phải trong khung dữ liệu đầu tiên.

Trong bước đầu tiên của ví dụ này, chúng tôi đang nhập hai DataFrames Pandas:

A = pd.DataFrame[{'product id':   [1455,5452,3775],
                    'serial number':[44,55,66]}]

print [A]

B = pd.DataFrame[{'product id':   [7000,2000,1000],
                    'serial number':[44,55,77]}]

print [B]

print [pd.merge[A, B, on='serial number']]
   product id_x  serial number  product id_y
0          1455             44          7000
1          5452             55          2000
1

Tiếp theo, chúng tôi đang sử dụng một vòng lặp để kiểm tra từng dòng trong tệp CSV thứ hai nếu nó tồn tại trong tệp CSV đầu tiên. Hơn nữa, chúng tôi đang tạo một tệp CSV mới chứa tất cả các hàng chỉ tồn tại trong tệp CSV thứ hai.

Làm thôi nào:

A = pd.DataFrame[{'product id':   [1455,5452,3775],
                    'serial number':[44,55,66]}]

print [A]

B = pd.DataFrame[{'product id':   [7000,2000,1000],
                    'serial number':[44,55,77]}]

print [B]

print [pd.merge[A, B, on='serial number']]
   product id_x  serial number  product id_y
0          1455             44          7000
1          5452             55          2000
2

Bảng 3 cho thấy đầu ra của cú pháp Python trước đó - một tập dữ liệu cho thấy sự khác biệt giữa khung dữ liệu Pandas thứ nhất và thứ hai.

Xin lưu ý rằng mã của hướng dẫn này một phần dựa trên chủ đề Overflow Stack này. Bạn có thể có một cái nhìn ở đó để biết thêm chi tiết về cách so sánh các bộ dữ liệu khác nhau được lưu trữ trong các tệp CSV trong Python.

Video & tài nguyên hơn nữa

Hãy xem video sau đây trên kênh YouTube thống kê. Tôi minh họa cú pháp lập trình Python của bài viết này trong video.

Video YouTube sẽ sớm được thêm vào.

Ngoài ra, bạn có thể đọc một số hướng dẫn liên quan trên trang web này. Một lựa chọn các bài báo được liệt kê ở đây.

  • Xử lý các khung dữ liệu bằng thư viện Pandas trong Python
  • So sánh hai khung dữ liệu gấu trúc trong Python
  • Tìm sự khác biệt giữa hai cột của Pandas DataFrame
  • So sánh các tiêu đề của hai khung gộp của gấu trúc trong Python
  • Kiểm tra xem hai khung dữ liệu gấu trúc có bằng nhau trong Python không
  • Đọc tệp CSV dưới dạng Pandas DataFrame trong Python
  • Chỉ đọc một số cột nhất định của tệp CSV dưới dạng pandas dataframe
  • Bỏ qua hàng nhưng hãy giữ tiêu đề khi đọc tệp CSV
  • Đọc từng dòng tệp CSV trong Python
  • Tất cả các hướng dẫn lập trình Python

Hướng dẫn này đã trình bày cách tìm sự khác biệt giữa hai tệp CSV trong ngôn ngữ lập trình Python. Nếu bạn có thêm câu hỏi, xin vui lòng cho tôi biết trong các ý kiến ​​dưới đây.find differences between two CSV files in the Python programming language. If you have additional questions, please let me know in the comments below.

Làm cách nào để so sánh nội dung của hai tệp CSV?

Nhấp vào nút "So sánh" để so sánh các tệp CSV của bạn!Bạn có thể chọn chỉ hiển thị các hàng có sự khác biệt hoặc để hiển thị tất cả [với mã màu để trực quan hóa sự khác biệt].Bạn cũng có thể so sánh trực tiếp hai tệp CSV bằng cách chỉ định URL của họ trong tham số URL1 và URL2.! You can choose to display only the rows with differences or to display them all [With a color code to visualize the differences]. You can also directly compare two CSV files by specifying their urls in the GET parameters url1 and url2.

Làm cách nào để so sánh hai tệp trong Python?

Approach..
Mở cả hai tệp ở chế độ đọc ..
Danh sách lưu trữ các chuỗi ..
Bắt đầu so sánh cả hai tệp với phương thức trợ giúp của giao lộ [] cho các chuỗi chung ..
So sánh cả hai tệp cho sự khác biệt bằng cách sử dụng trong khi vòng lặp ..
Đóng cả hai tệp ..

Chúng ta có thể so sánh hai bộ dữ liệu trong Python không?

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.. It also allow you to cater for minor differences between the data sets and provides detail summary about two dataframes.

Làm cách nào để so sánh các tệp CSV trong Beyond So sánh?

Duyệt hệ thống tập tin của bạn, sau đó, bên phải và chọn so sánh.Hai tập tin sẽ mở ra một phiên so sánh ngoài.. The two files should open up a Beyond Compare session.

Bài Viết Liên Quan

Chủ Đề