excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Python与数据分析:分析与汇总图书销售订单数据

问题的提出

“图书销售订单数据.xlsx”是某出版单位通过网络平台销售的图书订单数据,时间从2018年到2021年。

要求通过“下单时间”字段按年度汇总图书销售月度订单数据,汇总字段为订单总额、订单数量、折扣总额。汇总结果写入到新EXCEL文件,汇总的年度名称为工作表名称,汇总结果如下图所示。

编程思路

分析数据,确定需要汇总的字段

观察“下单时间”字段,该字段时间格式为“yyyy-mm-dd hh:mm:ss”,可以从该字段获取日期和时间。“订单价格”字段为每个订单的支付金额,对该字段在年度内按月累加汇总,汇总结果字段为“订单总额”。“折扣”字段为每个订单的折扣金额,对该字段在年度内按月累加汇总,汇总结果字段为“折扣总额”。汇总结果字段“订单数量”的汇总字段,需要认真分析,要求该字段的值不能重复,才能汇总出正确的订单数量,仔细观察所有字段,“订单编号”字段满足“订单数量”汇总需求。

分析需求,梳理汇总思路

订单数据范围为2018~2021年,需要汇总出2018年、2019年、2020年、2021年的月度订单数据。

按“下单时间”字段以月分组,在分组过程中同时进行“订单价格”、“折扣”、“订单编号”字段的聚合。“订单价格”、“折扣”字段进行累加聚合,“订单编号”字段进行数量聚合。分组聚合后的数据再按“下单时间”字段以年分组,至此完成订单数据的汇总统计并写入EXCEL文件。

程序设计

案例需求相对简单,程序代码编写到一个模块即可。程序流程如下图所示。

程序需要导入Pandas库,Pandas库的read_excel()函数可以直接读取EXCEL数据,并返回DataFrame数据对象。

DataFrame数据对象的groupby()函数可以对DataFrame按条件分组并聚合指定的字段,分组聚合返回的数据还是DataFrame数据对象。分组条件是按月分组,分组字段为“下单时间”,应用Pandas的Groupy()函数为groupby()函数设置按月分组指令。

得到按月分组的DataFrame数据对象后,再次应用groupby()函数对数据按年分组。最后调用Pandas的ExcelWriter对象将分组数据写入EXCEL文件。

程序编码

所有程序代码放置在一个模块内,EXCEL数据文件与程序需要在同一个目录。

# 导入pandas库

import pandas as pd

# EXCEL路径

seal_path ="图书销售订单数据.xlsx"

# EXCEL输出路径

excel_path="summary.xlsx"

# 新工作表名称

sheet_name ="月汇总"

# 程序入口

if __name__ == '__main__':

# 读取EXCEL文件,读取订单工作表

df = pd.read_excel(seal_path,sheet_name='Sheet2')

# 调用DataFrame对象的groupby以字段“下单时间”按月分组

df_group=df.groupby(pd.Grouper(key="下单时间",axis=0, freq='M')).agg({"订单价格":"sum","订单编号":"count","折扣":"sum"})

# 修改索引名称

df_group = df_group.rename(columns={"订单价格":"订单总额","订单编号":"订单数量","折扣":"折扣总额"})

# 按年度分组

df_group.insert(0,"下单时间",df_group.index)

df_group=df_group.groupby(pd.Grouper(key="下单时间",freq='Y'))

# 输出到EXCEL

# 实例化ExcelWriter对象

writer = pd.ExcelWriter(excel_path)

for name,data in df_group:

data.to_excel(writer,index=False,sheet_name=str(name.year))

# 调用writer对象的save方法保存EXCEL文件

writer.save()

# 关闭文件

writer.close()

Grouper()函数允许用户为目标对象指定groupby指令,参数key为分组的字段名称,参数freq设置时间分组频率。例如:freq='Y'按年分组,freq='M'按月分组,freq='120Min'按两小时分组。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接