前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python生成自动化报告

python生成自动化报告

作者头像
三猫
发布2022-01-11 07:59:58
8630
发布2022-01-11 07:59:58
举报

导读:日常工作中,我们经常要进行一些本地的数据统计,如期末考试每个班级的表现情况、每日运营指标完成情况统计等。并不是所有的这些统计需求都值得搭建一个前端页面进行展示,此时不妨在本地开发一个自动化统计报告生成的代码,帮助自己对工作有个整体性了解的同时,也便于汇报及展示。python作为数据分析人员常用的工具之一,其中的openpyxl模块可以便捷灵活的处理excel,当我们设计好报告模板,将对应数据进行统计插入,就可生成一份报告。

1设计报告模板

通过openpyxl是可以直接在代码中进行报告样式的生成,但当报告涉及的元素过多时,代码编辑报告样式需要反复确认修改的过程较为繁琐,而通过在excel中创建好样式模板、再导入python中的方法较为方便。

我们本次使用的样例数据为某电商平台各产品近一年的销售情况👇

现在希望可以按月生成一份记录销售情况的报告。根据需求,用excel设计一个报告模板👇

2python生成

根据模板可知,一共有三个部分需要动态填入数据,分别是:头部日期、本月总销售情况和近一年累计销售情况。针对三个部分分别封装三个函数,用以填入相应数据。

  • 头部日期部分: 选择指定的sheet,通过要填入单元格的行列选定位置,进行数据值传入。此处传入的是报告生成时间。
代码语言:javascript
复制
def header_tm(wb2,data,sheet,baserow=2):
    sheet1 = wb2[sheet]
    sheet1.cell(baserow, 8).value = str(datetime.now().date()).replace('-', '.')
    return wb2
  • 本月总销售情况部分: 计算相应数据,并依次填入对应位置单元格。
代码语言:javascript
复制
def part1(wb2,data,sheet,baserow=2):
    sheet1 = wb2[sheet]
    sheet1.cell(baserow, 2).value = data.iloc[:,-2].sum()
    sheet1.cell(baserow, 4).value = (data.iloc[:,-2].sum()-data.iloc[:,-3].sum())/data.iloc[:,-3].sum()
    sheet1.cell(baserow, 6).value = len(data[data.iloc[:,-2].notnull()])
    sheet1.cell(baserow, 8).value = (len(data[data.iloc[:,-2].notnull()])-len(data[data.iloc[:,-3].notnull()]))/len(data[data.iloc[:,-3].notnull()])
    return wb2
  • 近一年累计销售情况部分:
代码语言:javascript
复制
def part2(wb2,data,sheet,baserow=2):
    sheet1 = wb2[sheet]
    sheet1.cell(baserow, 3).value = data.iloc[:,-1].sum()
    sheet1.cell(baserow, 5).value = data.iloc[:,-1].sum()/12
    sheet1.cell(baserow, 7).value = len(data[data.iloc[:,-1].notnull()])
    return wb2

各部分数据填入代码封装完毕,使用时通过主函数进行调用即可👇

代码语言:javascript
复制
if __name__ == '__main__':
    record_tbl = pd.read_excel('data.xlsx')
    wb2 = load_workbook('model.xlsx')
    wb2 = header_tm(wb2,record_tbl,baserow=5,sheet = 'Sheet1')
    wb2 = part1(wb2,record_tbl,baserow=15,sheet = 'Sheet1')
    wb2 = part2(wb2,record_tbl,baserow=20,sheet = 'Sheet1')
    name = '报告生成结果.xlsx'
    wb2.save(name)

报告结果如下:

后台回复“报告”获取代码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习养成记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档