経済統計の使い方
統計初心者向けに、データや分析手法の解説をしています。「まとめページ」をご覧くだされば、全体的な内容がわかると思います。
python

【python】データフレームの結合(pandas)

データフレームの統合

データフレームを統合かんすするには、行方向への統合と列方向への統合があります。列方向への統合にはmerge関数を使います。

concat関数を使えば、行方向、列方向どちらにも結合できますが、単純に結合するだけで、merge関数のようなキーによる統合などはできません。

merge関数

pd.merge(df1,df2,on=’列名’,how=’オプション’)

行方向への統合はマージで行います。2つのデータフレームのある列をキーにして、同じ値のものについて統合します。

import pandas as pd

df1=pd.DataFrame({
'都市':['東京','名古屋','大阪','福岡'],
'人口':[1,2,3,4],
})

df2=pd.DataFrame({
'都市':['札幌','東京','名古屋','大阪'],
'面積':[4,3,2,1],
})

print(df1)
print(df2)
出力
   都市  人口
0   東京   1
1  名古屋   2
2   大阪   3
3   福岡   4

    都市  面積
0   札幌   4
1   東京   3
2  名古屋   2
3   大阪   1

重なっているサンプルだけ(how=’inner’)

merge(df1,df2,on=’列名’,how=’inner’)

統合のキーとなる列をon=で指定します。重なっているサンプルだけを統合する場合は、how=’inner’を使います。

df3=pd.merge(df1,df2,on='都市',how='inner')
print(df3)
出力
    都市  人口  面積
0   東京   1   3
1  名古屋   2   2
2   大阪   3   1

サンプルすべて(how=’outer’)

merge(df1,df2,on=’列名’,how=’outer’)

統合のキーとなる列をon=で指定します。サンプルすべてを統合する場合は、how=’outer’を使います。結果は名古屋が最初になっています。都市の順序は機種や環境に依存するようです。

df3=pd.merge(df1,df2,on='都市',how='outer')
print(df3)
出力
     都市   人口   面積
0  名古屋  2.0  2.0
1   大阪  3.0  1.0
2   札幌  NaN  4.0
3   東京  1.0  3.0
4   福岡  4.0  NaN

インデックスによるmerge

pd.merge(df1,df2,left_index=True,right_index=True)

上の例は、ある列をkeyにして、それに基づいてまとめるものですが、データフレームには行ごとにインデックスがついているので、それをもとにマージするということが考えられます。left_index=True, right_index=Trueを付け加えます。

カラム名の同じものがあると、_x、_yが後ろに付いて区別されます。

df3=pd.merge(df1,df2,left_index=True,right_index=True)

print(df3)

出力

  都市_x  人口 都市_y  面積
0   東京   1   札幌   4
1  名古屋   2   東京   3
2   大阪   3  名古屋   2
3   福岡   4   大阪   1

concat関数

pd.concat([df1,df2],axis=0)

concat関数は、表をそのままの形で、結合します。行を重ねる形で結合する方法(axis=0,デフォルト)と、列を増やす形で結合する方法(axis=1)があります。

上記と同じ例を使います。

df1
   都市  人口
0   東京   1
1  名古屋   2
2   大阪   3
3   福岡   4

df2
    都市  面積
0   札幌   4
1   東京   3
2  名古屋   2
3   大阪   1

行方向の場合

df3=pd.concat([df1,df2])

print(df3)

出力

    都市   人口   面積
0   東京  1.0  NaN
1  名古屋  2.0  NaN
2   大阪  3.0  NaN
3   福岡  4.0  NaN
0   札幌  NaN  4.0
1   東京  NaN  3.0
2  名古屋  NaN  2.0
3   大阪  NaN  1.0

列方向の場合

df3=pd.concat([df1,df2],axis=1)

print(df3)

出力

   都市  人口   都市  面積
0   東京   1   札幌   4
1  名古屋   2   東京   3
2   大阪   3  名古屋   2
3   福岡   4   大阪   1

経済統計の使い方では、統計データの入手法から分析法まで解説しています。

【python】pythonのまとめ 経済統計の使い方では、統計データの入手法から分析法まで解説しています。 https://officekaisuiyoku.com...

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA