Python自动化办公小程序:实现报表自动化和自动发送到目的邮箱

网站建设5年前发布
37 0 0

20230306105003b598b12241a51a2cc058914eea663fd1b49ed2984,大家好!我是虎哥。,作为数据分析师,我们需要经常制作统计分析图表。但是报表太多的时候往往需要花费我们大部分时间去制作报表。这耽误了我们利用大量的时间去进行数据分析。但是作为数据分析师我们应该尽可能去挖掘表格图表数据背后隐藏关联信息,而不是简单的统计表格制作图表再发送报表。,自动化总是能够很好的节省时间,提高我们的工作效率。让我们的程序编程尽可能的降低每个功能实现代码的耦合性,更好的维护代码。这样我们会节省很多时间让我们有空去做更多有价值有意义的工作。,编码实现效果正确无误的话是是可以一直沿用的,如果是人为来操作的话反而可能会犯一些错误。交给固定的程序来做更加让人放心,需求变更时仅修改部分代码即可解决问题。,首先我们需要根据业务需求来制定我们所需要的报表,并不是每个报表都需要进行自动化的,一些复杂二次开发的指标数据要实现自动化编程的比较复杂的,而且可能会隐藏着各种BUG。所以我们需要对我们工作所要用到的报表的特性进行归纳,以下是我们需要综合考虑的几个方面:,对于一些业务上经常需要用到的表,这些表我们可能要纳入自动化程序的范围。例如客户信息清单、销售额流量报表、业务流失报表、环比同比报表等。,20230306105004444ef060010af1c3950391bed9b5aff3154857646,20230306105004f5bab47270a12c503df021401720825d10c76c174,这些使用频率较高的报表,都很有必要进行自动化。对于那些偶尔需要使用的报表,或者是二次开发指标,需要复制统计的报表,这些报表就没必要实现自动化了。,这就相当于成本和利率一样,若是有些报表自动化实现困难,还超过了我们普通统计分析所需要的时间,就没必要去实现自动化。所以开始自动化工作的时候要衡量一下开发脚本所耗费的时间和人工做表所耗费的时间哪个更短了。当然我会提供一套实现方案,但是仅对一些常用简单的报表。,对于我们报表每个过程和步骤,每个公司都有所不同,我们需要根据业务场景去编码实现各个步骤功能。所以我们制作的流程应该是符合业务逻辑的,制作的程序也应该是符合逻辑的。,20230306105005126654f403ab25bf48d7517c14c135534f6711371,首先我们需要知道我们需要什么指标:,指标,反映某一数据指标的整体大小,相邻时间段内的指标直接作差,相邻时间段内某一共同时间点上指标的对比,20230306105005f710b0d144ed10f359f192eb9d852448d6cd31764,我们拿一个简单的报表来进行模拟实现:,首先我们要了解我们的数据是从哪里来的,也就是数据源。我们最终的数据处理都是转化为DataFrame来进行分析的,所以需要对数据源进行转化为DataFrame形式:,以上代码均通过测试可以正常使用,但是pandas的read函数针对不同的形式的文件读取,其read函数参数也有不同的含义,需要直接根据表格的形式来调整。,其他read函数将会在文章写完之后后续补上,除了read_sql需要连接数据库之外,其他的都是比较简单的。,我们以用户信息为例:,2023030610502627da77f64756cc0cc46758829acea121ba9ad8579,我们需要统计的指标为:,2023030610500693098ea74dc8a6125073181ac7d7ed1950a7ff642,我们仅获取前10名的城市就好了,封装为饼图:,202303061050072733f0285833d91ee21319d18ec4a686b12cba906,将图表保存起来:,要是你觉得matplotlib的图片不太美观的话,你也可以换成echarts的图片,会更加好看一些:,2023030610500865291e9290e8cd24e6e50285b168d08668fd99694,封装后就可以直接使用了:,可以进行保存,可惜不是动图:,保存为网页的形式就可以自动加载JS进行渲染了:,做出来的一系列报表一般都要发给别人看的,对于一些每天需要发送到指定邮箱或者需要发送多封报表的可以使用Python来自动发送邮箱。,在Python发送邮件主要借助到smtplib和email这个两个模块。,不同种类的邮箱服务器连接地址不一样,大家根据自己平常使用的邮箱设置相应的服务器进行连接。这里博主用网易邮箱展示:,首先需要开启POP3/SMTP/IMAP服务:,202303061050094401b0e5501439c5e47109bb0f85197c854e02259,之后便可以根据授权码使用python登入了。,运行测试:  ,20230306105009744761104cdadb7dae19762cea7109d616649d763,下载文件:,20230306105027d95988c060bacc7146c9343aa12b5a24f850cd112,完全没问题!!!

© 版权声明

相关文章