利用python汇总统计多张Excel


Posted in Python onSeptember 22, 2020

为什么越来越多的非程序员白领都开始学习 Python ?他们可能并不是想要学习 Python 去爬取一些网站从而获得酷酷的成就感,而是工作中遇到好多数据分析处理的问题,用 Python 就可以简单高效地解决。本文就通过一个实际的例子来给大家展示一下 Python 是如何应用于实际工作中高效解决复杂问题的。

背景

小明就职于一家户外运动专营公司,他们公司旗下有好多个品牌,并且涉及到很多细分的行业。小明在这家公司任数据分析师,平时都是通过 Excel 来做数据分析的。今天老板丢给他一个任务:下班前筛选出集团公司旗下最近一年销售额前五名的品牌以及销售额。

对于 Excel 大佬来说,这不就是分分钟的事吗?小明并没有放在眼里,直到市场部的同事将原始的数据文件发给他,他才意识到事情并没有那么简单:

利用python汇总统计多张Excel

这并不是想象中的排序取前五就行了。这总共有90个文件,按常规的思路来看,他要么将所有文件的内容复制到一张表中进行分类汇总,要么将每张表格进行分类汇总,然后再最最终结果进行分类汇总。

想想这工作量,再想想截止时间,小明挠了挠头,感觉到要渐渐头秃。

思路分析

这种体力活,写程序解决是最轻松的啦。小明这时候想到了他的程序员好朋友小段,于是他把这个问题抛给了小段。

小段缕了下他那所剩无几的头发,说:so easy,只需要找潘大师即可。

小明说:你搞不定吗?还要找其他人!

小段苦笑说:不不不,潘大师是 Python 里面一个处理数据的库,叫 Pandas ,俗称 潘大师。

小明说:我不管什么大师不大师,就说需要多久搞定。

小段说:给我几分钟写程序,再跑几秒钟就好了!

小明发过去了膜拜大佬的表情。

小段略微思考了下,整理了一下程序思路:

  • 计算每张表每一行的销售额,用“访客数 * 转化率 * 客单价”就行。
  • 将每张表格根据品牌汇总销售额。
  • 将所有表格的结果汇总成一张总表
  • 在总表中根据品牌汇总销售额并排序

编码

第零步,读取 Excel :

import pandas as pd

df = pd.read_excel("./tables/" + name)

第一步,计算每张表格内的销售额:

df['销售额'] = df['访客数'] * df['转化率'] * df['客单价']

第二步,将每张表格根据品牌汇总销售额:

df_sum = df.groupby('品牌')['销售额'].sum().reset_index()

第三步,将所有表格的结果汇总成一张总表:

result = pd.DataFrame()
result = pd.concat([result, df_sum])

第四步,在总表中根据品牌汇总销售额并排序:

final = result.groupby('品牌')['销售额'].sum().reset_index().sort_values('销售额', ascending=False)

最后,我们来看看完整的程序:

import pandas as pd
import os

result = pd.DataFrame()

for name in os.listdir("./tables"):
  try:
    df = pd.read_excel("./tables/" + name)
    df['销售额'] = df['访客数'] * df['转化率'] * df['客单价']
    df_sum = df.groupby('品牌')['销售额'].sum().reset_index()
    result = pd.concat([result, df_sum])
  except:
    print(name)
    pass

final = result.groupby('品牌')['销售额'].sum().reset_index().sort_values('销售额', ascending=False)
pd.set_option('display.float_format', lambda x: '%.2f' % x)
print(final.head())

最后的结果是这样的:

品牌  销售额
15 品牌-5 1078060923.62
8 品牌-17 1064495314.96
4 品牌-13 1038560274.21
3 品牌-12 1026115153.00
13 品牌-3 1006908609.07

可以看到最终的前五已经出来了,整个程序运行起来还是很快的。

几分钟之后,小段就把结果给小明发过去了,小明感动得内牛满面,直呼改天请吃饭,拜师学艺!

总结

本文主要是想通过一个实际的案例来向大家展示潘大师(Pandas)的魅力,特别是应用于这种表格处理,可以说是太方便了。写过程序的可能都有点熟悉的感觉,这种处理方式有点类似于 SQL 查询语句。潘大师不仅能使我们的程序处理起来变得更简单高效,对于需要经常处理表格的非程序员也是非常友好的,上手起来也比较简单。

示例代码:https://github.com/JustDoPython/python-examples/tree/master/xianhuan/pandasexcel

以上就是利用python汇总统计多张Excel的详细内容,更多关于python汇总统计多张Excel的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python自动化运维之IP地址处理模块详解
Dec 10 Python
详解python实现线程安全的单例模式
Mar 05 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
关于python多重赋值的小问题
Apr 17 Python
python实现飞机大战游戏
Oct 26 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
用Python画一个LinkinPark的logo代码实例
Sep 10 Python
解决Jupyter因卸载重装导致的问题修复
Apr 10 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 Python
Python Django项目和应用的创建详解
Nov 27 Python
爬虫代理的cookie如何生成运行
Sep 22 #Python
python 如何将office文件转换为PDF
Sep 22 #Python
Python制作一个仿QQ办公版的图形登录界面
Sep 22 #Python
Python使用for生成列表实现过程解析
Sep 22 #Python
python实现发送带附件的邮件代码分享
Sep 22 #Python
使用Python绘制台风轨迹图的示例代码
Sep 21 #Python
利用python绘制中国地图(含省界、河流等)
Sep 21 #Python
You might like
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
django2笔记之路由path语法的实现
2019/07/17 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
Python实现的北京积分落户数据分析示例
2020/03/27 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
简单的JAVA编程面试题
2013/03/19 面试题
护理学院专科毕业生求职信
2014/06/28 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
2015年教师节慰问信
2015/03/23 职场文书
学校证明范文
2015/06/24 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书