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へのリンク)が新発売!今なら期間限定で89%オフ!!!

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

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

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

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

 
次にdf2を作成します。

 
 

動画教材紹介私(清水 義孝)が作成したコース「Pythonによるビジネスに役立つWebスクレイピング」(Udemyへのリンク)が新発売!今なら期間限定で89%オフ!!!

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へのインデックス設定」の章で学んだように、インデックスを新たに設定し直すことも可能です。

 
 

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(データフレーム)については、次の記事で詳しく解説しております。

 






まとめ記事

1

Python3におけるWEBスクレイピングのやり方について初心者向けに解説した記事です。   Requests、Beautiful Soup、Selenium、Pandas、newspape ...

2

Pythonの基本的なトピックについて、チュートリアル形式で初心者向けに解説した記事です。プログラミング未経験者や初心者でもわかりやすいよう、丁寧に解説しています。   Pythonでデータ ...

3

Pandas(パンダス)とは、データを効率的に扱うために開発されたPythonのライブラリの1つで、データの取り込みや加工・集計、分析処理に利用します。   Pandasには2つの主要なデー ...

4

データ分析、機械学習、ディープラーニングにはグラフの描画による可視化は不可欠です。データは、加工前の状態ではただの数字の羅列でしかなく、一目で必要な情報が伝わるものではありません。それを集計しグラフに ...

5

NumPy(ナンパイ)は、数値計算を効率的に行うための拡張ライブラリです。ベクトルや行列などを効率的に数値計算するための数学関数ライブラリを提供します。NumPyを使うことにより、数値計算をより早く、 ...

-18. Pandasでデータ分析

Copyright© AI-interのPython3入門 , 2020 All Rights Reserved.