Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menggabungkan dua fail CSV dengan lajur tertentu menggunakan Pandas dalam Python?

Bagaimana untuk menggabungkan dua fail CSV dengan lajur tertentu menggunakan Pandas dalam Python?

PHPz
PHPzke hadapan
2023-09-08 14:01:021545semak imbas

Fail

Bagaimana untuk menggabungkan dua fail CSV dengan lajur tertentu menggunakan Pandas dalam Python?

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.

Apakah perpustakaan Pandas?

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.

Langkah untuk menggabungkan dua fail CSV mengikut lajur tertentu dalam Python

Berikut ialah langkah lengkap untuk menggabungkan dua fail CSV mengikut lajur tertentu dalam Python menggunakan perpustakaan Pandas -

Langkah 1: Import 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 2: Baca fail CSV

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')

Langkah 3: Gabungkan fail 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')

Langkah 4: Kendalikan nilai yang hilang (jika ada)

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.

Contoh 1: Menggunakan fungsi Merge()

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
Fail

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

示例 2:使用 Join() 函数

在本例中,我们将使用 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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam