困っている人
- PandasのDataFrame(データフレーム )ってなに?
- DataFrameを列方向に結合する方法を知りたい
- DataFrameの行方向に結合する方法を知りたい
PandasのDataFrameが「どういうものか」分かる
- DataFrameを列方向に結合する方法(concat)が分かる
- 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″]
- 果物の販売データ4/1〜4/3(’sale_data_1.xlsx‘)
- 果物の販売データ4/4〜4/5(’sale_data_2.xlsx‘)
- 果物の販売データ4/6〜4/8(’sale_data_3.xlsx‘)
- 商品マスタ(’product_data‘)
- 仕入先マスタ(‘supplier_data.xlsx‘)
[/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
- df_sale_1の内容確認
- df_sale_2の内容確認
- df_sale_3の内容確認
商品データの確認
商品データを確認すると、りんご、ぶどう、みかん、もも、なしの5種類であることが分かります。
df_product
- df_productと記述し、内容確認
仕入先の確認
仕入先は、アシスト、ライズ、アドバンス、サンライズ、トラストの5社です。
df_supplier
- 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
- 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
- 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('日付')
- 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('日付')
- pd.merge(df_sale,df_supplier, on=’商品コード’)と記述すると、さらにもう1つのデータフレーム を結合します。
DataFrame(データフレーム)の結合方法のまとめ
実際のデータ分析の現場では、必要なデータが全て一箇所に集まっていることは、なかなかありません。いろんなシステムからフォーマットの異なるデータを集めてきて、加工する必要があります。
今回紹介したデータベースの連結作業は、データ分析の「前処理」に当たります。
以下の操作を覚えて、DataFrameの結合方法をしっかりマスターしておきましょう。
- 「concat」を使った列方向への結合
- 「merge」を使った行方向への結合