Pythonデータ分析に使えるpandasテーブル結合を紹介します。また最後に、データ分析の流れを経験できる初心者にオススメ学習コンテンツを紹介しますので、ご参考ください。
必要なライブラリ
import pandas as pd
サンプルデータ
df_math = pd.DataFrame({
'受験者': ['Aさん', 'Bさん', 'Cさん', 'Dさん', 'Eさん'],
'数学得点': ['50', '60', '70', '80', '90']
})
df_eng = pd.DataFrame({
'受験者': ['Aさん', 'Bさん', 'Cさん', 'Xさん', 'Yさん'],
'英語得点': ['99', '88', '77', '66', '55']
})
左外部結合 LEFT OUTER JOIN
pd.merge(df_math, df_eng, on='受験者', how='left')
右外部結合 RIGHT OUTER JOIN
pd.merge(df_math, df_eng, on='受験者', how='right')
完全外部結合 FULL OUTER JOIN
pd.merge(df_math, df_eng, on='受験者', how='outer')
内部結合 INNER JOIN
pd.merge(df_math, df_eng, on='受験者', how='inner')
# howを指定しない場合、デフォルトでinnerが指定される。
# pd.merge(df_math, df_eng, on='受験者')も同じ結果となる
結合方法の指定無し
pd.merge(df_math, df_eng, on='受験者')
# howを指定しない場合、デフォルトでinnerが指定される。
結合キーの指定無し
pd.merge(df_math, df_eng)
# onを指定しない場合、自動で同じ列名のキーが指定される。
カラム名称が異なる結合キー指定
サンプルデータ
df_math = pd.DataFrame({
'受験者': ['Aさん', 'Bさん', 'Cさん', 'Dさん', 'Eさん'],
'数学得点': ['50', '60', '70', '80', '90']
})
df_eng_v2 = pd.DataFrame({
'氏名': ['Aさん', 'Bさん', 'Cさん', 'Xさん', 'Yさん'],
'英語得点': ['99', '88', '77', '66', '55']
})
pd.merge(df_math, df_eng_v2, left_on='受験者', right_on='氏名')
2つの結合キーの使用
サンプルデータ
df_math_birth = pd.DataFrame({
'受験者': ['Aさん', 'Bさん', 'Cさん', 'Cさん', 'Cさん'],
'出身': ['大阪', '沖縄', '北海道', '広島', '東京'],
'数学得点': ['50', '60', '70', '80', '90']
})
df_eng_birth = pd.DataFrame({
'受験者': ['Aさん', 'Bさん', 'Cさん', 'Xさん', 'Yさん'],
'出身': ['大阪', '沖縄', '広島', '奈良', '熊本'],
'英語得点': ['99', '88', '77', '66', '55']
})
pd.merge(df_math_birth, df_eng_birth, on=['受験者', '出身'])
縦に結合 UNION
pd.concat([df_math, df_math, df_math], ignore_index=True)
# ignore_indexはインデックスの降り直し
df_math.append(df_math, ignore_index=True)
# appendでも縦に結合できる
Pythonデータ分析学習コンテンツ(私が制作したものの紹介)
以下、私が制作したものですが、初心者向けのPythonデータ分析学習コンテンツです。データの取り込み、前処理から可視化の流れを学習できる教材です。考察イメージまで記載されているのでオススメです。一部無料公開されているので、ご興味あればお試しください。