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

Pandas|pivot_table(ピボットテーブル)の使い方

eye_catch_Pandas

困っている人

  • ピボットテーブルって何?
  • ピボットテーブルの基本的な使い方を知りたい
  • ピボットテーブルの応用的な使い方を教えてほしい
この記事で解決できること
  1. ピボットテーブルが分かる
  2. ピボットテーブルの基本的な使い方が分かる
  3. ピボットテーブルの応用的な使い方が分かる

この記事を書いている人

プログラミング(Python・Django・SQL・HTML・css・Bootstrapなど)を独学で習得。「Excel作業の自動化」「人工知能による予測」「Webアプリ開発」「Webスクレイピング」で業務改善×システム化を得意にしています。

Pandasのpivot_table(ピボットテーブル)の使い方

ピボットテーブルとは、大量のデータから様々な項目で集計ができる機能のことです。列データと行データのクロス集計により、一目でデータ構造を把握できます。

また、データ構造を自由に変更することも可能で、例えば「商品毎の販売数」や「日付毎の売上」など、自分の見たい形にデータを集計できるところが特徴です。

Pandasのピボットテーブルの例

Pandasによるピボットテーブル作成の例を図で説明します。DataFrameのバラバラの販売データを、”行データ(日付)”と”列データ(商品)”でクロス集計し、その結果をDataFrameへ反映することができます。

上記の例では合計(sum)で説明しましたが、統計量(平均・標準偏差・最小値・最大値)で表示することも可能です。

Pandasのpivot_tableの使い方

今回紹介するpivot_tableの基本的な使い方です。

No. 基本形 説明
1 pd.pivot_table(df, index=’日付’, columns=’商品名’,values=’販売数量’,aggfunc=’sum’) 行データは”日付”、列データは”商品名”で販売数量をクロス集計(sum)

Pandasのpivot_tableのサンプルデータ

この記事では以下のサンプルデータを使います。よろしければ、ダウンロードしてご利用ください。

[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″]

  • サンプルデータ(’ fruits_2‘)

[/st-mybox]

また、GoogleColabへのサンプルデータ(Excelファイル)の読み込み方法については、以下の記事を参考にしてください。

[st-card id=180 label=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]

Pandas pivot_table(ピボットテーブル)で販売数を集計

それでは、pivot_tableによる商品の販売数を集計する方法を説明していきます。まずはExcelファイルを読み込んでください。

Excelファイル(fruits_2)の読み込み

Pandasを使ってExcelファイルを読み込みます。インデックス(一番左の列)を見ると、0から364までの365日分のデータであることが分かります。

import pandas as pd
df=pd.read_excel('/content/fruits_2.xlsx')
df
  1. pandasをインポート
  2. 変数(df)にExcelファイルから読み込んだデータフレームを代入
  3. 変数(df)を出力

日付データを”年月日”から”年月”に変換する

”年月”で集計するために、まずは日付を”年月日”から”年月”に変換する必要があります。詳しくは、日付を変換する方法をご確認ください。

df['日付'] = df['日付'].dt.strftime('%Y年%m月')
df

1.変数(df[‘日付’])に、年月日を年月に変換したデータフレーム を代入
2.変数(df)を出力

Pandas pivot_table(ピボットテーブル)で販売数を集計

pivot_table関数の引数には、「index」「columns」「values」「aggfunc」が指定できます。「aggfunc=’sum’」によって、それぞれの商品の販売数量を合計します。

df_1=pd.pivot_table(df, index='日付', columns='商品名',values='販売数量',aggfunc='sum').astype(int)
df_1

1.変数(df_1)に、”日付”と”商品名”で”販売数量”を合計したデータフレーム を代入
2.変数(df_1)を出力

Pandas pivot_table(ピボットテーブル)で売上平均を算出

次は、ピボットテーブルによる売上の平均を算出する方法を説明していきます。

Pandas pivot_table(ピボットテーブル)で売上平均を算出

pivot_table関数の引数を「aggfunc=’mean’」に指定することで、それぞれの商品の売上平均を算出します。

df_2 = pd.pivot_table(df, index='日付', columns='商品名',values='売上',aggfunc='mean').astype(int)
df_2

1.変数(df_2)に、それぞれの商品の売上平均をデータフレーム に代入
2.変数(df_2)を出力

Pandas pivot_table(ピボットテーブル)で売上合計を算出(行列の入れ替え)

pivot_table関数の引数である「index」と「columns」の項目を入れ替えると、データ構造が変化します。下記の例では、行データを”商品名”、列データを”日付”にして売上を合計しています。

df_3 = pd.pivot_table(df, index='商品名', columns='日付',values='売上',aggfunc='sum').astype(int)
df_3

1.変数(df_3)に、それぞれの商品の売上合計をデータフレーム に代入
2.変数(df_3)を出力

Pandas pivot_table(ピボットテーブル)で売上と販売数量の合計を算出

さらに、ピボットテーブルのデータ構造を変更して、”売上”と”販売数量”の合計を同時に算出する方法を説明します。データが多いので最初の10行だけを出力しています。

df_4 = pd.pivot_table(df, index=['日付','商品名'] ,values=['販売数量','売上'],aggfunc='sum').astype(int)
df_4.head(10)
  1. 変数(df_4)に、”日付毎”と”商品名毎”に”売上”と”販売数量”を合計したデータフレームを代入
  2. 変数(df_4)の最初の10行を出力

Pandasのpivot_table(ピボットテーブル)の使い方まとめ

Pandasのピボットテーブルは、大量のデータから様々な項目で集計する機能を持っています。「自分の見たい形」にデータ構造を変更できるので、効率的にデータ分析を行うことができます。

ぜひ「pivot_table」の使い方をマスターして、データ分析にチャレンジしてください。最後まで読んでいただき、ありがとうございます。