【Python】Pandasでピボットテーブルを作成する方法|データ集計・分析入門

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

Pythonを用いたピボットテーブル作成方法の解説記事です。本記事読了後は、ピボットテーブル作成メソッドや引数を駆使して、目的に応じたテーブルが作成できるようになります。丁寧なプログラム解説もありますため是非ご覧ください。

目次

ピボットテーブルとは

ピボットテーブルとは、多様なデータの中からあるデータ断面を切り出し、分析しやすい形式に変換したテーブルです。マーケティングや財務用途で用いられる等様々な側面で応用されてます。

【Python×Pandas】ピボットテーブル作成・データ集計

Pythonを用いたピボットテーブルの作成手順を下記に示します。順を追ってプログラミングしていきましょう。

  1. サンプルデータ読込
  2. pandas.pivot_table()メソッドでピボットテーブル作成
  3. 引数を駆使して多様な目的に応じたピボットテーブル作成

サンプルデータ読込

ピボットテーブルを作成する上で必要なデータを読み込みます。今回はサンプルとして下記を記述します。

import pandas as pd
from io import StringIO
import numpy as np

# ピボットテーブル作成用データ
csv_data = \
    '''
    No 名前  性別 年齢  購入回数 出身
    1  田中  女   20代  1      東京
    2  佐藤  女   30代  2      東京
    3  山田  男   30代  4      大阪
    4  高橋  男   40代  5      大阪
    5  田口  女   30代  1      北海道
    6  伊藤  男   30代  8      北海道
    7  大野  男   30代  6      東京
    8  松永  男   40代  1      東京
    9  入江  女   50代  7      大阪
    '''

# データフレーム
df = pd.read_table(StringIO(csv_data),sep='\s+')

Pandas.pivot_tableメソッドでピボットテーブル作成

ピボットテーブルはPandasライブラリのpivot_table()メソッドを用いて作成します。まずは、下記に示すような最小限必要な引数を指定し、テーブルを作成してみましょう!ここでデータ算出方法のデフォルトは「平均値」であり、変更したい場合はaggfuncで指定できます。

pandas.pivot_table(data, 
                   index="行のデータ項目", 
                   columns="列のデータ項目", 
                   values="値", 
                   aggfunc='mean'
                   )

以下プログラムの具体例を示します。

ピボット集計|行「性別」・列「年齢」・値「購入回数(平均値)」

コード

pd.pivot_table(df,
               index=["性別"],
               columns=["年齢"],
               values="購入回数",
               aggfunc="mean"
               )

出力イメージ

ピボット集計|行「出身と性別」・列「年齢」・値「購入回数(平均値)」

コード

pd.pivot_table(df,
               index=["出身","性別"],
               columns=["年齢"], 
               values="購入回数", 
               aggfunc="mean"
               )

出力イメージ

ピボット集計|行「性別」・列「出身と年齢」・値「購入回数(平均値)」

コード

pd.pivot_table(df,
               index=["性別"],
               columns=["出身","年齢"], 
               values="購入回数", 
               aggfunc="mean"
               )

出力イメージ

【Python】ピボットテーブルの引数を駆使して多様なデータ集計を実現

続いてpivot_table()メソッドの引数を理解し、分析の目的に合わせてピボットテーブルを加工できるようになりましょう。引数を全て与えた場合、下記のように記述できます。

コード

pandas.pivot_table(data, 
                   index=None, 
                   columns=None, 
                   values=None,
                   aggfunc='mean', 
                   fill_value=None, 
                   dropna=True, 
                   margins=False, 
                   margins_name='All',
                   observed=False, 
                   sort=True
                  )

Pandas.pivot_tableメソッドの引数一覧

スクロールできます
引数名概要デフォルト
dataデータ元必須
index行の項目必須
columns列の項目必須
values必須
aggfunc値の算出方法“mean” (平均)
fill_valueNull値を何で補完するかNone
dropna全ての値がnullの列の削除要否True
margins小計表示要否False
margins_name小計の名前“All”
observedカテゴリ値で適用False
sortソート要否True

引数調整によるピボットテーブル作成|データ準備

利用頻度の高い引数を用いてピボットテーブルを作成します。引き続きデータには下記を利用しますため、事前に記述しておきましょう。

import pandas as pd
from io import StringIO
import numpy as np

# ピボットテーブル作成用データ
csv_data = \
    '''
    No 名前  性別 年齢  購入回数 出身
    1  田中  女   20代  1      東京
    2  佐藤  女   30代  2      東京
    3  山田  男   30代  4      大阪
    4  高橋  男   40代  5      大阪
    5  田口  女   30代  1      北海道
    6  伊藤  男   30代  8      北海道
    7  大野  男   30代  6      東京
    8  松永  男   40代  1      東京
    9  入江  女   50代  7      大阪
    '''

# データフレーム
df = pd.read_table(StringIO(csv_data),sep='\s+')

ピボット集計|小計項目追加

コード

pd.pivot_table(df,
               index=["性別"],
               columns=["年齢"],
               values="購入回数",
               margins=True,
               margins_name="小計"
               )

出力イメージ

ピボット集計|集計方法の調整「最大・最小・平均・中央・合計」

コード

pd.pivot_table(df,
               index=["性別"],
               columns=["年齢"],
               values="購入回数",
               aggfunc="sum"
               )

出力イメージ

集計方法は用途に応じて下記のように指定可能です。

スクロールできます
算出方法記述例
最大値aggfunc = “max”
最小値aggfunc = “min”
平均値aggfunc = “mean”
中央値aggfunc = “median”
合計値aggfunc = “sum”

ピボット集計|Null値の補完方法(例:Null→0に値変換)

コード

pd.pivot_table(df,
               index=["性別"],
               columns=["年齢"],
               values="購入回数",
               fill_value=0
               )

出力イメージ

【参考】Pythonでのデータ前処理・分析・可視化

当サイトではPythonを用いた「データ前処理手法」「データ分析」「グラフや表を用いた可視化」手法について幅広く解説しております。AI・機械学習にも応用できる内容となっておりますため、興味がある方は併せてご確認下さい。

Pythonを活用したデータ処理・分析手法一覧



【参考】Pythonとは・できること一覧

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次