ピボットテーブルは、データをさまざまな視点から整理、集計、分析できる柔軟な手段であり、有益なインサイトの発見や的確な意思決定に役立ちます。カテゴリ、日付、数値などの条件に基づいてデータを簡単に並べ替えたり要約したりできるため、複雑なデータセットの処理や多角的な比較分析に特に便利です。
本記事では、Spire.XLS for Python を使用して、Python で Excel 文書内のピボットテーブルを作成または操作する方法を紹介します。
Spire.XLS for Python のインストール
この操作には、Spire.XLS for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.XLS for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。
pip install Spire.XLS
Python で Excel にピボットテーブルを作成する
Spire.XLS for Python は、Excel 文書内でピボットテーブルを操作するための PivotTable クラスを提供しています。既存の Excel ワークシートのデータに基づいてピボットテーブルを作成するには、以下の手順に従ってください。
- Workbook オブジェクトを作成します。
- Workbook.LoadFromFile() メソッドで Excel 文書を読み込みます。
- Workbook.Worksheets[index] プロパティを使用して、対象のワークシートを取得します。
- Worksheet.Range プロパティで、ピボットテーブルの元になるセル範囲を指定します。
- Workbook.PivotCaches.Add() メソッドを使用して PivotCache オブジェクトを作成します。
- Worksheet.PivotTables.Add() メソッドで、ワークシートにピボットテーブルを追加します。
- 行エリアに必要なフィールドを追加します。
- 値エリアに必要なフィールドを追加します。
- Workbook.SaveToFile() メソッドで、結果のファイルを保存します。
from spire.xls import *
from spire.xls.common import *
# Workbook オブジェクトを作成します
workbook = Workbook()
# サンプルの Excel ドキュメントを読み込みます
workbook.LoadFromFile("Sample.xlsx")
# 最初のワークシートを取得します
sheet = workbook.Worksheets[0]
# データソース範囲を選択します
cellRange = sheet.Range["A1:I11"]
piVotCache = workbook.PivotCaches.Add(cellRange)
# ピボットテーブルをワークシートに追加し、位置とキャッシュを設定します
pivotTable = sheet.PivotTables.Add("ピボットテーブル1", sheet.Range["A13"], piVotCache)
# 「Region」と「Product」フィールドを行エリアに追加します
regionField = pivotTable.PivotFields["支社名"]
regionField.Axis = AxisTypes.Row
pivotTable.Options.RowHeaderCaption = "支社名"
productField = pivotTable.PivotFields["商品カテゴリ"]
productField.Axis = AxisTypes.Row
# 「Quantity」と「Amount」フィールドを値エリアに追加します
pivotTable.DataFields.Add(pivotTable.PivotFields["売上個数"], "売上個数合計", SubtotalTypes.Sum)
pivotTable.DataFields.Add(pivotTable.PivotFields["単価(円)"], "売上金額合計(円)", SubtotalTypes.Sum)
# ピボットテーブルに組み込みスタイルを適用します
pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleMedium11
# 列幅を設定します
sheet.SetColumnWidth(1, 16)
sheet.SetColumnWidth(2, 16)
sheet.SetColumnWidth(3, 16)
# ドキュメントを保存します
workbook.SaveToFile("output/ピボットテーブル.xlsx")
workbook.Dispose()
Python でピボットテーブルを列の値で並べ替える
特定のフィールドを並べ替えるには、PivotTable.PivotFields[index] プロパティでフィールドを取得し、PivotField.SortType プロパティを使って並べ替え方法を指定します。以下は、特定のフィールドの値に基づいてピボットテーブルを並べ替える手順です。
- Workbook オブジェクトを作成します。
- Workbook.LoadFromFile() メソッドで Excel 文書を読み込みます。
- Workbook.Worksheets[index] プロパティで対象のワークシートを取得します。
- Worksheet.PivotTables[index] プロパティでピボットテーブルを取得します。
- PivotTable.PivotFields[fieldName] プロパティで対象のフィールドを取得します。
- PivotField.SortType プロパティを使って並べ替えを設定します。
- Workbook.SaveToFile() メソッドで、並べ替え後のファイルを保存します。
from spire.xls import *
# Workbook オブジェクトを作成します
workbook = Workbook()
# Excel ドキュメントを読み込みます
workbook.LoadFromFile("output/ピボットテーブル.xlsx")
# 最初のワークシートを取得します
sheet = workbook.Worksheets[0]
# 指定したピボットテーブルを取得します
pivotTable = sheet.PivotTables[0]
# 指定したフィールドを取得します
idField = pivotTable.PivotFields["支社名"]
# 「Order ID」フィールドの列のデータを並べ替えます(降順)
idField.SortType = PivotFieldSortType.Descending
# ドキュメントを保存します
workbook.SaveToFile("output/データ並べ替え.xlsx")
workbook.Dispose()
Python でピボットテーブルの行を展開・折りたたむ
ピボットフィールドの詳細を折りたたむには、PivotField.HideItemDetail(string itemValue, bool isHiddenDetail) メソッドを使用し、第 2 引数に true を設定します。詳細を再表示するには false を設定します。以下が操作手順です。
- Workbook オブジェクトを作成します。
- Workbook.LoadFromFile() メソッドで Excel 文書を読み込みます。
- Workbook.Worksheets[index] プロパティで対象のワークシートを取得します。
- Worksheet.PivotTables[index] プロパティでピボットテーブルを取得します。
- PivotTable.PivotFields[fieldName] プロパティで対象のフィールドを取得します。
- PivotField.HideItemDetail(string itemValue, bool isHiddenDetail) メソッドで、行の展開または折りたたみを設定します。
- Workbook.SaveToFile() メソッドで結果を保存します。
from spire.xls import *
# Workbook オブジェクトを作成します
workbook = Workbook()
# サンプルの Excel ドキュメントを読み込みます
workbook.LoadFromFile("output/ピボットテーブル.xlsx")
# 最初のワークシートを取得します
sheet = workbook.Worksheets[0]
# 指定したピボットテーブルを取得します
pivotTable = sheet.PivotTables[0]
# 指定したフィールドを取得します
regoinField = pivotTable.PivotFields["支社名"]
# 「Region」フィールドの選択したアイテムの詳細を非表示にします
regoinField.HideItemDetail("東京支社", True)
regoinField.HideItemDetail("福岡支社", True)
# ドキュメントを保存します
workbook.SaveToFile("output/行を非表示にする.xlsx")
workbook.Dispose()
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。