利用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编程中的for循环语句学习教程
Oct 14 Python
Python卸载模块的方法汇总
Jun 07 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
Apr 28 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
Python入门必须知道的11个知识点
Mar 21 Python
python实现字符串和字典的转换
Sep 29 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
Python字符串的一些操作方法总结
Jun 10 Python
Python语言规范之Pylint的详细用法
Jun 24 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
php单件模式结合命令链模式使用说明
2008/09/07 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JS中的log对象获取以及debug的写法介绍
2014/03/03 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
2017/01/04 Javascript
vue 和vue-touch 实现移动端左右导航效果(仿京东移动站导航)
2017/04/22 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
js判断密码强度的方法
2020/03/18 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python 加密的实例详解
2017/10/09 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
居安思危观后感
2015/06/11 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android