データ分析や集計作業に欠かせない「ピボットテーブル」。Excelでの操作が一般的ですが、Pythonを使えば大量データの自動処理や再現性の高い集計が可能です。本記事では、Pythonでピボットテーブルを作成し、Excelファイルとして出力する手順を、具体的なコード例とともに解説します。
ピボットテーブルは、データをさまざまな切り口(行・列・値)で集計・要約できる強力な分析ツールです。例えば、売上データを「地域」や「商品」ごとに集計したい場合などに活用されます。
Pythonでは主に2つの方法があります。
ここでは、実務でよく使われるPandasによる方法を中心に、Excelファイルへの出力までを解説します。
Pandasのpivot_table()
メソッドを使えば、簡単にピボットテーブルを作成できます。
import pandas as pd
# データの読み込み
df = pd.read_csv('sales_data.csv')
# ピボットテーブルの作成
pivot_table = df.pivot_table(
index='Region', # 行方向の集計キー
columns='Product', # 列方向の集計キー
values='Sales', # 集計対象の値
aggfunc='sum' # 集計方法(合計)
)
print(pivot_table)
この例では、「Region(地域)」ごとに「Product(商品)」の「Sales(売上)」を合計しています。
作成したピボットテーブルは、to_excel()
メソッドで簡単にExcelファイルに書き出せます。
# ピボットテーブルをExcelにエクスポート
pivot_table.to_excel('sales_pivot_table.xlsx', sheet_name='集計結果')
sheet_name
でシート名を指定可能index=False
で行ラベル非表示など、書式も柔軟に設定できます。Pandasで出力したExcelは通常の表形式ですが、「Excelのピボットテーブル機能」と同じインタラクティブな集計表を作りたい場合は、Spire.XLSやAspose.Cellsなどの専用ライブラリを利用します。
from spire.xls import Workbook, AxisTypes, PivotBuiltInStyles, SubtotalTypes
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets.get_Item(0)
dataRange = sheet.Range.get_Item("A1:E119")
pivotCache = workbook.PivotCaches.Add(dataRange)
pivotTable = sheet.PivotTables.Add("販売分析", sheet.Range.get_Item("G2"), pivotCache)
# 行・列・値フィールドの追加
rowField = pivotTable.PivotFields.get_Item("地域")
rowField.Axis = AxisTypes.Row
colField = pivotTable.PivotFields.get_Item("商品")
colField.Axis = AxisTypes.Column
dataField = pivotTable.PivotFields.get_Item("売上")
pivotTable.DataFields.Add(dataField, "売上合計", SubtotalTypes.Sum)
pivotTable.CalculateData()
pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleLight2
workbook.SaveToFile("output/Excelピボットテーブル.xlsx")
workbook.Dispose()
この方法なら、Excel上で自由に並べ替えや集計方法の変更ができるピボットテーブルを生成できます。