为什么越来越多的非程序员白领都开始学习 Python?他们可能并不是想要学习 Python 去爬取一些网站从而取得酷酷的成就感,而是工作中遇到好多数据分析解决的问题,用 Python 就能够简略高效地解决。本文就通过一个理论的例子来给大家展现一下 Python 是如何利用于理论工作中高效解决简单问题的。
背景
小明就任于一家户外运动专营公司,他们公司旗下有好多个品牌,并且波及到很多细分的行业。小明在这家公司任数据分析师,平时都是通过 Excel 来做数据分析的。明天老板丢给他一个工作:上班前筛选出集团公司旗下最近一年销售额前五名的品牌以及销售额。
对于 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 查问语句。潘巨匠不仅能使咱们的程序处理起来变得更简略高效,对于须要常常解决表格的非程序员也是十分敌对的,上手起来也比较简单。
以上就是本次分享的所有内容,想要理解更多 python 常识欢送返回公众号:Python 编程学习圈,发送“J”即可收费获取,每日干货分享