PythonのPandasのpivot tableについて

Python,イメージ

AI実装検定のご案内

Pandasの pivot_table(ピボットテーブル) は、データを集計・要約するための非常に強力な機能です。

Excelのピボットテーブルに似ており、行や列を指定して集計値を計算したり、多次元的な分析を可能にします。

以下で詳しく解説します。

目次

主な引数

  • data: 対象のDataFrame
  • values: 集計対象となる列(数値列を指定)
  • index: 行方向に使う列(グループ化の軸)
  • columns: 列方向に使う列(グループ化の軸)
  • aggfunc: 集計関数(既定は mean、例:sum, count, max, min, np.median など)
  • fill_value: 欠損値に置き換える値
  • margins: 合計(小計)を表示するかどうか(True/False)
  • margins_name: 合計列/行のラベル名(デフォルトは “All”)
  • dropna: NaNをキーとして含めるかどうか(既定は True=NaNは除外)

基本的な例

import pandas as pd

data = {
    '支店': ['東京', '東京', '大阪', '大阪', '福岡', '福岡'],
    '担当者': ['A', 'B', 'A', 'C', 'B', 'C'],
    '売上': [100, 150, 200, 250, 300, 100]
}
df = pd.DataFrame(data)

# 支店ごとの売上平均
pd.pivot_table(df, values='売上', index='支店', aggfunc='mean')

複数の集計軸

行(index)や列(columns)を複数指定できます。

pd.pivot_table(df, values='売上', index=['支店'], columns=['担当者'], aggfunc='sum', fill_value=0)

複数の集計関数を使う

aggfunc にリストや辞書を渡すと、複数の集計が可能です。

import numpy as np

pd.pivot_table(df, values='売上', index='支店', aggfunc=[np.sum, np.mean, np.max])

全体合計を出す(margins)

pd.pivot_table(df, values='売上', index='支店', aggfunc='sum', margins=True, margins_name='合計')

実務でよく使うシナリオ

  • 販売データ分析
    • 支店 × 商品カテゴリーごとの売上合計
    • 月ごとの売上推移
  • 人事データ分析
    • 部署 × 性別ごとの平均給与
    • 勤続年数別の離職率
  • アクセスログ分析
    • 日付 × ページのアクセス数合計
    • デバイス別の平均滞在時間

groupby との違い

  • groupby: より柔軟でプログラマブル。出力はシリーズやDataFrameで自由度が高い。
  • pivot_table: 表形式(行×列)で見やすい形に集約できる。特にレポートや可視化前処理に便利。

まとめ

Pandasの pivot_table は、データ分析における「クロス集計表」を簡単に作れる便利な関数です。

  • index(行)、columns(列)、values(集計対象)を指定
  • aggfunc で自由に集計関数を切り替え
  • fill_valuemargins を活用すると、実務的なレポートに即使える

以上、PythonのPandasのpivot tableについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次