ホームページ  >  記事  >  バックエンド開発  >  Python で Pandas を使用して 2 つの CSV ファイルを特定の列ごとにマージするにはどうすればよいですか?

Python で Pandas を使用して 2 つの CSV ファイルを特定の列ごとにマージするにはどうすればよいですか?

PHPz
PHPz転載
2023-09-08 14:01:021489ブラウズ

Python で Pandas を使用して 2 つの CSV ファイルを特定の列ごとにマージするにはどうすればよいですか?

CSV (カンマ区切り値) ファイルは、単純な形式でデータを保存および交換するために広く使用されています。多くのデータ処理タスクでは、特定の列に基づいて 2 つ以上の CSV ファイルを結合する必要があります。幸いなことに、これは Python の Pandas ライブラリを使用して簡単に実現できます。

この記事では、Python の Pandas を使用して、2 つの CSV ファイルを特定の列ごとにマージする方法を学びます。

Pandas ライブラリとは何ですか?

Pandas は、Python メッセージ制御および検査用のオープンソース ライブラリです。構造化データ (表形式、時系列、多次元データなど) と高性能データ構造を操作するためのツールを提供します。 Pandas は、金融、データ サイエンス、機械学習、およびデータ操作が必要なその他の分野で広く使用されています。

Python で特定の列ごとに 2 つの CSV ファイルをマージする手順

Pandas ライブラリを使用して Python の特定の列ごとに 2 つの CSV ファイルをマージする完全な手順は次のとおりです -

ステップ 1: Pandas ライブラリをインポートする

2 つの CSV ファイルをマージする最初のステップは、pandas ライブラリをインポートすることです。 Pandas は、強力な Python データ分析ライブラリです。これは、大規模なデータ セットの効率的な保存と操作のためのデータ構造を提供します。 Pandas を使用するには、まず Pandas を Python プログラムにインポートする必要があります。これは、次のコマンドを使用して実行できます -

リーリー

ステップ 2: CSV ファイルを読み取る

次のステップは、マージする 2 つの CSV ファイルを読み取ることです。 Pandas の read_csv() 関数を使用して、CSV ファイルを Pandas DataFrame に読み取ることができます。 CSV ファイルのファイル パスまたは URL を read_csv() 関数の引数として指定する必要があります。例えば ​​-### リーリー

ステップ 3: CSV ファイルを結合する

CSV ファイルを Pandas DataFrame に読み込んだ後、merge() 関数を使用して特定の列に基づいて CSV ファイルをマージします。 merge() 関数は 2 つの DataFrame を入力として受け取り、共通の列に基づいてそれらをマージします。これは基本的な構文です -

リーリー

この例では、merged_df は、df1 と df2 のマージされたデータを含む新しいデータフレームです。 on パラメーターは、2 つの DataFrame をマージする共通の列の名前を指定します。

たとえば、sales.csv と Customers.csv という 2 つの CSV ファイルがあるとします。どちらのファイルにも CustomerID という名前の列が含まれています。 CustomerID 列に基づいて 2 つのファイルをマージしたいと考えています。できるよ -### リーリー

ステップ 4: 欠損値を処理する (存在する場合)

特定の列に基づいて 2 つの CSV ファイルを結合すると、結合されたデータフレームに欠落した値が存在する可能性があります。これらの欠落値は、いずれかの CSV ファイルの対応する列に一致する値がない場合に発生する可能性があります。

欠損値を処理するには、Pandas の fillna() 関数を使用して、欠損値をデフォルト値または計算値に置き換えます。たとえば、次のコードを使用して、欠損値を文字列「Unknown」 -

に置き換えることができます。 リーリー

この例では、fillna() 関数を使用して、マージされた DataFrame 内の欠損値を文字列「Unknown」に置き換えます。また、inplace パラメーターを True に指定しました。これは、新しい DataFrame を作成するのではなく、元の DataFrame が変更されることを意味します。

例 1: Merge() 関数の使用

この例では、Pandas の merge() 関数を使用して、特定の列に基づいて 2 つの CSV ファイルをマージします。

リーリー

employees.csv とDepartments.csv という 2 つの CSV ファイルがあるとします。 Employees.csv ファイルには次のデータが含まれています -

###従業員ID### ###名前### 部門ID ###給料### 150000260000155000365000255000Departments.csv ファイルには次のデータが含まれています -部門ID ###部署名###
1 ジョン
2 サラ
3 デビッド
4 アレックス
5 エミリー

1 ###それ### 2 ###セール### ###マーケティング### ###人事###

示例

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 文件包含以下数据 -

3
4
订单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 文件。

以上がPython で Pandas を使用して 2 つの CSV ファイルを特定の列ごとにマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。