チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Python»Spire.XLS for Python»ピボットテーブル»Python で Excel ピボットテーブルを作成・操作する方法
2025-06-13

Python で Excel ピボットテーブルを作成・操作する方法

ピボットテーブルは、データをさまざまな視点から整理、集計、分析できる柔軟な手段であり、有益なインサイトの発見や的確な意思決定に役立ちます。カテゴリ、日付、数値などの条件に基づいてデータを簡単に並べ替えたり要約したりできるため、複雑なデータセットの処理や多角的な比較分析に特に便利です。

本記事では、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 で Excel ピボットテーブルを作成するコードとその実行結果

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 コードによって Excel のピボットテーブルを列の値で並べ替えた結果

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()

Python を使ってピボットテーブルの行を展開・折りたたみした Excel の表示結果

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 23 times