找回密码
 立即注册
首页 业界区 安全 Python 在 Excel 中应用数据透视表

Python 在 Excel 中应用数据透视表

韩素欣 12 小时前
数据透视表是 Excel 最强大的数据分析工具之一,能快速实现海量数据的动态汇总、多维分析与交互式展示。用户能在不同角度上查看和比较数据,深入研究数据之间的关系和模式。 但是 Excel 同其他 Office 软件一样,想要高效办公就得付出大量时间和精力去学习高阶使用,而人工处理也在面对大量数据时显得力不从心。
幸运的是,利用好 Python 等编程语言,我们就可以使用几行浅显易懂的代码实现全自动处理数据,并生成所需 Excel 文件。而 Python 的 Spire.XLS 库就是这样一个绝佳的工具。 本文将介绍如何使用 Python 在 Excel 中应用数据透视表。
前期准备

为了实现纯代码操控 Excel 文档,本文中需要用到 Spire.XLS for Python 库,我们可以用以下两种方法安装。

  • 手动下载产品包后再从本地路径安装。
  • 通过命令行直接使用以下 pip 命令安装:
  1. pip install Spire.XLS
复制代码
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() 方法释放文档对象
  1. from spire.xls import *
  2. from spire.xls.common import *
  3. # 创建一个 Workbook 对象
  4. workbook = Workbook()
  5. # 加载原 Excel 文档
  6. workbook.LoadFromFile("Microsoft Excel 工作表.xlsx")
  7. # 获取第一个工作表
  8. sheet = workbook.Worksheets[0]
  9. # 指定透视表的数据范围
  10. cellRange = sheet.Range["A2:D28"]
  11. # 添加 CellRange 到 PivotCaches
  12. piVotCache = workbook.PivotCaches.Add(cellRange)
  13. # 通过PivotCaches添加透视表并设置位置
  14. pivotTable = sheet.PivotTables.Add("Pivot Table", sheet.Range["H4"],
  15.                                    piVotCache)
  16. # 设置透视表的行字段
  17. regionField = pivotTable.PivotFields["书店名称"]
  18. regionField.Axis = AxisTypes.Row
  19. pivotTable.Options.RowHeaderCaption = "书店名称"
  20. productField = pivotTable.PivotFields["书籍名称"]
  21. productField.Axis = AxisTypes.Row
  22. # 添加值字段
  23. pivotTable.DataFields.Add(pivotTable.PivotFields["销售数量(本)"], "总计销售数量(本)",
  24.                           SubtotalTypes.Sum)
  25. # 设置透视表的样式
  26. pivotTable.BuiltInStyle = PivotBuiltInStyles.PivotStyleMedium11
  27. # 设置透视表相应列的列宽
  28. h = sheet.Range["H4"]
  29. sheet.SetColumnWidth(h.Column, 18)
  30. sheet.SetColumnWidth(h.Column + 1, 20)
  31. # 保存文件
  32. workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)
  33. # 释放对象
  34. workbook.Dispose()
复制代码
结果预览:
1.png


(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() 方法释放文档对象
  1. from spire.xls import *
  2. from spire.xls.common import *
  3. # 创建一个 Workbook 对象
  4. workbook = Workbook()
  5. # 加载含有透视表的原 Excel 文档
  6. workbook.LoadFromFile("透视表.xlsx")
  7. # 获取第一个工作表
  8. sheet = workbook.Worksheets[0]
  9. # 获取第一个透视表
  10. pivotTable = sheet.PivotTables[0]
  11. # 获取要排序的字段
  12. idField = pivotTable.PivotFields["书店名称"]
  13. # 按升序排列
  14. idField.SortType = PivotFieldSortType.Ascending
  15. # 保存文件
  16. workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)
  17. # 释放对象
  18. workbook.Dispose()
复制代码
结果预览:
2.png


(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() 方法释放文档对象
  1. from spire.xls import *
  2. from spire.xls.common import *
  3. # 创建一个 Workbook 对象
  4. workbook = Workbook()
  5. # 加载含有透视表的原 Excel 文档
  6. workbook.LoadFromFile("透视表.xlsx")
  7. # 获取第一个工作表
  8. sheet = workbook.Worksheets[0]
  9. # 获取第一个透视表
  10. pivotTable = sheet.PivotTables[0]
  11. # 获取特定字段
  12. idField = pivotTable.PivotFields["书店名称"]
  13. # 设置展开或折叠
  14. idField.HideItemDetail("文化书店", True)
  15. idField.HideItemDetail("西门书店", False)
  16. idField.HideItemDetail("中原书店", False)
  17. # 保存文件
  18. workbook.SaveToFile("结果.xlsx", ExcelVersion.Version2016)
  19. # 释放对象
  20. workbook.Dispose()
复制代码
结果预览:
3.png


(Python 展开或折叠数据透视表)
小结

在本教程中,我们了解了 Python 创建透视表、Python 按列值对透视表进行排序和 Python 展开或折叠透视表中的行的方法。
如果您有任何问题,或者想要了解更多,欢迎访问我们的主页!同时也欢迎您在评论区留言,交流感想。
关于 Spire.XLS for Python

该步骤及以下所有相同步骤在实际使用中一般不强求,因为 Python 程序一般会在运行结束后自动完成该操作,即释放对象。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册