目次
データを連結するとは
Ptyhonのconcatを使うことで、データ同士を連結することができます
SQLでは「UNION」の機能を実施することができます
データをつなげる点で似たような関数としてmergeも存在しますが、大きく異なるポイントがあります
そのポイントとは「共通のキー」という概念です
- データをそのままつなげるのがconcat
- 共通のキーを軸にデータをつなげるのがmerge
concatの例(データをそのまま連結する)
mergeの例(共通のキー同士で結合する)
mergeについてはこちらの記事で紹介しています
【Python】merge|2つのデータを結合する方法事前準備
Pandasというデータ解析を実施できるライブラリをインポートします
import pandas as pd
※サンプルデータ:学校のテストの点数
import pandas as pd
# 本サイトから直接データを取得
df = pd.read_html('https://smart-hint.com/student-data/')[0]
df.head()
2つのデータに分割する必要があるため、queryを使い性別で分割します
df_m = df.query('sex=="男性"')
df_f = df.query('sex=="女性"')
concatの使い方
pd.concat([df_m, df_f])
事前に結合したいDataframeの変数を2つ以上用意し[ ]リスト形式で記載していきます
データ自体は3つ以上でも連結が可能です
縦・横の両方の軸で連結することができますが、基本的には縦方向の連結の方が利用頻度が高くなります
元のデータが並び替えられたり、行数がずれたりしていると想定したデータ構造にならない場合があります。
横方向の連結はなるべく避け、mergeでキーを基準に結合しましょう
連結の注意点
concatによる連結の際気を付けなければいけないポイントがあります
それは「カラムの数を揃える」という点です
連結のイメージから分かる通り、concatでは列が違うとデータがうまく入りません(NaN:欠損値となってしまいます)
パラメータ
おすすめ度を判定:★★★=必須|★★☆=推奨|★☆☆=任意
★★★:objs(結合するデータ)
pd.concat([df_m, df_f])
concatで連携するDataframeを[ ]リスト形式で記載していきます
記述形式を間違えるエラーが多いので、注意してください
※objsと書いていますが、Dataframeの変数名をそのまま記載します
また3つ以上のデータを連結する場合も、そのまま変数を並べて記載します
1つの巻子で記載できるため非常に便利です
pd.concat([df_m, df_f, df_other])
★★☆:axis(連結する方向)
pd.concat([df_m, df_f], axis=0)
axisでは連結する方向を設定することができます
何も記載しない場合は縦方向への結合となります
- axis = 0(縦方向に連結)※デフォルト
- axis = 1(横方向に連結)
★☆☆:join(連携する方法)
pd.concat([df_m, df_f], join='outer])
項目が違うデータ同士を結合する場合、「共通しない項目」の処理を指定することができます
外部結合では共通しない項目でも残り、内部結合では共通しない項目は消えてしまいます
※何も記載しないと外部結合(outer)となります
- join = ‘outer’(外部結合:共通しない項目はNaNになる)※デフォルト
- join = ‘inner’(内部結合:共通しない項目は表示されない)
まとめ
今回はconcatによるデータの連結をご紹介してきました
同じようなデータがたくさんあっても、連結して1つのデータとして扱うことができるようになります
ぜひ利用してみてください
【Python】merge|2つのデータを結合する方法