18. Pandasでデータ分析

Pandas ピボットテーブル(クロス集計)の作成(pivot_table)

更新日:

ピボットテーブルは、データの集計や分析において、大変重要なツールになります。ピボットテーブルでは、縦軸と横軸、集計値を選択し、クロステーブルで集計結果をすることにより、様々な角度からデータを確認することができます。

 
上のピボットテーブルでは、縦軸に顧客、横軸に商品、集計値として売上を表示しています。このようにクロステーブルで結果を表示することによって、どの顧客のどの商品が売れているか、売れていないかを視覚的に確認することができます。

 
この記事では、Pandasにおけるピボットテーブルの作成方法について、確認していきましょう。

 
 

ビボットテーブルの作成方法(pivot_tableの使い方)

PandasのDataFrameにおいて、ピボットテーブルの作成には、pivot_table()を使い、以下のように記述します。

DataFrame.pivot_table(values = "集計値", index = "行", columns = "列")

引数valuesには、集計する値が格納された項目を指定します。
 
また引数indexには行を、columnsには列に表示される項目を指定します。項目が複数ある場合は、listで指定します。
 
例えば、indexに指定する項目が1つの場合、index = "項目1" と指定し、2つ以上の場合、index = ["項目1", "項目2", …] というようにlistで指定します。

 

事例) ピボットテーブルによるクロス集計

事前準備 - CSVファイルの読み込みと結合

それでは実際にピボットテーブルを作成していきます。ここでは売上ヘッダ情報、売上明細情報を元にピボットテーブルを作成し、販売組織、顧客、製品毎の売上を分析する例をみていくことにしましょう。

 
まずは事前準備として、必要なデータをCSVファイルから読み込みます。最初に売上ヘッダ情報が格納されているCSVファイル「T_Sales_Header_pv.csv」をDataFrame df_sales_headerに読み込みます。(※CSVファイルは上のリンクから取得してください。)

 
次に売上明細情報が格納されているCSVファイル「T_Sales_Item_pv.csv」をdf_sales_itemに読み込みます。(※CSVファイルは上のリンクから取得してください。)

 
そして作成した2つのDataFrameを左外部結合で結合しdf_salesに格納します。左外部結合の詳しい説明は、図解!Pandas DataFrameのmergeによる結合(JOIN)を参照ください。

このようにして作成したdf_salesを確認すると、マスタの値がコードで示されており、このままピボットテーブルを作成しても、分析には苦労しそうです。

 
そこでマスタの値も読み込み、名称を表示するようにしましょう。Customer、Product、Sales Organizationの3つのマスタを順に読み込んでいきます。

 
まず最初にCSVファイル「M_Customer.csv」を読み込み、df_customerに格納します。(※CSVファイルは上のリンクから取得してください。)

 
次にCSVファイル「M_Product_pv.csv」を読み込み、df_productに格納します。(※CSVファイルは上のリンクから取得してください。)

 
最後にCSVファイル「M_SalesOrganization.csv」を読み込み、df_sales_orgに格納します。(※CSVファイルは上のリンクから取得してください。)

 
df_salesに対して、これら読み込んだ3つのマスタを左外部結合します。

このようにして、df_salesに対してマスタも結合し、名称も表示されるようになりました。

 
以上で準備が終わり、いよいよピボットテーブルの作成に取り掛かります。

 
 

pivot_table()によるピボットテーブルの作成

それでは先ほど準備したDataFrame df_salesを元にピボットテーブルを作成していきます。

 
まずは顧客、製品毎の売上を見ていきましょう。集計値には”Amount”、行には"Customer_Name"、列には"Product_Name"を指定します。

このようにして作成されたピボットテーブルから、顧客、製品毎の売上が確認できます。
 
例えば、iPod shuffleは佐々木商店によく売れている、海山商事に販売している商品の中ではiPhone 6が売上が高いなどがわかります。

 
 
さらに分析軸を増やし、行に"Sales_Org"を追加してみましょう。引数indexにはlistで["Sales_Org_Name","Customer_Name"]を渡します。

上記のピボットテーブルでは、販売組織、顧客、製品毎の売上が確認できるようになりました。

 
このようにしてピボットテーブルでは、行や列に項目を増やしたり、集計値を変えてみたりして、様々な切り口からデータを分析することができます。

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

 

まとめ記事

1

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

2

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

3

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

4

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

-18. Pandasでデータ分析

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