データ分析や集計作業に欠かせない「ピボットテーブル」。Excelでの操作が一般的ですが、Pythonを使えば大量データの自動処理や再現性の高い集計が可能です。本記事では、Pythonでピボットテーブルを作成し、Excelファイルとして出力する手順を、具体的なコード例とともに解説します。
ピボットテーブルとは?
ピボットテーブルは、データをさまざまな切り口(行・列・値)で集計・要約できる強力な分析ツールです。例えば、売上データを「地域」や「商品」ごとに集計したい場合などに活用されます。
Pythonでのピボットテーブル作成方法
Pythonでは主に2つの方法があります。
- Pandasライブラリを使った方法(手軽・高速)
- Excel操作専用ライブラリを使った方法(Excel上でのピボットテーブルそのものを生成)
ここでは、実務でよく使われるPandasによる方法を中心に、Excelファイルへの出力までを解説します。
Pandasでピボットテーブルを作成
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(売上)」を合計しています。
ピボットテーブルをExcelに出力
作成したピボットテーブルは、to_excel()
メソッドで簡単にExcelファイルに書き出せます。
# ピボットテーブルをExcelにエクスポート
pivot_table.to_excel('sales_pivot_table.xlsx', sheet_name='集計結果')
sheet_name
でシート名を指定可能index=False
で行ラベル非表示など、書式も柔軟に設定できます。
さらに高度なExcelピボットテーブルを作りたい場合
Pandasで出力したExcelは通常の表形式ですが、「Excelのピボットテーブル機能」と同じインタラクティブな集計表を作りたい場合は、Spire.XLSやAspose.Cellsなどの専用ライブラリを利用します。
Spire.XLSを使った例
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上で自由に並べ替えや集計方法の変更ができるピボットテーブルを生成できます。
まとめ
- Pandasなら、手軽にピボットテーブルを作成し、Excelファイルに出力可能
- Excelのピボットテーブル機能そのものをPythonから使いたい場合は、Spire.XLSやAspose.Cellsなどのライブラリが便利
- Pythonによる自動化で、大量データの集計作業も効率化できる
コメント