Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menggabungkan dua fail CSV dengan lajur tertentu menggunakan Pandas dalam Python?
Fail
CSV (Comma Separated Values) digunakan secara meluas untuk menyimpan dan menukar data dalam format yang mudah. Dalam banyak tugas pemprosesan data, terdapat keperluan untuk menggabungkan dua atau lebih fail CSV berdasarkan lajur tertentu. Nasib baik, ini boleh dicapai dengan mudah menggunakan perpustakaan Pandas dalam Python.
Dalam artikel ini, kita akan belajar cara menggabungkan dua fail CSV mengikut lajur tertentu menggunakan Panda dalam Python.
Pandas ialah perpustakaan sumber terbuka untuk kawalan dan pemeriksaan mesej Python. Ia menyediakan alatan untuk bekerja dengan data berstruktur (seperti jadual, siri masa dan data berbilang dimensi) dan struktur data berprestasi tinggi. Panda digunakan secara meluas dalam kewangan, sains data, pembelajaran mesin dan bidang lain yang memerlukan manipulasi data.
Berikut ialah langkah lengkap untuk menggabungkan dua fail CSV mengikut lajur tertentu dalam Python menggunakan perpustakaan Pandas -
Langkah pertama untuk menggabungkan dua fail CSV ialah mengimport pustaka panda. Pandas ialah perpustakaan analisis data Python yang berkuasa. Ia menyediakan struktur data untuk penyimpanan yang cekap dan manipulasi set data yang besar. Untuk menggunakan Pandas, kita perlu mengimportnya terlebih dahulu ke dalam program Python. Kita boleh melakukan ini menggunakan arahan berikut -
import pandas as pd
Langkah seterusnya ialah membaca dua fail CSV yang ingin kami gabungkan. Kita boleh membaca fail CSV ke dalam Pandas DataFrame menggunakan fungsi read_csv() Pandas. Kami perlu menyediakan laluan fail atau URL fail CSV sebagai hujah kepada fungsi read_csv(). Contohnya -
df1 = pd.read_csv('file1.csv') df2 = pd.read_csv('file2.csv')
Selepas membaca fail CSV ke dalam Pandas DataFrames, kini tiba masanya untuk menggabungkannya berdasarkan lajur tertentu menggunakan fungsi merge(). Fungsi merge() mengambil dua DataFrames sebagai input dan menggabungkannya berdasarkan lajur biasa. Ini ialah sintaks asas -
merged_df = pd.merge(df1, df2, on='column_name')
Dalam contoh ini, merged_df ialah DataFrame baharu yang mengandungi data gabungan df1 dan df2. Parameter on menentukan nama lajur biasa yang menggabungkan dua DataFrames.
Sebagai contoh, katakan kita mempunyai dua fail CSV sales.csv dan customers.csv. Kedua-dua fail mengandungi lajur bernama CustomerID. Kami ingin menggabungkan dua fail berdasarkan lajur CustomerID. Kita boleh lakukan ini -
sales = pd.read_csv('sales.csv') customers = pd.read_csv('customers.csv') merged_df = pd.merge(sales, customers, on='CustomerID')
Apabila menggabungkan dua fail CSV berdasarkan lajur tertentu, mungkin terdapat nilai yang hilang dalam DataFrame yang digabungkan. Nilai yang hilang ini mungkin berlaku jika tiada nilai yang sepadan dalam lajur yang sepadan pada salah satu fail CSV.
Untuk mengendalikan nilai yang hilang, kami boleh menggunakan fungsi fillna() Pandas untuk menggantikannya dengan nilai lalai atau terkira. Sebagai contoh, kita boleh menggunakan kod berikut untuk menggantikan nilai yang hilang dengan rentetan "Tidak diketahui" -
merged_df.fillna('Unknown', inplace=True)
Dalam contoh ini, kami menggunakan fungsi fillna() untuk menggantikan nilai yang hilang dalam DataFrame yang digabungkan dengan rentetan "Tidak Diketahui". Kami juga menentukan parameter inplace sebagai True, yang bermaksud bahawa DataFrame asal akan diubah suai dan bukannya membuat DataFrame baharu.
Dalam contoh ini, kami akan menggunakan fungsi merge() Pandas untuk menggabungkan dua fail CSV berdasarkan lajur tertentu.
CSV Files
Andaikan kita mempunyai dua fail CSV: employees.csv dan Departments.csv. Fail Employees.csv mengandungi data berikut -
ID Pekerja | Nama | ID Jabatan | Gaji |
---|---|---|---|
1 | John | 1 | 50000 |
2 | Sarah | 2 | 60000 |
3 | David | 1 | 55000 |
4 | Alex | 3 | 65000 |
5 | Emily | 2 | 55000 |
departments.csv mengandungi data berikut -
ID Jabatan | Nama jabatan |
---|---|
1 | IT |
2 | JUALAN |
3 | Pemasaran |
4 | Sumber Manusia |
import pandas as pd # Load CSV Files employees = pd.read_csv('employees.csv') departments = pd.read_csv('departments.csv') # Merge dataframes based on DepartmentID column merged_df = pd.merge(employees, departments, on='DepartmentID') # Print merged dataframe print(merged_df.head()) # Save merged dataframe to a new CSV file merged_df.to_csv('merged_employees_departments.csv', index=False)
EmployeeID Name DepartmentID Salary DepartmentName 0 1 John 1 50000 IT 1 3 David 1 55000 IT 2 2 Sarah 2 60000 Sales 3 5 Emily 2 55000 Sales 4 4 Alex 3 65000 Marketing
在本例中,我们将使用 Pandas 的 join() 方法根据特定列合并两个 CSV 文件。
CSV Files
假设我们有两个 CSV 文件:orders.csv 和customers.csv。 order.csv 文件包含以下数据 -
订单ID | 客户ID | 订单日期 | 总金额 |
---|---|---|---|
1 | 1 | 2022-05-01 | 100.0 |
2 | 3 | 2022-05-02 | 150.0 |
3 | 2 | 2022-05-03 | 200.0 |
4 | 1 | 2022-05-04 | 75.0 |
5 | 4 | 2022-05-05 | 120.0 |
customers.csv 文件包含以下数据 -
客户ID | 客户名称 | 电子邮件 |
---|---|---|
1 | 约翰 | john@example.com |
2 | 莎拉 | sarah@example.com |
3 | 大卫 | david@example.com |
4 | 艾米丽 | emily@example.com |
import pandas as pd # Load CSV files orders = pd.read_csv('orders.csv') customers = pd.read_csv('customers.csv') # Join dataframes based on CustomerID column joined_df = orders.set_index('CustomerID').join(customers.set_index('CustomerID')) # Print joined dataframe print(joined_df.head()) # Save joined dataframe to a new CSV file joined_df.to_csv('joined_orders_customers.csv')
OrderID OrderDate TotalAmount CustomerName Email CustomerID 1 1 2022-05-01 100.0 John john@example.com 1 4 2022-05-04 75.0 John john@example.com 2 3 2022-05-03 200.0 Sarah sarah@example.com 3 2 2022-05-02 150.0 David david@example.com 4 5 2022-05-05 120.0 Emily emily@example.com
使用 Pandas 的 merge() 函数,我们根据本例中的“id”列合并了两个 CSV 文件。作为合并两个 CSV 文件的结果的 DataFrame 除了“name_x”、“email_x”、“name_y”和“email_y”列之外还包括“id”列。
请注意,“name_y”和“email_y”段的组合 DataFrame 中缺少值,这些值与第二个 CSV 记录中没有匹配质量的行相关。如上一步所示,Pandas fillna() 和 dropna() 函数可用于处理这些缺失值。
基于特定列合并两个 CSV 文件是一项常见的数据处理任务,可以使用 Python 中的 Pandas 库轻松实现。在本文中,我们学习了如何使用 Pandas 的 merge() 函数合并两个 CSV 文件。我们还讨论了如何处理缺失值以及如何将合并的 DataFrame 保存到新的 CSV 文件。
Atas ialah kandungan terperinci Bagaimana untuk menggabungkan dua fail CSV dengan lajur tertentu menggunakan Pandas dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!