利用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类继承与子类实例初始化用法分析
Apr 17 Python
python中__slots__用法实例
Jun 04 Python
Python的requests网络编程包使用教程
Jul 11 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
Jan 25 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
python读取xml文件方法解析
Aug 04 Python
Python实现扫码工具的示例代码
Oct 09 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
在字符串中把网址改成超级链接
2006/10/09 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
2011/04/17 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
JS与框架页的操作代码
2010/01/17 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
python自动翻译实现方法
2016/05/28 Python
Python之web模板应用
2017/12/26 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
Python中函数的返回值示例浅析
2019/08/28 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
CSS3实现swap交换动画
2016/01/19 HTML / CSS
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
顶撞领导检讨书
2014/01/29 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
我爱我家教学反思
2014/05/01 职场文书
党员活动日总结
2014/05/05 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
合作协议书格式
2014/08/19 职场文书
代办出身证明书
2014/10/21 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
师德师风个人总结
2015/02/06 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL