import pandas as pd
import sys
import csv
def dataframe_difference[df1: pd.DataFrame, df2: pd.DataFrame, csvfile, which=None]:
"""Find rows which are different between two DataFrames."""
comparison_df = df1.merge[
df2,
indicator=True,
how='outer'
]
if which is None:
diff_df = comparison_df[comparison_df['_merge'] != 'both']
else:
diff_df = comparison_df[comparison_df['_merge'] == which]
diff_df.to_csv[csvfile]
return diff_df
if __name__ == '__main__':
df1 = pd.read_csv[sys.argv[1], sep=',']
df2 = pd.read_csv[sys.argv[2], sep=',']
df1.sort_values[sys.argv[3]]
df2.sort_values[sys.argv[3]]
#df1.drop[df1.columns[list[map[int, sys.argv[4].split[]]]], axis = 1, inplace = True]
#df2.drop[df2.columns[list[map[int, sys.argv[4].split[]]]], axis = 1, inplace = True]
print[dataframe_difference[df1, df2, sys.argv[5]]]
Để sử dụng chạy::
python3 script.py file1.csv file2.csv some_common_header_to_sort_each_file output_file.csv
Trong trường hợp bạn muốn bỏ bất kỳ cột nào từ sự so sánh, phần chưa về df.drop
và chạy
python3 script.py file1.csv file2.csv some_common_header_to_sort_each_file "x y z..." output_file.csv
Trong đó x,y,z
là các số cột để thả, chỉ mục bắt đầu từ 0.
Pandas là thư viện Python tốt nhất để tạo và điều khiển DataFrame. Bạn có thể đọc các tệp CSV, thao tác chúng và cũng xuất tệp CSV cuối cùng sau khi thao tác. Giả sử bạn có hai tệp CSV và muốn so sánh cả hai tệp. Bạn sẽ làm như thế nào? Trong toàn bộ hướng dẫn này, bạn sẽ tìm hiểu cách so sánh hai tệp CSV trong Python bằng cách sử dụng các phương pháp khác nhau.how to compare two CSV files in python using pandas using various methods.
Trong phần này, bạn sẽ biết tất cả các bước cần thiết để so sánh hai tệp CSV trong Python bằng Pandas. Chỉ cần làm theo tất cả các bước để hiểu rõ hơn.
Bước 1: Tạo tệp CSVS mẫu
Bước đầu tiên là tạo các tệp CSV mẫu cho phương thức. Đầu tiên tôi sẽ tạo hai khung dữ liệu mẫu và sau đó xuất mỗi DataFrame sang tệp CSV. Nó sẽ sử dụng để đọc tệp CSV và so sánh chúng.
Thực hiện các dòng mã bên dưới để tạo hai tệp CSVS mẫu.
import pandas as pd
data1 = {"country":["India","USA","UK","Germany"],"dial_code":[91,1,44,49]}
df1 = pd.DataFrame[data1]
df1.to_csv["data1.csv",index=None]
data2 = {"country":["India","USA","UK","Germany","Australia","China"],"dial_code":[91,1,44,49,61,86]}
df2 = pd.DataFrame[data2]
df2.to_csv["data2.csv",index=None]
print[df1,"\n"]
print[df2]
Đầu ra
Bước 2: Đọc & NBSP; Các tập tin CSV
Bước thứ hai là đọc các tệp CSV đã tạo. Bạn có thể đọc tệp CSV bằng phương thức pandas read_csv []. Chỉ cần chuyển tên tệp của tệp CSV. Nó sẽ chuyển đổi dữ liệu tệp CSV thành DataFrame để thao tác.
Chạy các dòng mã bên dưới để đọc các tệp CSV của bạn.
import pandas as pd
df1 = pd.read_csv["data1.csv"]
df2 = pd.read_csv["data2.csv"]
print[df1,"\n"]
print[df2,"\n"]
Đầu ra
country dial_code
0 India 91
1 USA 1
2 UK 44
3 Germany 49
country dial_code
0 India 91
1 USA 1
2 UK 44
3 Germany 49
4 Australia 61
5 China 86
Bước 3: Thực hiện phương pháp để so sánh hai tệp CSV trong Python bằng Pandas
Bây giờ các tệp CSV đã được đọc. Hãy để so sánh cả hai tệp. Bạn sẽ tìm hiểu các phương pháp khác nhau để so sánh với các tệp CSV trong Python.
Phương pháp 1: Sử dụng phương thức isin []
Gói Pandas có hàm isin [] cho phép bạn kiểm tra xem có bản ghi trong cả hai tệp CSV hay không. Nếu nó tìm thấy sau đó trả về true khác trả về sai. Sau đó, chúng ta có thể nhận được các giá trị bằng cách sử dụng DF [Hồi Boolean_result,]. df[“boolean_result”].
Thực hiện các dòng mã bên dưới để so sánh hai tệp CSV.
# method 1 isin[] metthod
import pandas as pd
df1 = pd.read_csv["data1.csv"]
df2 = pd.read_csv["data2.csv"]
c_result = df1[df1.apply[tuple,1].isin[df2.apply[tuple,1]]]
print[c_result]
Đầu ra
Ở đây tôi cũng đang sử dụng phương thức application [] để so sánh từng bản ghi hàng với mỗi tệp CSV.
Phương pháp 2: So sánh các tệp CSV bằng phương thức Merge []
Pandas cũng có một hàm hợp nhất [] hữu ích trong việc so sánh hai tệp CSV. Nó thực hiện tham gia bên trong, tham gia bên ngoài hoặc cả hai tham gia trên các cột. Bạn chỉ cần vượt qua các khung dữ liệu bạn muốn so sánh dưới dạng danh sách bên trong phương thức hợp nhất []. Hàm sẽ so sánh và trả về DataFrame.
Chạy các dòng mã bên dưới để so sánh các tệp CSV.
# method 2 merge[] method
import pandas as pd
df1 = pd.read_csv["data1.csv"]
df2 = pd.read_csv["data2.csv"]
c_result_m = pd.merge[df1,df2]
print[c_result_m]
Đầu ra
Ở đây tôi cũng đang sử dụng phương thức application [] để so sánh từng bản ghi hàng với mỗi tệp CSV.
Phương pháp 2: So sánh các tệp CSV bằng phương thức Merge []
Pandas cũng có một hàm hợp nhất [] hữu ích trong việc so sánh hai tệp CSV. Nó thực hiện tham gia bên trong, tham gia bên ngoài hoặc cả hai tham gia trên các cột. Bạn chỉ cần vượt qua các khung dữ liệu bạn muốn so sánh dưới dạng danh sách bên trong phương thức hợp nhất []. Hàm sẽ so sánh và trả về DataFrame.
Chạy các dòng mã bên dưới để so sánh các tệp CSV.
So sánh hai tệp CSV bằng phương thức Merge []
Sự kết luận
Pandas là gói Python tốt nhất để thao tác các bộ dữ liệu lớn. Nếu bạn có các tệp CSV thì bạn có thể so sánh chúng bằng các phương thức trên.
Tôi hy vọng bạn đã thích hướng dẫn này. Nếu bạn có bất kỳ đề xuất hoặc muốn bao gồm một số phương thức trong hướng dẫn này thì bạn có thể liên hệ với chúng tôi để biết thêm thông tin.