ノンプログラマーのためのPython学習サイト

Pandas DataFrame|データフレームの結合方法

困っている人

  • PandasのDataFrame(データフレーム )ってなに?
  • DataFrameを列方向に結合する方法を知りたい
  • DataFrameの行方向に結合する方法を知りたい
この記事で解決できること

PandasのDataFrameが「どういうものか」分かる

  1. DataFrameを列方向に結合する方法(concat)が分かる
  2. DataFrameの行方向に結合する方法(marge)が分かる

Pandas DataFrame(データフレーム) とは?

DataFrame(データフレーム)とは、”Excel”や”Spreadsheet”のような表形式(2次元)で情報を管理するデータ構造のことです

データ分析用のライブラリであるPandasを使って、Excelファイル・csvファイルからDataFrame形式にデータを変換することで様々な操作が可能です。

PandasのDataFrameでは、大量のデータを高速かつ効率的に処理できるという特徴があります。データ分析や業務効率化には欠かせない仕組みです。

DataFrame(データフレーム)の結合

DataFrameの結合方法です。No.1〜No.2まで順番に解説していきます。

No. 基本形 説明
1 pd.concat([df1, df2]) 列方向へのデータフレームの結合
2 pd.merge(df,df2, on=columns) 行方向へのデータフレーム の結合

 

DataFrameの連結|販売データの読み込み

具体例として、果物の販売データを使って説明します。以下の5種類のデータを扱います。ダウンロードしてご利用ください。

[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”#7ca1b7″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]

[/st-mybox]

 

DataFrameの連結|データ内容の確認

まずは5種類のデータをそれぞれ読み込んで、内容を確認していきます。

ExcelファイルのGoogle Colabへの読み込み方法についてはこちら → Pandas DataFrame|Excel・csvファイル読み込み

Excelファイルの読み込み準備

最初に、エクセルファイル(xls, xlsx)の読み込むに必要なライブラリ(xlrd)をインストールします。

pip install xlrd

 

PandasのインポートとExcelファイルの読み込み

データ分析用のライブラリ(Pandas)をインポートします。そして、Excelファイル(5種類)をデータフレーム形式 へ変換します。

import pandas as pd
df_sale_1=pd.read_excel('sale_data_1.xlsx')
df_sale_2=pd.read_excel('sale_data_2.xlsx')
df_sale_3=pd.read_excel('sale_data_3.xlsx')
df_product=pd.read_excel('product_data.xlsx')
df_supplier=pd.read_excel('supplier_data.xlsx')

 

果物の販売データの確認

①4/1〜4/3、②4/4〜4/5、③4/6〜4/8の販売データが確認できます。

 

df_sale_1
df_sale_2
df_sale_3
  1. df_sale_1の内容確認
  2. df_sale_2の内容確認
  3. df_sale_3の内容確認

 

商品データの確認

商品データを確認すると、りんご、ぶどう、みかん、もも、なしの5種類であることが分かります。

df_product
  1. df_productと記述し、内容確認

 

仕入先の確認

仕入先は、アシスト、ライズ、アドバンス、サンライズ、トラストの5社です。

df_supplier
  1. df_supplierと記述し、内容確認

 

DataFrameの連結|列方法へのデータフレーム の結合(concat)

それでは早速、「concat」を使って①4/1〜4/3、②4/4〜4/5、③4/6〜4/8の販売データを列方向へ結合します。

①4/1〜4/3、②4/4〜4/5の販売データの結合

df_sale=pd.concat([df_sale_1, df_sale_2],ignore_index=True)
df_sale
  1. pd.concat([df_sale_1, df_sale_2]と記述し、2つのデータフレーム (4/1〜4/5)を結合。「ignore_index=True」と記述するとインデックス番号を再付番してくれます。

 

①4/1〜4/3、②4/4〜4/5、③4/6〜4/8の販売データの結合

df_sale=pd.concat([df_sale_1,df_sale_2,df_sale_3],ignore_index=True)
df_sale
  1. pd.concat([df_sale_1, df_sale_2,df_sale_3と記述し、3つのデータフレーム (4/1〜4/8)を結合。「ignore_index=True」と記述するとインデックス番号を再付番してくれます。

 

DataFrameの連結|行方法へのデータフレーム の結合(marge)

次に、「merge」を使って、性質の異なる2種類のデータフレーム を行方向へ結合する方法を説明します。何と何を紐づけて結合させるのか、2つのデータベースに共通する列名(キー)を決める必要があります。

①販売データ(4/1〜4/5)と、②商品マスタの結合

2つのデータフレームに共通している、列名(’商品コード’)をキーにして結合します。日付順に並び替えるため「sort_values」を使用します。

df_sale=pd.merge(df_sale,df_product, on='商品コード')
df_sale.sort_values('日付')
  1. pd.merge(df_sale,df_product, on=’商品コード’)と記述すると、「商品コード」をキーにして2つのデータフレーム を結合します。

 

①販売データ(4/1〜4/5)&商品マスタと、②仕入先マスタの結合

先ほど結合した販売データに、さらに商品マスタを結合します。

df_sale=pd.merge(df_sale,df_supplier, on='商品コード')
df_sale.sort_values('日付')
  1. pd.merge(df_sale,df_supplier, on=’商品コード’)と記述すると、さらにもう1つのデータフレーム を結合します。

DataFrame(データフレーム)の結合方法のまとめ

実際のデータ分析の現場では、必要なデータが全て一箇所に集まっていることは、なかなかありません。いろんなシステムからフォーマットの異なるデータを集めてきて、加工する必要があります。

今回紹介したデータベースの連結作業は、データ分析の「前処理」に当たります。

以下の操作を覚えて、DataFrameの結合方法をしっかりマスターしておきましょう。

  • 「concat」を使った列方向への結合
  • 「merge」を使った行方向への結合