考虑用【Python】制作一份自动化报表

所需库:pandas、datetime,其他酌情选择(numpy、etc.)

受众:适合稍有一点python基础的朋友

注:本文所作python处理仅针对报表的数据部分,表格设计部分题主认为还是直接上Excel比较快(可以考虑的方法是复制粘贴数据到表格框架中,粘贴时选择“值(v)”

一、实现目标:

假设我们的目标是要做出一个这样的表格,并填入数据。

上表所需基础数据为消费金额、消费人数、消费件数、消费次数4个基础指标,基础指标的原数据获取和计算因人而异,本文假设均为已知变量。

二、代码实现:

2.1 创建表格

import pandas as pd

# ItemID
ItemID_list = ['X0001','X0002']   # 也可以通过Excel/csv等导入
KPI_list = ['消费金额','消费人数','消费件数','消费次数','人均消费金额','人均消费件数','人均消费次数','平均单件消费']
month_range = ['10月','9月']
year_range = ['2024','2023','增长率']

# establish the form
form = pd.DataFrame(index=pd.MultiIndex.from_product([ItemID_list,
                                                      KPI_list]),
                    columns=pd.MultiIndex.from_product([month_range,
                                                        year_range]))

form = form.rename_axis(index=['产品ID','KPI'],columns=['',''])

form

2.2 填入数据

如下为假设的基础数据指标计算/查询结果,接下来用这一数据导入表格:

# 此处省略一堆基础指标的计算/获取过程
# 假设基础指标现在为已知数据,且储存格式如下:
# [产品ID,起始时间,结束时间,消费金额,消费人数,消费件数,消费次数]
data = [['X0001','2024-10-01','2024-10-31',10000,120,125,122],
        ['X0001','2024-09-01','2024-09-30',20000,130,135,132],
        ['X0001','2023-10-01','2023-10-31',30000,140,145,142],
        ['X0001','2023-09-01','2023-09-30',40000,150,155,152],
        ['X0002','2024-10-01','2024-10-31',50000,160,165,162],
        ['X0002','2024-09-01','2024-09-30',60000,170,175,172],
        ['X0002','2023-10-01','2023-10-31',70000,180,185,172],
        ['X0002','2023-09-01','2023-09-30',80000,190,195,192],
        ]

处理时间数据时,样例中每一时期均对应一个月。

导入:

import datetime
basic_indic = ['消费金额','消费人数','消费件数','消费次数']
deriv_indic = ['人均消费金额','人均消费件数','人均消费次数','平均单件消费']

for i in range(len(data)):
    line = data[i]
    ID = line[0]
    time = datetime.datetime.strptime(line[1], '%Y-%m-%d')
    year,month = time.year,time.month
    
    # 填补基础数据
    form.loc[(ID,basic_indic),(str(month)+'月',str(year))] = line[3:7]
    
    # 提取每一指标的值
    sales,consumers,quantity,trans = line[3:7]
    
    # 计算衍生指标的值
    sales_pc = sales/consumers
    quantity_pc = quantity/consumers
    trans_pc = trans/consumers
    sales_unit = sales/quantity
    
    # 填入衍生指标结果
    form.loc[(ID,deriv_indic),(str(month)+'月',str(year))] = [sales_pc,quantity_pc,trans_pc,sales_unit]

# 计算增长率
for j in range(len(form)):
    form.iloc[j,2] = (form.iloc[j,0]-form.iloc[j,1])/form.iloc[j,1]
    form.iloc[j,5] = (form.iloc[j,3]-form.iloc[j,4])/form.iloc[j,4]

2.3 导出为 Excel / csv

# 设定保存路径
save_path = 'C:/Users/XXXX/Desktop/'

# 导出为excel
form.to_excel(save_path + 'statement.xlsx',header=True,index=True)

导出后的Excel效果如下:

需要做表格设计的朋友可以直接复制粘贴数据到现有的表格框架中,粘贴时选择“值(v)”,也可以直接在导出的表格上做修改。

三、结语:

如上为本次分享的一点点tips,当需要更新的数据量特别大,但是计算/查询过程相似度又很高时,可以考虑使用python来帮助做一件化繁为简、一劳永逸的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值