本記事では、プログラミング言語のPythonにおけるライブラリ、Pandasのデータフレーム処理の一つ、データフレーム同士の結合について紹介します。
本記事のターゲットは、ピンポイントでデータフレーム同士の結合方法を忘れた方や、Pythonの勉強をされている方向けに書かせていただきます。
該当コード
まずは、データの読み込みから。
import pandas as pd
df_left = pd.read_csv('data_left.csv')
df_right = pd.read_csv('data_right.csv')
df_left / df_rightはSQLで言う、左結合右結合などに対応したデータフレームが入ります。つまり次のコードで出てくる引数の位置などは左結合のテーブルと認識されるなどを意味します。
まずはシンプルな結合から。
df_merge = pd.merge(df_left, df_right)
データフレームのメソッドを使用する場合
df_merge = df_left.merge(df_right)
結合キーを明示的に示す
df_merge = pd.merge(df_left, df_right, on="column_key")
df_merge = pd.merge(df_left, df_right, left_on="left_key", right_on="right_key")
結合方法を明示的に示す
# inner join
df_merge = pd.merge(df_left, df_right, on="column_key", how="inner")
# left outer join
df_merge = pd.merge(df_left, df_right, on="column_key", how="left")
# right outer join
df_merge = pd.merge(df_left, df_right, on="column_key", how="right")
解説
シンプルな結合は、可読性が落ちるので、なるべく避けたほうが良い。なぜならそのコードを見た人が、見ただけでどの列とどの列が結合されているのか非常に分かりにくいからだ。
自分がチャチャッと使うだけにしても、後日そのコードを見ることがあるなら必ず避けるべきコード。初心者の人は、早い段階から矯正した方が後々楽。癖がついてしまっている人は、矯正をお勧めします!
次にメソッドを使用するパターン。
個人的には、ちょっと気持ち悪いのあまりこのパターンは使わない。理由は非対称性を感じるから。全然使っても良いと思うが、詳しくは自分で調べてもらえると嬉しい。
次に結合キーを明示的に指定するパターン。
これくらいは使えると良いですね。必ずしも結合したいキーが同じ列名とは限らないので、ここら辺をうまく使いこなしていきましょう
最後に結合方法。
それぞれの結合方法のイメージがわかない方は、SQLのJOINなどで調べると有益な情報が無限にありますので、参考にしてください。
デフォルトはleft joinらしいですが、ここも明示的な方が絶対良いでしょう。
公式リファレンスはこちら
ネットで探してもやりたいことがなんとなくうまく理解できなかったり、しっくりこなかった時は、公式ドキュメントを参考にすると良いと思います。
意外な発見があったりなど、副次的な効果の観点からおすすめです。
初心者の方は積極的に読むと良いと思います!
コメント