【データ処理】Pandasデータ結合コマンドの紹介

データ処理
Yamu
Yamu

PandasはPythonの
データ解析ライブラリであり
データの結合や操作に
非常に便利です
特に、異なるデータソースから
データを結合する
必要がある場合には、
Pandasのデータフレームを
使用することが
一般的です。この記事では
Pandasを使用してデータフレームを
結合する方法を解説します。

[PR]※本サイトには、プロモーションが含まれています

今回紹介する結合

今回紹介する結合を纏めました。

結合種コードコードの説明
内部結合pd.merge(df1,df2, on =’共通列’)データフレーム df1df2 の間で共通キーを使用して、共通するデータのみ結合、結果をデータフレーム df3 に格納しています。
全結合pd.merge(df1,df2, how =’outer’)データフレーム df1df2 の両方に存在するカラムを利用して結合しています。結合する値が存在しない場合、そのセルには NaN(欠損値)が入ります。
左外部結合pd.merge(df1,df2, how =’left’)データフレーム df1 からすべての行を取り出し、共通するキーを基準にしてデータフレーム df2 から対応するデータを結合します。その結果をデータフレーム df3 に格納します。つまり、データフレーム df1 の各行に対して、共通するキーが df2 に存在すれば、それに対応する df2 のデータが結合されます。最終的なデータフレーム df3 には、結合されたデータが格納されます。
右外部結合pd.merge(df1,df2, how =’right’)データフレーム df1df2 の間で、共通するキーを基準にして結合を行い、結果をデータフレーム df3 に格納します。この結合操作では、データフレーム df2 のすべての行が取り出され、それぞれの行に対応するキーがデータフレーム df1 に存在すれば、対応するデータが結合されます。最終的なデータフレーム df3 には、この結合されたデータが格納されます。
縦結合pd.concat([df1,df2])concatメソッドを使うと縦にデータを積み上げられます

内部結合

pd.merge(df1, df2, on=’key’)
というコードで内部結合をします
on=’Key’はどの列を基準にマージを行うか指定しています

データ1

データ2

結合データ

Keyの中で共通しているBとDのみなので
BとDのみ横方向に結合されているのが分かりますね

2つのデータフレームを作成し
内部結合させるコードです

import pandas as pd

# 仮のデータフレームを作成
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})

df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8]})

# df1とdf2を 'key' 列を基準にして結合する
df3 = pd.merge(df1, df2, on='key')

全結合

df3 = pd.merge(df1,df2,how = ‘outer’)
というコードで全結合しています
データ1,データ2を全て一つのファイルに
合体しますどちらかに共通のキーがあるとき結合
ない場合は空白
,Nanが表示される

データ1 :受験名簿

データ2:合否結果

受験番号をKeyとして
二つのデータを結合する
対応するデータがない時はNAとなる

一番下の山田哲也さんは合否のデータがないので空白ですね!
コードを記載します

import pandas as pd

# 受験名簿を読み込み
df1 = pd.read_csv('//content//受験名簿.csv')
#  受験番号を読み込み
df2 = pd.read_csv('//content//合否結果.csv')
#  データを結合
df3 = pd.merge(df1,df2,how = 'outer')

# ファイルを内部結合
df3.to_csv('結合ファイル.csv',index = False,encoding = 'shift-jis')

左側結合

左側結合:df1のデータを全て抜き出して対応するdf2の
データがある場合は結合する

上記のコードをleftに変換する
df3 = pd.merge(df1,df2,how = ‘left’)
結果を以下に示します。

df1のデータはすべて抜き出され
対応するdf2があった場合df2を

合体させるコードなので
全結合と結果は変わっていませんね

右側結合

右側結合:df1のデータを全て抜き出して対応するdf2の
データがある場合は結合する

上記のコードをrightに変換する
df3 = pd.merge(df1,df2,how = ‘right’)
結果を以下に示します

df2のデータはすべて抜き出され
対応するdf1があった場合df1を

合体させるコードなのでdf1の
山田哲也さんのデータは結合されていませんね!

縦結合

共通のキーを見つけてデータを
マージしていましたが
concatメソッドを利用すると

データを縦方向に積み上げられる

データ1 :受験名簿

データ2:追加の受験名簿

結合されたデータは下記になります

参考文献

Bitly
タイトルとURLをコピーしました