実務でデータを扱う場合、
1つのデータだけで完結することはほとんどありません。
例えば、
- 顧客情報のデータ
- 売上データ
のように、別々のファイルに分かれていることが多くあります。
こうしたデータを1つにまとめるときに使うのがmerge です。
この記事では、
- mergeとは何か
- 基本的な使い方
- 結合の種類
を順を追って解説していきます。
pandasの導入記事はこちら。
Python入門:pandasの基本をやさしく解説(データ操作の超入門) – Lean Data Office
mergeとは何か
merge は、2つのデータを共通の列を使って結合する機能です。
イメージとしては、
「同じキー(共通項目)を持つ行同士をくっつける」
という処理です。
Excelでいう「VLOOKUP」に近い操作になります。
サンプルデータ
まずは2つのデータを用意します。
Python
import pandas as pd
df_customers = pd.DataFrame({
“customer_id”: [1, 2, 3],
“name”: [“A”, “B”, “C”]
})
df_sales = pd.DataFrame({
“customer_id”: [1, 2, 4],
“sales”: [100, 200, 300]
})
Show more lines
ここでは、
- 顧客情報(名前)
- 売上情報
が別々のデータになっています。
mergeの基本的な使い方
2つのデータを結合するには、次のように書きます。
Python
df_merged = pd.merge(df_customers, df_sales, on=”customer_id”)
print(df_merged)
Show more lines
何が起こっているのか
このコードは次の意味になります。
Python
pd.merge(データ1, データ2, on=”customer_id”)
Show more lines
つまり、
customer_idが同じもの同士を探して- 横にくっつける
という処理です。
結果のイメージ
customer_id | name | sales
------------|------|------
1 | A | 100
2 | B | 200
ここで重要なのは、
👉 customer_id=3 や 4 は消えていること
です。
なぜ消えるのか
デフォルトでは、merge は
👉 両方に存在するデータだけ残す(内部結合)
という動きをします。
結合方法の種類(ここが重要)
merge にはいくつか種類があります。
どのデータを残すかを指定できます。
① inner結合(デフォルト)
Python
pd.merge(df1, df2, on=”id”, how=”inner”)
Show more lines
👉 両方に存在するものだけ残す
② left結合
Python
pd.merge(df1, df2, on=”id”, how=”left”)
Show more lines
👉 左のデータをすべて残す
例:
customer_id | name | sales
------------|------|------
1 | A | 100
2 | B | 200
3 | C | NaN
salesが無い場合は NaN になります。
③ right結合
Python
pd.merge(df1, df2, on=”id”, how=”right”)
Show more lines
👉 右のデータをすべて残す
④ outer結合
Python
pd.merge(df1, df2, on=”id”, how=”outer”)
Show more lines
👉 両方すべて残す
customer_id | name | sales
------------|------|------
1 | A | 100
2 | B | 200
3 | C | NaN
4 | NaN | 300
なぜmergeが重要なのか
実務では、データは分割されていることが普通です。
例えば:
- 顧客マスタ
- 商品マスタ
- 売上データ
これらを結合して初めて、
「誰が何を買ったか」
が分かるようになります。
その中心になるのが merge です。
よくある使い方
例えば、
Python
df = pd.merge(df_customers, df_sales, on=”customer_id”, how=”left”)
Show more lines
このように「left結合」を使うケースが多いです。
理由は、
👉 「元データを全部残したい」からです。
まとめ
この記事では、pandasの merge を解説しました。
- mergeはデータ同士を結合する機能
- 共通の列(キー)でつなぐ
howによって残るデータが変わる
最初のうちは、
- inner:共通だけ
- left:左優先
この2つを押さえるだけでも十分です。
この merge を使えるようになると、
一気に「実務で使えるレベル」に近づきます。
まずはサンプルを動かしながら、
「どのデータが残るのか」を確認してみてください 👍