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