ピボットテーブルは、データをさまざまな視点から整理、集計、分析できる柔軟な手段であり、有益なインサイトの発見や的確な意思決定に役立ちます。カテゴリ、日付、数値などの条件に基づいてデータを簡単に並べ替えたり要約したりできるため、複雑なデータセットの処理や多角的な比較分析に特に便利です。 本記事では、Spire.XLS for Python を使用して、Python で Excel 文書内のピボットテーブルを作成または操作する方法を紹介します。 Python で Excel にピボットテーブルを作成する Python でピボットテーブルを列の値で並べ替える Python でピボットテーブルの行を展開・折りたたむ 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 日間有効な一時ライセンスを取得してください。