( New ) 新連載スタート!2人の会話形式でPythonを学ぶ「週末Pythonゆる講座」はこちら ▶▶

【Python】concat|複数のデータを連結する

データを連結するとは

Ptyhonのconcatを使うことで、データ同士を連結することができます

SQLでは「UNION」の機能を実施することができます

データをつなげる点で似たような関数としてmergeも存在しますが、大きく異なるポイントがあります

そのポイントとは「共通のキー」という概念です

  • データをそのままつなげるのがconcat
  • 共通のキーを軸にデータをつなげるのがmerge

concatの例(データをそのまま連結する

Pythonのconcatのイメージ

mergeの例(共通のキー同士で結合する

Pythonの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()
Python学習のための学校のテストのサンプルデータ

2つのデータに分割する必要があるため、queryを使い性別で分割します

df_m = df.query('sex=="男性"')
df_f = df.query('sex=="女性"')
PythonのDataFrame

concatの使い方

pd.concat([df_m, df_f])

事前に結合したいDataframeの変数を2つ以上用意し[ ]リスト形式で記載していきます

データ自体は3つ以上でも連結が可能です

縦・横の両方の軸で連結することができますが、基本的には縦方向の連結の方が利用頻度が高くなります

横方向の連結はおすすめしない

元のデータが並び替えられたり、行数がずれたりしていると想定したデータ構造にならない場合があります。

横方向の連結はなるべく避け、mergeでキーを基準に結合しましょう

連結の注意点

concatによる連結の際気を付けなければいけないポイントがあります

それは「カラムの数を揃える」という点です

Pythonのconcatのイメージ

連結のイメージから分かる通り、concatでは列が違うとデータがうまく入りません(NaN:欠損値となってしまいます)

パラメータ

おすすめ度を判定:★★★=必須|★★☆=推奨|★☆☆=任意

★★★:objs(結合するデータ)

pd.concat([df_m, df_f])

concatで連携するDataframe[ ]リスト形式で記載していきます

記述形式を間違えるエラーが多いので、注意してください

※objsと書いていますが、Dataframeの変数名をそのまま記載します

Pythonのconcatの利用イメージ

また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)

★☆☆:join(連携する方法)

pd.concat([df_m, df_f], join='outer])

項目が違うデータ同士を結合する場合、「共通しない項目」の処理を指定することができます

外部結合では共通しない項目でも残り、内部結合では共通しない項目は消えてしまいます

※何も記載しないと外部結合(outer)となります

  • join = ‘outer’(外部結合:共通しない項目はNaNになる)※デフォルト
  • join = ‘inner’(内部結合:共通しない項目は表示されない)
pd.concat([student_1, student_2, join='outer])

まとめ

今回はconcatによるデータの連結をご紹介してきました

同じようなデータがたくさんあっても、連結して1つのデータとして扱うことができるようになります

ぜひ利用してみてください

【Python】merge|2つのデータを結合する方法
お気に入り登録お願いします

コメントを残す

メールアドレスが公開されることはありません。