Pythonのデータ処理ライブラリであるpandasは、大規模なデータセットを扱う際に非常に便利です。特に、異なるデータフレームを結合する操作は、データ分析の際によく行われます。この記事では、pandasを使って複数の列を基に2つのデータフレームをマージする方法について詳しく解説します。
pandasのマージ機能とは?
pandasのマージ機能は、SQLのJOIN操作に似た方法で、異なるデータフレームを結合することができます。これは、データ分析やデータ整形の際に非常に役立ちます。マージには、主に以下のような方法があります:
- inner join
- outer join
- left join
- right join
これらの方法を使うことで、異なるデータフレームを効率的に結合し、必要なデータを抽出することができます。
データフレームの準備
まずは、サンプルデータフレームを作成して、マージの基礎を学びましょう。
import pandas as pd # データフレーム1 df1 = pd.DataFrame({ 'ID': [1, 2, 3, 4], 'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40] }) # データフレーム2 df2 = pd.DataFrame({ 'ID': [3, 4, 5, 6], 'Name': ['Charlie', 'David', 'Eve', 'Frank'], 'Salary': [70000, 80000, 90000, 100000] })
ここでは、2つのデータフレームdf1とdf2を用意しました。どちらも共通の列「ID」と「Name」を持っています。これらを使ってマージを行います。
複数の列を使ったマージ
複数の列を基にデータフレームをマージするには、pandasのmerge
関数を使用します。この関数のon
引数にリスト形式で列名を指定することで、複数の列を基にしたマージが可能です。
# IDとNameの両方を基にinner joinを実行 merged_df = pd.merge(df1, df2, on=['ID', 'Name'], how='inner') print(merged_df)
このコードは、両方のデータフレームに共通する「ID」と「Name」の組み合わせを基にinner joinを行います。出力は次のようになります:
ID Name Age Salary 0 3 Charlie 35 70000 1 4 David 40 80000
この結果から、IDとNameが両方一致する行のみがマージされていることがわかります。
他のマージ方法
次に、他のマージ方法についても見ていきましょう。
左外部結合(left join)
左外部結合は、左側のデータフレームのすべての行を保持し、右側のデータフレームの一致する行を追加します。
# 左外部結合 left_joined_df = pd.merge(df1, df2, on=['ID', 'Name'], how='left') print(left_joined_df)
出力:
ID Name Age Salary 0 1 Alice 25 NaN 1 2 Bob 30 NaN 2 3 Charlie 35 70000.0 3 4 David 40 80000.0
この出力では、左側のデータフレームdf1のすべての行が保持され、df2に一致する行があればそのデータが追加されています。
右外部結合(right join)
右外部結合は、右側のデータフレームのすべての行を保持し、左側のデータフレームの一致する行を追加します。
# 右外部結合 right_joined_df = pd.merge(df1, df2, on=['ID', 'Name'], how='right') print(right_joined_df)
出力:
ID Name Age Salary 0 3 Charlie 35.0 70000 1 4 David 40.0 80000 2 5 Eve NaN 90000 3 6 Frank NaN 100000
この出力では、右側のデータフレームdf2のすべての行が保持され、df1に一致する行があればそのデータが追加されています。
完全外部結合(outer join)
完全外部結合は、両方のデータフレームのすべての行を保持し、どちらかに一致する行を追加します。
# 完全外部結合 outer_joined_df = pd.merge(df1, df2, on=['ID', 'Name'], how='outer') print(outer_joined_df)
出力:
ID Name Age Salary 0 1 Alice 25.0 NaN 1 2 Bob 30.0 NaN 2 3 Charlie 35.0 70000.0 3 4 David 40.0 80000.0 4 5 Eve NaN 90000.0 5 6 Frank NaN 100000.0
この出力では、両方のデータフレームのすべての行が保持され、どちらかに一致する行があればそのデータが追加されています。
まとめ
pandasのマージ機能を使用することで、複数の列を基に異なるデータフレームを結合することができます。inner join、left join、right join、outer joinの各方法を使い分けることで、データ分析のニーズに応じたデータセットを効率的に作成できます。これらの操作を駆使して、より高度なデータ分析を行ってください。
Python 3におけるpandasライブラリを使用して、2つのデータフレームをマージ(結合)する方法を説明します。複数の列を使用してデータフレームをマージする場合、merge()関数を使用します。この関数は、2つのデータフレームを指定された列をキーとして結合し、新しいデータフレームを作成します。
例えば、df1とdf2という2つのデータフレームがあり、それぞれ”key1″と”key2″という列をキーとしてマージしたい場合、以下のようにコードを記述します:
merged_df = pd.merge(df1, df2, on=[‘key1’, ‘key2’])
このコードでは、df1とdf2を”key1″と”key2″の値が一致する行で結合し、新しいデータフレームmerged_dfを作成します。複数の列を指定することで、より柔軟な結合が可能となります。
以上が、Python 3におけるpandasを使用して複数の列を使って2つのデータフレームをマージする方法の概要です。