首页 > 编程语言 >一篇文章教你用python玩转数据透视表PivotTable

一篇文章教你用python玩转数据透视表PivotTable

时间:2024-09-27 10:21:56浏览次数:16  
标签:PivotTable 读取 pt field python 透视 教你用 ## 筛选

目录

建数据透视表

 

配置行列字段

添加列字段

配置“值字段”

 

关闭分类汇总

设置表格形式显示

读取数据来透视表内容

读取rowfield的内容

读取value field的内容

筛选透视表

添加行标签筛选

添加筛选标签(Pagefield)

排序透视表


 

本文主要介绍excel的数据透视表常见的操作。基本上涵盖了基本操作。

下面,先看看我们到处理的表格中的数据:

 

e37c517795ff12885b068693a7a27e4b.png

建数据透视表

先打开一个准备数据的excel文件,然后插入一个新的数据透视表。
import win32com.client as win32
from win32com.client import constants
import os
xls_app = win32.gencache.EnsureDispatch('Excel.Application')
curr_path = os.getcwd()
## 打开excel文件
wb = xls_app.Workbooks.Open(r'%s\数据透视表示例.xlsx'%curr_path)
xls_app.Visible = True # 显示excel界面,默认为隐藏
## 
ws = wb.Worksheets(1)

## 添加透视表的数据源
SrcData = ws.Range("A1:D6")
## 添加一个新的sheet,用于存放生成的透视表
pt_sht = wb.Worksheets.Add()
pt_sht.Name = "透视表"
StartPvt = pt_sht.Range("A1") ## 设置透视表插入位置
## 创建数据透视表
pt_cache = wb.PivotCaches().Create(SourceType=constants.xlDatabase, SourceData=SrcData)
pt = pt_cache.CreatePivotTable(TableDestination=StartPvt,  TableName="PivotTable1")

到此,可以在excel中看到如下效果。

 

530adb5e00311e2e7fc550d09c061dab.png

 

配置行列字段

## 添加行字段

pt.AddFields(RowFields=["部门","年龄"])

 

01ff98430a04901720b684fd92538948.png

添加列字段

pt.AddFields(ColumnFields=["部门","年龄"])

配置“值字段”

## 添加值字段 
pt.AddDataField(Field=pt.PivotFields("姓名"))

 

c1951637e98e69129ac306da10badcb4.png

 

关闭分类汇总

遍历每个域,逐个关闭分类汇总
for i in range(1,pt.RowFields.Count + 1):
	field = pt.PivotFields(i)
	subtotal_tuple = (field.Subtotals)
	subtotal_list = list(subtotal_tuple)
	for k in range(len(subtotal_tuple)):
		subtotal_list[k] = False
	field.Subtotals = subtotal_list

 

 

adcb5d0098b84bd93924b3ca15fd8428.png

设置表格形式显示

# 设置为表格形式显示 
pt.RowAxisLayout (constants.xlTabularRow)

 

2cf279628d0567f71503a31041e1dc3b.png

读取数据来透视表内容

 

读取rowfield的内容

可以直接通过读取sheet内容来读取透视表,还可以通过透视表的对象来读取。这里展示的是通过后者的方式

for pvtField in pt.RowFields:
	print(pvtField.Name)
	for item in pvtField.PivotItems():
		print('    '+item.Name)

示例中pvtField.Name为行field的标题栏,item.Name为行field的成员内容

执行结果为:

部门 
        采购 
        市场 
        行政 
        研发 
年龄 
        21 
        22 
        24 
        30 
        33 
        35 
        44

读取value field的内容

可以使用PivotValueCell直接读取透视表“值”的内容

print(pt.PivotValueCell(1, 1).Value)

这是读取第一个value单元格的内容,执行结果为:

1.0

 

筛选透视表

添加行标签筛选

pt_filter = pt.PivotFields("年龄").PivotFilters.Add2(Type=constants.xlCaptionIsLessThan,Value1="28")

参数还是写为立即数(即Valued=28),也OK。看起来对这个参数的数据类型比较宽泛。

筛选的效果:

 

b619a21f93d04257d5bcd3db577a9707.png

 

注意:过滤类型种有一个关于Value的筛选类型,这个是试用于“值筛选”的功能。

 

添加筛选标签(Pagefield)

 

c87065d030111baeb37c1ae7880bdd14.png

示例代码:

pt.PivotFields("日期").Orientation = constants.xlPageField

设置筛选值:

pt.PivotFields("日期").CurrentPage = '10/11/2022'

排序透视表

# 排序 
pt.ClearAllFilters()# 关闭所有的筛选 pt.PivotFields("年龄").AutoSort(Order=constants.xlAscending, Field='年龄')# 按照年龄升序排序
排序效果:

 

4636de661733c5afe0e4753aa396e7c1.png

排序效果使用的autosort方法的参数如下图:

 

2f75c5a917ac0f5a3ecc8d8da405d137.png

 

标签:PivotTable,读取,pt,field,python,透视,教你用,##,筛选
From: https://blog.csdn.net/flashman911/article/details/142467489

相关文章

  • python在word文档中搜索关键词,复制段落
    目录简介:打开原始word文档创建一个新的文档(存放摘抄内容)搜索关键词复制和粘贴匹配的段落简介:本文示例的流程:打开一个word文档,搜索关键词所在的段落,并将对应段落复制粘贴到新的word文档中,并标记出处文件名和页码。可以用来批量对word文档进行提取。打开原始word文......
  • python最经典基础算法题-10
    题目001:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n【思路】:学了lambda想耍一下,结果发现官网写的比我还简洁!n=17fenmu=range(2,n+1,2)ifn%2==0elserange(1,n+1,2)s=sum(map(lambdax:1/x,fenmu))print(s)#官网参考......
  • Python实现:时间序列趋势外推法应用-龚珀兹曲线拟合
    龚珀兹曲线下表数据为某跨国公司1989-2021年的年销售量数据,使用适合的模型预测该公司2022年的销售额,并得出理由。部分数据如下表(具体数据从主页资源下载):年份时序(t)总额(yt)时序应该从0开始19891138.40019902174.00119913190.55219924196.10319935230.50419946237.10519957274.......
  • Python画笔案例-064 绘制彩花之旋转羽毛
    1、绘制彩花之旋转羽毛通过python的turtle库绘制彩花之旋转羽毛,如下图:2、实现代码 绘制彩花之旋转羽毛,以下为实现代码:"""彩花之旋转羽毛.py本程序需要coloradd模块支持,安装方法:pipinstallcoloradd技术支持微信scartch8,QQ:406273900www.lix......