当前位置: 首页 > 后端技术 > Python

还在为多个Excel汇总统计而烦恼吗?Python二次加工真香!

时间:2023-03-25 20:04:27 Python

为什么越来越多的非程序员白领开始学习Python?他们可能不想学习Python去爬一些网站来获得炫酷的成就感,但是在工作中遇到很多数据分析和处理的问题,用Python就可以简单高效的解决。本文通过一个实际的例子,向大家展示在实际工作中如何应用Python高效解决复杂问题。背景小明在一家户外运动特许经营公司工作。他们公司有很多品牌,涉及很多细分行业。小明在这家公司做数据分析师,平时用Excel做数据分析。今天,老板给他布置了一个任务:下班前筛选出集团公司最近一年前五名的品牌和销售额。对于Excel大佬们来说,这不就是分分钟的事吗?小明没有理会。直到市场部的同事将原始数据文件发给他,他才发现事情并没有那么简单:并不是想象中的前五名那么简单。共有90个文件。按照常规思路,他要么将所有文件的内容复制到一张表中进行分类汇总,要么将每一张表进行分类汇总,然后再进行分类汇总,得到最终的结果。想想工作量和期限,小明挠了挠头,感觉自己的头要渐渐秃了。通过思考和分析,编写程序来解决这种体力劳动是最简单的。小明这时候想起了自己的程序员朋友小段,便把这个问题抛给了小段。小段拨了拨自己的小头发,道:好简单,问潘爷就知道了。”小明说:“你想不通?找别人!小段苦笑道:不不不,盘大师是Python中的一个数据处理库,叫做Pandas,俗称盘大师。小明说:我不管我是不是高手,我就说要多久搞定。小段说:给我几分钟写程序,然后跑几秒!小明发出了崇拜老板的表情。小段想了想,整理出程序思路:计算每张表每一行的销售额,用“访客数、转化率、客单价”。按品牌汇总每张表的销售额。将所有表的结果汇总成一个汇总表。在汇总表中,按品牌汇总销售额,并按代码排序。第0步,读取Excel:先importpandasaspddf=pd.read_excel("./tables/"+name)第一步计算每个表的销售额:df['sales']=df['numberofvisitors']*df['转化率']*df['客单价']第二步转换每个表按品牌汇总销售额:df_sum=df.groupby('品牌')['销售额'].sum().reset_index()第三步,将所有表的结果汇总成一个总表:result=pd.DataFrame()result=pd.concat([result,df_sum])第四步,汇总排序total表中按品牌的sales:final=result.groupby('brand')['sales'].sum().reset_index().sort_values('Sales',ascending=False)最后我们看一下完整程序:将pandas导入为pdimportosresult=pd.DataFrame()fornameinos.listdir("./tables"):尝试:df=pd.read_excel("./tables/"+name)df['sales']=df['访客数']*df['转化率']*df['客单价']df_sum=df.groupby('品牌')['销量s'].sum().reset_index()result=pd.concat([result,df_sum])除了:print(name)passfinal=result.groupby('brand')['Sales'].sum().reset_index().sort_values('Sales',ascending=False)pd.set_option('display.float_format',lambdax:'%.2f'%x)print(final.head())的最终结果是这样的:BrandSales15Brand-51078060923.628Brand-171064495314.964Brand-131038560274.213Brand-121026115153.0013Brand-31006908609.07几分钟后就可以看到最后的前五名了运行整个程序,小段把结果发给了小明。小明感动不已,叫改天一起吃饭,向老师学习!综上所述,本文主要是想通过一个实际案例向大家展示一下潘大师(Pandas)的魅力,尤其是应用于这种表格处理时,可以说是太方便了。写过程序的人可能会觉得有点眼熟。这种处理方式有点类似于SQL查询语句。潘大师不仅可以让我们的程序处理更加简单高效,而且对于需要经常处理表格的非程序员也非常友好,上手也比较容易。以上就是本次分享的全部内容。想了解更多python知识,请前往公众号:Python编程学习圈,发“J”免费领取,每日干货分享