添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
POINTer分享:Python如何做报表自动化

POINTer分享:Python如何做报表自动化

点点写在前面:
欧阳山东 @我最帅 作为小数点Python第二期的学员又双叒叕来分享干货啦!自东哥上次分享完关于咖啡馆的分析后,后台突然冒出各种灵魂拷问,如何学习Python的鸭?还有没有别的分析案例鸭?这次他给大家带来一个新分享,关于如何用Python做报表自动化。



记得我在上次分享的时候,说了Python可以实现很多自动化设计,有些还很高端。

当然了,东哥目前的功力,高端的还是做不来,但是简单的还是可以的。

所以今天我教你做两个简单而且实用的自动化,第一,报表生成自动化;第二,邮件发送自动化。

但我想说明的是, 并不是所有报表都是需要或者适合做自动化的。

我们做自动化的目的是为了减少工作量,把一些重复性的工作交给程序处理。

在数据分析实践中,日报,周报,这种频率性很强的东西,就需要自动化;而那些不同活动的效果数据,每次都不一样,这样的做自动化就没有太大意义。


1 报表自动化


我还是拿上次那个咖啡馆的例子来做案例。数据如下:

如果我想实现下面这个效果,怎么做自动化呢?

如果你每个月或者每周要这样一张表,而且这张表的数据都放在SQL里或者excel文件里,那么你就要告诉Python,怎么从这些表里做数据,这个做的过程,也就是自动化实现的过程。


解释一下:同比是指和去年同月相比;环比是指和上个月相比。


1、写本月(8月)数据代码

s代表销售额,t代表销售量(客流量),k代表件均销售额。


2、写上月(7月)数据代码


3、写去年(8月)数据代码


4、将上面三段代码算出的数据综合为一张表 ,然后算出同比环比,且将数据保存为“本月数据同比环比情况”表格到桌面备用,代码如下:

至此,我们想要的数据已经全部拿到了,以后你想要这样的表格,稍微改一下然后运行一下这段代码就好了。


我举例的这个表格还很简单,主要是为了演示更清晰,所以还看不出自动化的威力。但是如果是大量的日报数据指标,自动化的便捷就出来了。


所以,是不是很省事呢?


2 代码函数化


细心的你,可能此刻已经看出我上面三段代码几乎是一模一样的了,只是改了一下时间而已。

对的,问题就在这里。在Python里,你记住我的一句话, 只要涉及到重复的东西,就必然可以优化代码 ,这个优化过程,可以用自定义函数来解决。

定义好函数后,你就可以重复用这段函数帮你算数据了。

所以我先定义了一个monthly_data(df)函数用来算每个月的数据,就是黑色方框里的。这样你想要哪个月的数据,你就用这个月的数据去套用函数就行。

我把函数运行了3次,分别算出本月,上月,去年同月的数据,完整代码如下:

当然,结果也一模一样:

你会发现,运用了函数后,代码可以写得更少,而且可读性更强。另外说一嘴,会不会函数编程是区分菜鸟和熟手的重要区别喽。



3 邮件自动化


我不知道大家都用的是什么邮箱,反正我一直用的是QQ邮箱。不过不管什么邮箱,自动化流程都是差不多的,下面我用自己的QQ邮箱来做个例子。

这个代码会用到很多大家并不熟悉的第三方库,没办法,我今天也是弄了很久,百度了很多东西才搞懂的。

不过你不需要为此多费心了,因为我帮你搞通了,你只要按照我的代码去做,就OK。

首先要在邮箱里进行设置。

红色方框里的东西打开,这样可以获得授权码用来在Python中执行登录发送等动作。


好,接下来就是自动化发邮件的代码实现了。完整代码如下:

代码写好了,运行后,即可收到邮件。


哎,这个过程我其实花了很多时间,中间遇到好几个bug没办法解决,比如设置附件啊,服务器端口啊地址啊,出现了索引错误啊,这些都是通过百度一个一个找别人的经验然后复制代码试错最后完成的。


好了,不说了,我们来看看结果吧:

看到没,红色方框里的东西都是我在上面代码中写好的。所以邮件自动化发送还是很简单的对不对?


嗯,今天的分享就到这里,我希望以后每周周末都能做个数据分析的小案例分享。大家可以一起玩啊,我还只是小菜鸟。

END


文章作者小数点python数据分析课程第二期学员 @我最帅

更多python数据分析干货,欢迎关注我们的微信公众号:POINT小数点数据

发布于 2019-09-20 14:16

文章被以下专栏收录