論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
ピボットテーブル
Pivot Table
データ処理

🔖 キーワード索引

クロス集計Excelpandaspivot_tablegroupby集約関数行/列の入替stackunstackピボットチャート

別名・略称:(なし)

💡 30秒で分かる結論

ピボットテーブル(Pivot Table):クロス集計と再集計を行う Excel/Pandas 機能

📍 あなたが今見ているもの

「都道府県 × 年 × 消費支出」のような 多次元データ を、 「行=都道府県、 列=年、 セル=消費支出平均」という見やすい表に変える操作がピボット。 Excel が代表的ですが、 pandas でも全く同じことが可能。 レポート作成・データ探索の基本道具 です。

🎨 直感で掴む

ピボット前後の比較

Before(縦持ち)

都道府県消費支出
東京2021340
東京2022350
大阪2021310
大阪2022320

After(ピボット後、 横持ち)

都道府県\年20212022
東京340350
大阪310320

📐 定義 / 数式

【ピボットテーブルの一般形】
$$\text{pivot}(\text{data}, \text{index}, \text{columns}, \text{values}, \text{aggfunc})$$
  • index: 行に置くキー
  • columns: 列に置くキー
  • values: セルに集約する値
  • aggfunc: 集約関数(sum, mean, count, ...)

🔬 記号・式を言葉で読み解く

index
ピボットテーブルの「行」になる変数。 例: 都道府県
columns
「列」になる変数。 例: 年
values
セルに入る値。 例: 消費支出
aggfunc
重複した場合の集約方法。 sum, mean, count, median, max, min など
margins
合計行・列を追加するか。 True で全体合計が付加

🧮 実データで計算してみる

SSDSE データから「都道府県別の年別平均消費支出」を集計:

都道府県2020202120222023
東京335340350358
大阪305310320325
愛知300305315320

🐍 Python 実装

SSDSE-B-2026(47 都道府県・2023 年データ)を題材にした最小コード:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)

# 都道府県 × 年 × 消費支出平均
pivot = df.pivot_table(
    index='都道府県',
    columns='年度',
    values='消費支出',
    aggfunc='mean'
)
print(pivot.head())

⚠️ よくある落とし穴

⚠️ 重複行を無視
値が複数あるとデフォルトで平均が取られる。 意図しないと罠。
⚠️ 欠損セルの扱い
ピボット後の NaN は fill_value=0 で埋めるか、 残すか。
⚠️ 巨大な横持ちテーブル
列数が多すぎると見にくい。 melt で縦持ちに戻すことも検討。
⚠️ aggfunc を指定しない
数値以外(文字列)で sum を使うと連結される事故。
⚠️ ピボット結果がマルチインデックス
groupby + unstack の結果は階層化される。 reset_index() で平坦化。

🌐 関連手法・この用語を使う論文

📄 集計を扱う論文全般
ピボット集計はあらゆる分析論文の前処理に登場します。