※この記事にはプロモーションが含まれています。

18. Pandasでデータ分析

図解!Pandas DataFrameの結合(UNION: concat, append)

更新日:

データを分析する上では、通常は1つのDataFrameだけではなく、複数のDataFrameを組み合わせて、データを確認・分析していく必要があります。その際に必要となるのが、結合の処理です。

 
DataFrameの結合方法を、データベースにおけるSQLでのテーブルの結合方法に例えると、結合には行単位の連結であるUNION(ユニオン)と、列単位の連結であるJOIN(ジョイン)の2種類があり、それぞれ次のようなものになります。

  • 行単位の連結(UNION):同じ列をもつDataFrameを縦(行を増やす)方向に連結する。
  • 列単位の連結(JOIN):結合するキーとなる列を元に、DataFrameを横(列を増やす)方向に連結する。

 
まずこの記事では、DataFrameの結合方法の1つである行単位の連結(UNION)について学んでいきましょう。Pandasではconcat()やappend()を利用して、複数のDataFrameを連結(UNION)することができます。

 
列単位の連結(JOIN)の詳しい説明は、「図解!Pandas DataFrameの結合(JOIN)」を参照ください。

 
またPandasのもう1つのデータ構造であるSeriesの結合方法については、「Pandas Seriesを徹底解説!」を参照ください。

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数8,500本突破を記念して、今だけ期間限定で87%オフの大セール中!!!

DataFrameの行単位の連結・結合(UNION)とは

同じ列を持つDataFrame同士を結合する方法です。例えば、次のような同じ列を持つ2つのDataFrame df1、df2を繋ぎ合わせて1つのDataFrame df3にする処理のことを行単位の連結(UNION)と言います。
 

それぞれのDataFrameの行数は異なっても問題無いですが、列は同じものでなければなりません。

 
それでは、上記の例を実際にコーディングしていきます。まずは、df1、df2のデータを作成します。最初にdf1を作成します。

 
次にdf2を作成します。

 
 

appendでのDataFrameの行単位の連結・結合(UNION)

先ほど準備した2つのDataFrame df1、df2を行単位で結合(UNION)して、DataFrame df3を作成していきます。

 
DataFrameのUnionの結合には、appendを使います。2つのDataFrameをそれぞれ、DataFrame1、DataFrame2とすると、以下のように記述します。

DataFrame1.append(DataFrame2, ignore_index=True/False)

引数ignore_indexでは、元のDataFrameのインデックスを破棄して新たに振りなおす場合、Trueを指定し、元のインデックスを継承する場合はFalseを指定します。何も指定しないとFalseになります。

 
df1とdf2をUnionで結合し、df3を作成します。ignore_indexにはTrueを指定して、新たにindexを振り直します。

df3の内容を表示すると、このようにdf1とdf2を合わせたものになっていることがわかります。またインデックスは通しの連番で0~4まで振りなおされています。

 
 
今度はignore_indexをFalseでappendを実行し、インデックスの違いを確認してみましょう。

元のdf1、df2のインデックスがそのまま設定されているのがわかります。

 
ignore_indexについては、元々のDataFrameのインデックスが連番で振ってあるのであれば、新たに振りなおせるようTrueに設定する方が良いです。

 
また元のDataFrameのインデックスがProduct IDなど、そのデータをユニークに特定する情報を持つ列に対して設定されているのであれば、そのままのインデックスを使えるようFalseに設定すれば良いです。

 
また「Pandas – DataFrameへのインデックス設定」の章で学んだように、インデックスを新たに設定し直すことも可能です。

 
 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が発売中!
発売数8,500本突破を記念して、今だけ期間限定で87%オフの大セール中!!!

concatによるDataFrameの行単位の連結・結合(UNION)

appendでは無く、concatでも同様にDataFrame同士を行単位で結合(UNION)することができます。

pd.concat([DataFrame1,DataFrame2,DataFrame3…],ignore_index=True/False)

 
appendとの違いは、concatはリスト型でDataFrameを渡すので、2つ以上の複数のDataFrameをまとめて結合することができます。

 
concatの例としては、先ほどのappendと同様、2つのDataFrame df1、df2をUnionで結合し、df3に格納してみます。

appendの時と同じ結果が表示されているのがわかります。

 
 
関連記事です。
Pandasの中心となるDataFrame(データフレーム)については、次の記事で詳しく解説しております。

 

 
 
 
最後に...


Pythonの学習においては、実際に様々なプログラムを書いて試していくことが非常に重要です。Pythonについて、さらに詳しく学ばれたい方は、以下の私のUdemy講座をご検討いただければ幸いです。


Pythonを用いて世界中のWebサイトから自動的にデータ収集する方法を、基礎からていねいに学ぶことができます。Pythonを初めて学ばれた方も、最初に取り組みやすい内容になっています。


>> Pythonによるビジネスに役立つWebスクレイピング
発売数8,500本突破を記念して大セール中!期間限定になりますのでお早めに。
Pythonによるビジネスに役立つWebスクレイピング(BeautifulSoup、Selenium、Requests)講座の画面

既に8,500名以上の方に受講頂き、大変好評です。またコースに満足いただけない場合でも、30日返金保証があるので安心です。

期間限定の割引クーポンは、こちらから!
>> Pythonによるビジネスに役立つWebスクレイピング
   
   





-18. Pandasでデータ分析

Copyright© ビジPy , 2024 All Rights Reserved.