Python项目:把数据以图片的形式发送到微信群中

背景

Boss要出一份数据,需要每天定时定点发送到微信干部群里面。之前我都是从后台导出数据,然后在Excel的基础表里面粘贴导出的数据,接着打开展示表,从表格中把数据复制出来,一张一张发到微信群中。这样就有这么几个缺点:

1、导出数据繁琐,如果从8个数据表中分别导出8份数据,每次都需要手动选择日期和条件,然后导出数据。

2、Excel在处理数据较大且公式比较多的原始数据时,表现不是很好,很卡。

3、每天花在这份数据上的时间过多,影响其他的分析工作。

于是我决定用Python把数据处理过程简化,因为任何因为数据处理而非分析造成的加班,都是无效加班。

于是我把我的工作流程拆解分为5个部分,然后分别对每个部分进行程序编写:

1、从系统中导出数据

2、从导出的数据中找出需求数据

3、把数据填写到表格中

4、把表格复制为图片

5、图片发送到微信群中

6、发送完之后用短信提醒我

从系统中导出数据

从系统中导出数据,我是利用Python request模块把我的cookie和我的表单信息post到系统当中,得到我要的下载链接,然后用pandas直接读取这个Excel下载链接,生成一个DataFrame。我是在征求过了系统研发同意之后才写的爬虫,如果各位谁想去爬取公司的数据,一定要去征求同意,以免造成不必要的问题。因涉及公司的信息,我就不放出我写的代码了。至此我得到了系统中的数据,并且已经把数据变成了易处理的DataFrame格式。

Python项目:把数据以图片的形式发送到微信群中_第1张图片
略过:)

从导出的数据中找出需求数据

我们已经从系统中找出原始数据,那么现在就需要对数据进行处理,这里就需要利用pandas的去处理数据。我这里涉及的操作有:

1、匹配数据。比如说系统中只有城市数据,但是我需要对省份进行筛选,于是我需要用原始数据和另一个数据进行匹配,相当于SQL中的left join。

2、筛选数据。筛选出广东省出发的所有出境线路的订单。

3、分类汇总。根据部门进行分类汇总,包括营收和交易额。


Python项目:把数据以图片的形式发送到微信群中_第2张图片
数据处理关系到结果数据的准确性


Python项目:把数据以图片的形式发送到微信群中_第3张图片
处理dataframe

map_province和map_depart是从系统中读取的两个映射表,一个城市-省份映射表,用于匹配二是目的地城市-部门映射表,用于匹配部门。

把数据填写到表格中

已经得到了所需要的数据了,那么就是看用什么作为载体,去发送数据。我还是沿用老习惯,用Python在Excel表格中填写查询到的数据。处理Excel的Python库有很多,有xlrd、xlwt、xluntils和pyExcelerator等库,但是我偏向于win32com,用这个库去操作Excel,基本上是跟VBA语法一致。

我需要填写的数据(简单版)
Python项目:把数据以图片的形式发送到微信群中_第4张图片
填写表格

函数fillData的作用是把保存在列表中的数据,一次填写在表格之中,他的四个参数表示:工作表、开始的位置、要填充的列表和需要填写的数据。dealExcel函数的作用是用来把数据填充进去。

把图片复制为图片

这个就很简单,先把复制的表格转化成图片,然后把图片复制到粘贴板上面,再利用PIL读取粘贴板上面的图片,接着保存到特定的文件夹中(存档)。

Python项目:把数据以图片的形式发送到微信群中_第5张图片
数据复制为图片,存在本地作为存档

图片发送到微信群中

有了本地图片之后,可以利用itchat把数据发送到特定的微信群中。

Python项目:把数据以图片的形式发送到微信群中_第6张图片
把数据发送到群里面

这个有很大的扩展性,你可以把你所有的程序都包含在这个函数里面,当你的微信机器人得到你的暗语,他就会自己运行程序,然后发出数据。也可以加一个while循环,每天隔一段时间发数据。

但是他的缺点也有很多,比如说对中文不友好、要微信扫码登录和偶尔断掉服务器,需要重新登录等等。但是不管怎样,如果你的工作沟通工具是微信,那它肯定是你的一大助力。

发完数据之后用短信提醒我

这个只是一个可选项,用来实时知道自己的数据是否发送。我用的twilio服务,只需要写几行代码就能做到发送信息给你的手机当中。

Python项目:把数据以图片的形式发送到微信群中_第7张图片
SMS服务的使用


Python项目:把数据以图片的形式发送到微信群中_第8张图片
最后成果

总结

任何关于数据处理的过程,很多都可以用程序去解决。我是一个比较“懒”的人,机械的工作当然是用机器去做,把时间留着去做一些更有意思的事情,比如分析数据。

你可能感兴趣的:(Python项目:把数据以图片的形式发送到微信群中)