こんにちは,shun(@datasciencemore)です!!
今回はjoinについて学習していきます.
joinは,キー結合をするメソッドです.
キー結合とは,2つのデータフレームをキーをもとに1つに結合することです.
キー結合には
- inner_join
- left_join
- right_join
- outer_join
の4種類の結合方法があります.
今回は,こちらの2つのデータフレームをキー結合するとどうなるかを確認しようと思います.
0.準備
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# パッケージ読み込み import numpy as np import polars as pl import seaborn as sns # データフレームの表示行数を指定 pl.Config.set_tbl_rows(6) # 名前のデータフレーム定義 df_name = pl.DataFrame( { "key":[1, 1, 3, 2, 5], "name":["asuka", "yuuki", "siho", "rina", "manaka"] } ) # 所属のデータフレーム定義 df_group = pl.DataFrame( { "key":[1, 2, 3, 4], "group":["nogi", "sakura", "hinata", "yosimoto"] } ) |
1.inner_join
まずキー結合の中で一番よく使われるinner_joinから説明していきます.
日本語だと内部結合っていいます.
inner_joinは,2つのデータフレームに共通するキーに対して,結合することをいいます.
この例の場合,
df_nameのキーが「1,2,3,5」,df_groupのキーが「1,2,3,4」なので,
共通するキーは,「1,2,3」になりますね.
このキーに対して2つのデータフレームを結合します.
結合するときにどのような処理が行われているかというと
それぞれのデータフレームからキー毎に違う色の線を伸ばしてあげます.
(キーが1 ⇒ ピンク,キーが2 ⇒ 緑,キーが3 ⇒ 青,キーが4⇒赤,キーが5⇒黄)
これらの伸びた線を見て,同じ色が交差する交点が,出力されるデータフレームの各行に対応します.
図の左側を見ると,ピンクが2点,緑が1点,青が1点,交差していますね.
これらの交点の情報を右側のデータフレームのように出力します.
右側のデータフレームの各行に対応していることをきちんと確認してくださいね.
1 2 3 4 5 |
# df_nameとdf_groupをinner_join df_name.join(df_group, on="key", how="inner") # df_nameとdf_groupをinner_join(inner_joinはhowを省略可) df_name.join(df_group, on="key") |
2.left_join
続きましてleft_joinです.
日本語だと左結合っていいます.
left_joinは,左側のデータフレームのすべてのキーに対して,結合することをいいます.
今回の例の場合,
左側のデータフレームは,df_nameでキーが「1,2,3,5」,
右側のデータフレームは,df_groupでキーが「1,2,3,4」なので,
左側のデータフレームのキーは,「1,2,3,5」になりますね.
ここで1点注意のなのですが,右側のdf_groupにキー5がないですよね?
このようなときは,NAの行を挿入して考えてください.
そうすれば線を引くことができるので,あとは先ほどと同様,交差する点が出力されると考えられます.
1 2 |
# df_nameとdf_groupをleft_join df_name.join(df_group, on="key", how="left") |
3.right_join
続きましてright_joinです.
日本語だと右結合っていいます.
right_joinは,右側のデータフレームのすべてのキーに対して,結合します.
さっきやったleft_joinの反対だから,わかりやすいですね.
ただ,左と右が違うだけです.
今回の例の場合,
右側のデータフレームは,df_groupでキーが「1,2,3,4」なので,
「1,2,3,4」をキーとしてキー結合します.
今回は,左側のデータフレームにキー4がないので,キー4に対してNAの行を作成してあげましょう.
polarsでは、right_joinが存在しません。
polarsでright_joinをする場合は、left_joinを使用するときにデータフレームを入れ替えてあげましょう。
1 2 3 |
# df_nameとdf_groupをright_join # polarsはright_joinできないので、dfを入れ替える。 df_group.join(df_name, on="key", how="left") |
4.outer_join
最後はouter_joinです.
日本語だと外部結合っていいます.
今までのことが理解できていればそんなに難しくありません.
outer_joinは,2つのデータフレームのすべてのキーに対して,結合します.
今回の例の場合,
df_nameのキーが「1,2,3,5」,df_groupのキーが「1,2,3,4」なので,
full_joinに使用されるのキーは,「1,2,3,4,5」になりますね.
これも今までと同様に,キーがない場合については,NAの行を挿入してあげます.
df_nameにはキー4が,df_groupにはキー5がないから,それぞれについてNAの行を挿入して考えてくださいね.
1 2 |
# df_nameとdf_groupをouter_join df_name.join(df_group, on="key", how="outer") |
まとめ
今回は,join:キー結合について学習しました.
キー結合とは,2つのデータフレームをキーをもとに1つに結合することです.
キー結合には次の4種類があります.
- inner_join
- left_join
- right_join
- outer_join
この中で一番使用頻度が高いのはinner_joinなので,まずはinner_joinを使いこなせるようになりましょう!
それでは,お疲れさまでした!!