数据透视表是 Excel 最强大的数据分析工具之一,能快速实现海量数据的动态汇总、多维分析与交互式展示。用户能在不同角度上查看和比较数据,深入研究数据之间的关系和模式。 但是 Excel 同其他 Office 软件一样,想要高效办公就得付出大量时间和精力去学习高阶使用,而人工处理也在面对大量数据时显得力不从心。
幸运的是,利用好 Python 等编程语言,我们就可以使用几行浅显易懂的代码实现全自动处理数据,并生成所需 Excel 文件。而 Python 的 Spire.XLS 库就是这样一个绝佳的工具。 本文将介绍如何使用 Python 在 Excel 中应用数据透视表。
前期准备
为了实现纯代码操控 Excel 文档,本文中需要用到 Spire.XLS for Python 库,我们可以用以下两种方法安装。
- 手动下载产品包后再从本地路径安装。
- 通过命令行直接使用以下 pip 命令安装:
Python 在 Excel 中创建透视表
从最简单的部分开始——要在 Excel 中创建透视表,请按照以下步骤操作:
- 使用 Workbook.LoadFromFile() 方法加载一个现有的 Excel 文档
- 通过 Workbook.Worksheets[index] 属性获取指定的工作表
- 使用 Worksheet.Range 属性指定透视表的单元格数据范围
- 使用 Workbook.PivotCaches.Add() 方法创建 PivotCache 对象
- 使用 Worksheet.PivotTables.Add() 方法根据 PivotCache 创建透视表
- 添加行字段
- 添加值字段
- 使用 PivotTable.PivotBuiltInStyles 设置内置样式到透视表
- 使用 Workbook.SaveToFile() 方法保存结果文档
- 使用 Workbook.Dispose() 方法释放文档对象
- from spire.xls import *
- from spire.xls.common import *
- # 创建一个 Workbook 对象
- workbook = Workbook()
- # 加载原 Excel 文档
- workbook.LoadFromFile("Microsoft Excel 工作表.xlsx")
- # 获取第一个工作表
- sheet = workbook.Worksheets[0]
- # 指定透视表的数据范围
- cellRange = sheet.Range["A2:D28"]
- # 添加 CellRange 到 PivotCaches
- piVotCache = workbook.PivotCaches.Add(cellRange)
- # 通过PivotCaches添加透视表并设置位置
- pivotTable = sheet.PivotTables.Add("Pivot Table", sheet.Range["H4"],
- piVotCache)
- # 设置透视表的行字段
- regionField = pivotTable.PivotFields["书店名称"]
- regionField.Axis = AxisTypes.Row
- pivotTable.Options.RowHeaderCaption = "书店名称"
- productField = pivotTable.PivotFields["书籍名称"]
- productField.Axis = AxisTypes.Row
- # 添加值字段
- pivotTable.DataFields.Add(pivotTable.PivotFields["销售数量(本)"], "总计销售数量(本)",
- SubtotalTypes.Sum)
- # 设置透视表的样式
- pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleMedium11
- # 设置透视表相应列的列宽
- h = sheet.Range["H4"]
- sheet.SetColumnWidth(h.Column, 18)
- sheet.SetColumnWidth(h.Column + 1, 20)
- # 保存文件
- workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)
- # 释放对象
- workbook.Dispose()
复制代码 结果预览:
(Python 在 Excel 中创建数据透视表)
Python 按列值对透视表进行排序
使用 Spire.XLS,让我们在 Python 中得以通过列值对透视表进行排序。首先,通过 PivotTable.PivotFields["FieldName"] 属性访问特定字段,然后使用 PivotField.SortType 属性设置其排序类型。
以下是按照特定字段的值对透视表进行排序的步骤:
- 使用 Workbook.LoadFromFile() 方法加载含有透视表的原 Excel 文档
- 通过 Workbook.Worksheets[index] 属性获取特定的工作表
- 通过 Worksheet.PivotTables[index] 属性从工作表中获取特定的透视表
- 通过 PivotTable.PivotFields["FieldName"] 属性获取特定的字段
- 通过 PivotField.SortType 属性对该字段中的数据进行排序
- 使用 Workbook.SaveToFile() 方法保存结果文件
- 使用 Workbook.Dispose() 方法释放文档对象
- from spire.xls import *
- from spire.xls.common import *
- # 创建一个 Workbook 对象
- workbook = Workbook()
- # 加载含有透视表的原 Excel 文档
- workbook.LoadFromFile("透视表.xlsx")
- # 获取第一个工作表
- sheet = workbook.Worksheets[0]
- # 获取第一个透视表
- pivotTable = sheet.PivotTables[0]
- # 获取要排序的字段
- idField = pivotTable.PivotFields["书店名称"]
- # 按升序排列
- idField.SortType = PivotFieldSortType.Ascending
- # 保存文件
- workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)
- # 释放对象
- workbook.Dispose()
复制代码 结果预览:
(Python 按列值对数据透视表排序)
Python 展开或折叠透视表中的行
若是想在 Python 中展开或折叠数据透视表中的行,可以使用 PivotField.HideItemDetail(string itemValue, bool isHiddenDetail) 方法来实现。
将第二个参数设置为 true 为折叠效果;反之,设置为 false 为展开效果。
详细步骤如下:
- 使用 Workbook.LoadFromFile() 方法加载含有透视表的原 Excel 文档
- 通过 Workbook.Worksheets[index] 属性获取特定的工作表
- 通过 Worksheet.PivotTables[index] 属性从工作表中获取特定的透视表
- 通过 PivotTable.PivotFields["FieldName"] 属性获取特定的字段
- 通过 PivotField.HideItemDetail(string itemValue, bool isHiddenDetail) 方法针对具体项折叠或展开
- 使用 Workbook.SaveToFile() 方法保存结果文件
- 使用 Workbook.Dispose() 方法释放文档对象
- from spire.xls import *
- from spire.xls.common import *
- # 创建一个 Workbook 对象
- workbook = Workbook()
- # 加载含有透视表的原 Excel 文档
- workbook.LoadFromFile("透视表.xlsx")
- # 获取第一个工作表
- sheet = workbook.Worksheets[0]
- # 获取第一个透视表
- pivotTable = sheet.PivotTables[0]
- # 获取特定字段
- idField = pivotTable.PivotFields["书店名称"]
- # 设置展开或折叠
- idField.HideItemDetail("文化书店", True)
- idField.HideItemDetail("西门书店", False)
- idField.HideItemDetail("中原书店", False)
- # 保存文件
- workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)
- # 释放对象
- workbook.Dispose()
复制代码 结果预览:
(Python 展开或折叠数据透视表)
小结
在本教程中,我们了解了 Python 创建透视表、Python 按列值对透视表进行排序和 Python 展开或折叠透视表中的行的方法。
如果您有任何问题,或者想要了解更多,欢迎访问我们的主页!同时也欢迎您在评论区留言,交流感想。
关于 Spire.XLS for Python
该步骤及以下所有相同步骤在实际使用中一般不强求,因为 Python 程序一般会在运行结束后自动完成该操作,即释放对象。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |