如何使用Python实现Excel数据透视表的自动化生成?
Python自动化创建Excel数据透视表的两种实用方法
方法一:用Pandas快速生成透视表(适合批量处理后导出)
Pandas是Python数据处理的利器,能快速生成透视表并导出到Excel,适合不需要后续在Excel中编辑透视表的场景。
- 安装依赖
pip install pandas openpyxl
- 示例代码
import pandas as pd # 读取Excel数据源文件 df = pd.read_excel('数据源.xlsx', sheet_name='Sheet1') # 创建数据透视表 # 按需修改参数:index=行标签,columns=列标签,values=统计字段,aggfunc=聚合函数 pivot_df = pd.pivot_table( df, index=['部门'], # 行标签,对应Excel透视表的行区域 columns=['季度'], # 列标签,对应Excel透视表的列区域 values=['销售额'], # 需要统计的字段 aggfunc='sum', # 聚合方式:sum/mean/count等 fill_value=0, # 空值填充为0 margins=True, # 显示总计行/列 margins_name='总计' # 总计的名称 ) # 将透视表导出到新的Excel文件 with pd.ExcelWriter('透视表结果.xlsx', engine='openpyxl') as writer: pivot_df.to_excel(writer, sheet_name='透视表')
- 参数说明
index:设置透视表的行分组字段,可传入多个字段(如['部门', '员工'])columns:设置透视表的列分组字段values:需要计算的数值字段,支持多个字段aggfunc:聚合函数,可传入字典为不同字段设置不同聚合方式(如{'销售额':'sum', '订单数':'count'})
方法二:用OpenPyXL创建Excel原生透视表(保留交互性)
如果需要生成和手动创建一致的、可在Excel中编辑的原生透视表,用OpenPyXL直接操作Excel对象是更好的选择。
- 安装依赖
pip install openpyxl
- 示例代码
from openpyxl import load_workbook from openpyxl.pivot import PivotTable, PivotCache # 加载现有Excel工作簿 wb = load_workbook('数据源.xlsx') ws_data = wb['Sheet1'] # 数据源工作表 ws_pivot = wb.create_sheet('透视表') # 创建存放透视表的新工作表 # 创建透视表缓存(关联数据源) pivot_cache = PivotCache(wb, ref=ws_data.dimensions) wb._pivots.append(pivot_cache) # 创建透视表,指定位置(这里从A1单元格开始) pivot_table = PivotTable( pivot_cache, ref="A1", name="销售透视表", rows=[ws_data['A1'].value], # 行字段:对应数据源的A列表头(如"部门") cols=[ws_data['B1'].value], # 列字段:对应数据源的B列表头(如"季度") data=[ws_data['C1'].value], # 值字段:对应数据源的C列表头(如"销售额") dataFields=[{'name': ws_data['C1'].value, 'func': 'sum'}] # 设置聚合方式为求和 ) # 将透视表添加到工作表 ws_pivot.add_pivot(pivot_table) # 保存工作簿 wb.save('原生透视表结果.xlsx')
- 注意事项
- 数据源工作表不能有合并单元格,表头必须是单行且清晰
rows、cols、data参数传入的是数据源表头的文本内容,确保和实际表头一致- 如果需要多个行/列字段,可传入列表(如
rows=['部门', '员工'])
自动化定期执行
如果需要定期生成透视表,可以把代码保存为.py脚本,通过以下方式定时运行:
- Windows:使用「任务计划程序」创建定时任务,执行
python 你的脚本路径.py - Linux/macOS:使用
cron定时任务,添加执行命令
内容的提问来源于stack exchange,提问作者Hadi
相关产品推荐
相关产品推荐

