经过昨天的修改优化后,dalao收到了不是“木马”的邮件,欣慰地点了点头,“不错,不错,这几张表设计的简洁明了,看着有货!不过呀,,,这些表的数据太多了一点,十几天的数据一大溜,能不能再简洁一点,做一个汇总的图,看起来一目了然!去吧,研究研究。”


    嗯咯,的确表太长了,数据太密集,虽然,该有的数据都有了,正文汇总浓缩的也到了一定极限,不能再继续汇总下去了,不然就没有数据的实际意义了,但是,指标一个一个的找,容易看岔,一点都不用户友好! dalao说的的确有道理,撸一张图出来就可以涵盖一张大表的信息了,掏出手机一看就能知道相关问题,把握整体趋势了,嘻嘻嘻~

那就继续优化。。。

dalao说要图,于是就有了echarts!

python环境中画图能手得数matlibplot,不过,配色什么的都需要自己配置,而且自己配出来的必然丑,说起来还有些怀恋R语言里的ggplot,那是我年轻的时候用过的包。。。当然呢,matlibplot+seaborn也是不错的选择。

画图,我还是喜欢echarts,百度出品,值得信赖(此处五毛),文档完备友好,调用方便,可做炫酷到没朋友的交互图,关键是有中文版,嘻嘻~

pyecharts交互图

bar3d-demo

第一次看到它的文档就抑制不住心里蠢蠢欲动想装逼的心,想给dalao炫一把,但是冷静的想想,我们的主战场是邮件正文,上次说过一切试图交互的手段都别想在邮件的地盘得逞。。。那就老实的画静态图吧,那个dalao容易接受一点,动态GIF看的头晕。

撸起袖子加油干!

首先研究一下pyecharts demo

1 frompyecharts2 importBar3 attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]4 v1 = [5, 20, 36, 10, 75, 90]5 v2 = [10, 25, 8, 60, 20, 80]6 bar = Bar("柱状图数据堆叠示例")7 bar.add("商家A", attr, v1, is_stack=True)8 bar.add("商家B", attr, v2, is_stack=True)9 bar.render()

需要注意的是,echarts需要的数据格式是按列来提取的,也就是要将表格数据转置,即行列互换。以下是知乎大佬的行列互换,代码简洁的令人惊诧!

1 In [1]: a=[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]

2 In [2]: print map(list,zip(*a))

3 [[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]

这样我们就得到了供pyecharts绘图的数据弹药,一样的,我们使用jinja2模板将pycharts产生的图片塞到正文里,代码中增加addPic函数。

当当当,正文+表格+图片+附件的dalao自动报表邮件2.0就出炉了!

如果您有需要的话,关注微信公众号“正版乔”,回复“邮件”获取daolao自动报表2.0源码,查看更新代码~

万一明天dalao又有新的想法呢。。。

附录:

  • 如何用python实现行列互换? - Crackycat的回答 - 知乎 https://www.zhihu.com/question/39660985/answer/83293327
  • css让图片自适应容器(div)大小  https://blog.csdn.net/promiseCao/article/details/52313430

  • pyecharts http://pyecharts.org/#/zh-cn/prepare


一个学统计的程序员
喜欢Coding
喜欢硬件
喜欢树莓派
喜欢深度学习
喜欢你

转载于:https://www.cnblogs.com/qiaohaoforever/p/10216177.html

dalao自动报表邮件2.0相关推荐

  1. 使用Python生成自动报表(Excel)以邮件发送

    数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的.产品的等等.而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用Python来实现报表的自动发送,解放你的劳动力,可以让 ...

  2. python怎么写excel数据透视自动报表_使用Python生成自动报表(E

    使用Python生成自动报表(Excel)以邮件发送 数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的.产品的等等.而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用P ...

  3. python发送带表格的邮件_PYTHON自动发送报表邮件

    要实现上述的功能的话我们需要以下几步:1.做好报表模板 2.更新报表数据 3.发送报表邮件 下面我们就用一个例子来给大家演示一下: 1.报表模板 我们选用一份保险公司每天完成保单的数据进行模板制作,要 ...

  4. python脚本自动发邮件功能

    最近给项目加监控,用python写了一个脚本,在出错的时候自动发邮件通知的功能.代码如下 #! /usr/bin/python # -*- coding: utf-8 -*- from smtplib ...

  5. python自动下载邮件_python实现邮件自动化

    1.自动接收邮件并且下载附件,使用pop3协议. # 接收邮件并下载邮件附件 import poplib import email import datetime import time from e ...

  6. AD domain 环境下VBS自动生成邮件签名

    使用VBS自动生成邮件签名 脚本使用环境:在AD域网络环境下,集团有上千邮件帐号,邮件签名是一比较难以管控工作内容,邮件签名内容一般包含1-问候语句,2-用户名 ,3-部门及职务,4-公司名称,5-固 ...

  7. python自动下载邮件附件_Python邮件处理(收取、解码及附件下载)

    之前在工作中需要用到自动查收邮件和下载附件,于是用python做了一些自动化的尝试.以下代码主要实现了两个功能,一个是下载并解码邮件正文(print_info函数),另一个是下载邮件附件(get_at ...

  8. python qq群自动加入_Python实现向QQ群成员自动发邮件的方法

    本文实例讲述了Python实现向QQ群成员自动发邮件的方法.分享给大家供大家参考.具体实现方法如下: 原理: 我们需要先获取QQ群中的所有成员并保存到一个txt文本中去,然后再由python读取文件然 ...

  9. 发邮件窗体【支持编辑邮件模板,使用wse多线程上传附件及发邮件(带附件)】以及在服务器端自动发邮件...

    这是前段时间做的一个邮件客户端,支持自定义模板(模板是内置的,固定好了)           其中配置模板的xml <?xml version="1.0" encoding= ...

最新文章

  1. 题目:查找数组中的重复数字,要求空间复杂度为O(1)(基于Java实现)
  2. tomcat accesslog日志扩展
  3. NF5270M3服务器主板安装系统,NF5270M3 – 主板相关
  4. wxWidgets:wxArchiveIterator类用法
  5. 关于js对象引用的小例子
  6. jsr-303 参数校验-学习(转)
  7. 小程序 ajax 加载,小程序实战-小程序网络请求异步加载
  8. gdiplus拼接两张图片_深色模式下的图片变暗问题,解决了!
  9. Error: if there's nested data, rowKey is required.
  10. 使用Mali Graphics Debugger调优Unity程序(Killer示例)
  11. java多线程安全解决方案_《Java多线程编程核心技术(第2版)》 —1.2.8 实例变量共享造成的非线程安全问题与解决方案...
  12. kafka和mqtt的区别和联系
  13. python utf编码 查询_python数据库查询中文乱码
  14. 2021 浏览器edge改 ie11 模式
  15. java docx4j 合并word_如何使用docx4j在word中添加合并字段?
  16. 顶刊实证复现:排污权交易机制是否提高了企业全要素生产率 (思路梳理+全数据源+python代码)
  17. 小刚的Android研究笔记~在未开启USB调试的Android手机绕过锁屏密码
  18. c语言的实验题答案,大一C语言上机实验试题及答案
  19. 基于OpenCV的火焰检测(二)——RGB颜色判据
  20. 全球与中国汽车检测设备市场现状及未来发展趋势

热门文章

  1. 产品原型绘制要求与规范
  2. 前端 地图增加边框线_基于百度地图开发——在地图上框出市、区的边界线
  3. 深入理解Amazon Alexa Skill(一)
  4. Python绘图库:Matplotlib入门教程
  5. C++中模板的特化与偏特化
  6. Java随笔记 - Java NIO的初步认识,NIO的三个核心概念,Channel和Buffer的简单使用
  7. TMS320C6748的StarterSware软件包
  8. LWC 66: 759. Employee Free Time
  9. YOLOV3预选框验证
  10. educoder——面向对象程序设计java——实验实训——实验三 - 集合框架