【pandas】データ結合メソッド pd.concat()を利用してデータを結合する

pandas
Yamu
Yamu

データ結合メソッド
pd.concat()を
利用して

データの結合方法を
説明します

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

今回紹介するデータ結合

pd.concatは

pandas ライブラリの関数で

特定の軸に沿って

pandas オブジェクトを連結するために

使用されます

DataFrame や Series を結合するのに非常に便利です

pd.concat([df1,df2])

pd.concatでデータを結合する

2つのデータがあります

AB
13
24
データ1
AB
57
68
データ2

2つのデータをpd.concatで結合させ

データ3を作りたいと考えています

AB
13
24
57
68

pd.concatでデータを結合するコードを書きます

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

result = pd.concat([df1, df2])
print(result)

実行結果

   A  B
0  1  3
1  2  4
0  5  7
1  6  8

データを結合できました

axis

axis = 1にするとデータを横に結合することが可能です

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

結合結果

   A  B  A  B
0  1  3  5  7
1  2  4  6  8
Yamu
Yamu

データが縦ではなく
横に結合できて
る..!

ignore_index

デフォルトはFalse

True にすると、連結する軸のインデックス値を無視します

pd.concat([df1, df2],ignore_index = False)

結合結果

   A  B
0  1  3
1  2  4
0  5  7
1  6  8

インデックス値が

0101になっていますね

元のデータのインデックスを

参照してることが分かります

Trueにします

pd.concat([df1, df2],ignore_index = True)

結合結果

   A  B
0  1  3
1  2  4
2  5  7
3  6  8

インデックスが0,1,2,3になっています

Yamu
Yamu

インデックスが
リセットされてますね

keys

わたされたキーを外側のレベルとして

階層インデックスを構築します

pd.concat([df1, df2],keys = ["df1","df2"])

結合結果

pd.concat([df1, df2],keys = ["df1","df2"])

結合結果

       A  B
df1 0  1  3
    1  2  4
df2 0  5  7
    1  6  8
Yamu
Yamu

結合前のデーフレームを
インデックスの更に

上の階層に設定できていますね

names

階層インデックスに名前をつけます

pd.concat([df1, df2],keys = ["df1","df2"],names = ["DataFrame","number"])

結合結果

                  A  B
DataFrame number
df1       0       1  3
          1       2  4
df2       0       5  7
          1       6  8
Yamu
Yamu

インデックスに
DataFrameと

numberといった

名前がついてる!

join

{‘inner’, ‘outer’}。デフォルトは’outer’

outerは和集合, innerは積集合

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C' :[2,4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

result = pd.concat([df1, df2],join="inner")
print(result)

実行結果

   A  B
0  1  3
1  2  4
0  5  7
1  6  8
import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C' :[2,4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

result = pd.concat([df1, df2],join="inner")
print(result)

実行結果

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4], 'C' :[2,4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})

result = pd.concat([df1, df2],join="outer")
print(result)

実行結果

   A  B    C
0  1  3  2.0
1  2  4  4.0
0  5  7  NaN
1  6  8  NaN

verify_integrity

連結されたデータフレームのインデックスに

重複がないことを確認するために使用されます

デフォルトでは False になっており

このパラメータを True に設定すると

連結プロセス中にインデックスの重複がチェックされ

もし重複が見つかった場合はエラーが発生します

import pandas as pd

# サンプル DataFrame を作成
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]}, index=[1, 2])

# verify_integrity を True にして連結する
try:
    result = pd.concat([df1, df2], verify_integrity=True)
except ValueError as e:
    print("ValueError:", e)

実行結果

ValueError: Indexes have overlapping values: Int64Index([0, 1], dtype='int64')

copy

copy パラメータは

パフォーマンスとメモリ使用量を最適化するために使用します

特に、大規模なデータセットを扱う場合や

連結後に元のデータを変更しない場合に役立ちます

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