# coding=utf-8
import pandas as pd
import yagmail
import requests
import arrow
import numpy as np
import matplotlib as mpl
from matplotlib.font_manager import _rebuild _rebuild() # reload一下
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei'] now = arrow.now()
start_time = now.format("YYYY-MM-DD")
end_time = now.shift(days=7).format("YYYY-MM-DD")
filter = '''[{"cxxx"}]''' % (
start_time, end_time) brand_url = 'hxxx} headers = {xxx
} def get_brand_info(tar):
visible_flag = True
info = requests.post(brand_url, data=data, headers=headers)
df_data = info.json()['data']['records']
df = pd.DataFrame(df_data)
df_8 = df[df['ad_zone_id'] == 8]
df_105 = df[df['ad_zone_id'] == 105] df_8 = df_8[['ptdate', 'fill_rate']]
df_105 = df_105[['ptdate', 'fill_rate']] df_8['预xxx级'] = pd.cut(df_8['fill_rate'], bins=[0, 0.05, 0.10, 0.15, np.inf], labels=['空闲', '适中', '紧张', '非常紧张'])
df_105['预xxx级'] = pd.cut(df_105['fill_rate'], bins=[0, 0.05, 0.10, 0.15, np.inf], labels=['空闲', '适中', '紧张', '非常紧张']) df_8.rename(columns={'ptdate': '日期', 'fill_rate': '品xxxx率'}, inplace=True)
df_105.rename(columns={'ptdate': '日期', 'fill_rate': '品xxx率'}, inplace=True) if tar == 'inner':
ax_8 = df_8.plot('日期', '品xxxx率', kind='bar', title='首页未来xxxx图', rot=30,
color='#0f88eb')
vals_8 = ax_8.get_yticks()
ax_8.set_yticklabels(['{:,.2%}'.format(x) for x in vals_8])
ax_8.set_xticklabels(df_8['日期'].tolist())
for i, v in enumerate(df_8['品xxx率'].tolist()):
ax_8.text(i, v + 0.002, str(df_8['预xx级'].tolist()[i]), ha='center', fontweight='bold')
ax_8.yaxis.set_visible(visible_flag)
fig_8 = ax_8.get_figure()
fig_8.savefig('fig8_inner.png') ax_105 = df_105.plot('日期', '品牌填充率', kind='bar', title='回xxxx图', rot=30,
color='#0f88eb')
vals_105 = ax_105.get_yticks()
ax_105.set_yticklabels(['{:,.2%}'.format(x) for x in vals_105])
ax_105.set_xticklabels(df_105['日期'].tolist())
for index, value in enumerate(df_105['品xx率'].tolist()):
ax_105.text(index, value + 0.002, str(df_105['预xxx等级'].tolist()[index]), ha='center', fontweight='bold')
ax_105.yaxis.set_visible(visible_flag)
fig_105 = ax_105.get_figure()
fig_105.savefig('fig105_inner.png')
df_8['品xxxx充率'] = round(df_8['品xxxx率'] * 100, 2).apply(str) + '%'
df_105['xxxx率'] = round(df_105['品xxx率'] * 100, 2).apply(str) + '%' if tar == 'outter': visible_flag = False
ax_8 = df_8.plot('日期', '品xxxx充率', kind='bar', title='首xxxxx图', rot=30,
color='#0f88eb')
vals_8 = ax_8.get_yticks()
ax_8.set_yticklabels(['{:,.2%}'.format(x) for x in vals_8])
ax_8.set_xticklabels(df_8['日期'].tolist())
for i, v in enumerate(df_8['品xxxx率'].tolist()):
ax_8.text(i, v + 0.002, str(df_8['预xxx级'].tolist()[i]), ha='center', fontweight='bold')
ax_8.yaxis.set_visible(visible_flag)
fig_8 = ax_8.get_figure()
fig_8.savefig('fig8_outter.png') ax_105 = df_105.plot('日期', '品xxx率', kind='bar', title='回xxxx量走势图', rot=30,
color='#0f88eb')
vals_105 = ax_105.get_yticks()
ax_105.set_yticklabels(['{:,.2%}'.format(x) for x in vals_105])
ax_105.set_xticklabels(df_105['日期'].tolist())
for index, value in enumerate(df_105['品xxxx率'].tolist()):
ax_105.text(index, value + 0.002, str(df_105['xxx级'].tolist()[index]), ha='center', fontweight='bold')
ax_105.yaxis.set_visible(visible_flag)
fig_105 = ax_105.get_figure()
fig_105.savefig('fig105_outter.png')
df_8.drop('品xxxxx率', axis=1, inplace=True)
df_105.drop('品xxx率', axis=1, inplace=True) all_html_8 = df_8.to_html(escape=False, index=False).replace("\n", "")
all_html_105 = df_105.to_html(escape=False, index=False).replace("\n", "")
body = \
"""
<body>
<div align="center" class="header">
<!--标题部分的信息-->
<h1 align="center">您好,以下为xxxx占量情况!</h1>
</div>
<hr>
<div class="content">
<!--正文内容-->
<div>
<h4>近一xxxxxx量数据</h4>
{}
<div style="float:left;margin-left:30px;">
<img src='./fig8_{}.png' />
</div>
</div>
<br/>
<br/>
<div style="clear:both"></div>
<div>
<h4>近xxx据</h4>
{}
<div style="float:left;margin-left:30px;">
<img src='./fig105_{}.png' />
</div>
</div>
<div style="clear:both"></div>
<hr>
<p style="text-align: left">
—— 本次报告完 ——
</p>
</div>
</body>
""".format(all_html_8, tar,all_html_105,tar) head = \
'''
<head>
<meta charset="utf-8">
<STYLE TYPE="text/css" MEDIA=screen> table.dataframe {
border-collapse: collapse;
border: 2px solid #a19da2;
float:left;
margin-top:56px;
/*居中显示整个表格*/
/*margin: auto;*/
} table.dataframe thead {
border: 2px solid #91c6e1;
background: #f1f1f1;
padding: 10px 10px 10px 10px;
color: #333333;
} table.dataframe tbody {
border: 2px solid #91c6e1;
padding: 10px 10px 10px 10px;
} table.dataframe tr { } table.dataframe th {
vertical-align: top;
font-size: 14px;
padding: 10px 10px 10px 10px;
color: #105de3;
font-family: 微软雅黑;
text-align: center;
} table.dataframe td {
text-align: center;
padding: 10px 10px 10px 10px;
} body {
font-family: 微软雅黑;
} h1 {
color: blue;
} div.header h2 {
color: #0002e3;
font-family: 微软雅黑;
} h3 {
font-size: 22px;
background-color: rgba(0, 2, 227, 0.71);
text-shadow: 2px 2px 1px #de4040;
color: rgba(239, 241, 234, 0.99);
line-height: 1.5;
} h4 {
color: blue;
font-family: 微软雅黑;
font-size: 20px;
text-align: left;
} </STYLE>
</head>
''' foot = \
'''
<br/>
<p>
<br/>
</p>
'''
html_msg = "<html>" + head + body + foot + "</html>"
html_msg = html_msg.replace("\n", "")
with open('./' + tar + '.html', 'w', encoding='UTF-8', newline='') as fout:
fout.write(html_msg)
print(df_8.head())
print(df_105.head()) def send_week_mail(tar):
yag = yagmail.SMTP(user="xxxx@zhihu.com", password="cxxxx", host='smtp.xxxx.com')
print('正在准xxxx...')
if tar == 'inner':
# 链接邮箱服务器
# zhihu_staff = [xxx]
yag.send(to=zhihu_staff, subject='未来xxxx页占量',
contents=open('./' + tar + '.html', 'r', encoding='UTF-8', newline='').read())
print('内部xxxx发送!')
else:
# agent_staff = ['cxxx']
agent_staff = ['zxxxx']
yag.send(to=agent_staff, subject='未来xxxxx页占量',
contents=open('./' + tar + '.html', 'r', encoding='UTF-8', newline='').read())
print('外部每日xxxx发送!') def main():
target = ['inner', 'outter']
for tar in target:
get_brand_info(tar)
send_week_mail(tar) if __name__ == '__main__':
main()

matplotlib绘图难题解决的更多相关文章

  1. matplotlib 绘图

    http://blog.csdn.net/jkhere/article/details/9324823 都打一遍 5 matplotlib-绘制精美的图表 matplotlib 是python最著名的 ...

  2. ssh调用matplotlib绘图报错RuntimeError: Invalid DISPLAY variable

    1.问题:在本地用matplotlib绘图可以,但是在ssh远程绘图的时候会报错 RuntimeError: Invalid DISPLAY variable 2.原因:matplotlib的默认ba ...

  3. python实战学习之matplotlib绘图续

    学习完matplotlib绘图可以设置的属性,还需要学习一下除了折线图以外其他类型的图如直方图,条形图,散点图等,matplotlib还支持更多的图,具体细节可以参考官方文档:https://matp ...

  4. matplotlib绘图的基本操作

    转自:Laumians博客园 更简明易懂看Matplotlib Python 画图教程 (莫烦Python)_演讲•公开课_科技_bilibili_哔哩哔哩 https://www.bilibili. ...

  5. python中利用matplotlib绘图可视化知识归纳

    python中利用matplotlib绘图可视化知识归纳: (1)matplotlib图标正常显示中文 import matplotlib.pyplot as plt plt.rcParams['fo ...

  6. matplotlib绘图基本用法-转自(http://blog.csdn.net/mao19931004/article/details/51915016)

    本文转载自http://blog.csdn.net/mao19931004/article/details/51915016 <!DOCTYPE html PUBLIC "-//W3C ...

  7. python实战学习之matplotlib绘图

    matplotlib 是最流行的Python底层绘图库,主要做数据可视化图表 可以将数据可视化,能够更直观的呈现数据 matplotlib绘图基本要点 首先实现一个简单的绘图 # 导入pyplot f ...

  8. 【原】在Matplotlib绘图中添加Latex风格公式

    Matplotlib绘图的过程中,可以为各个轴的Label,图像的Title.Legend等元素添加Latex风格的公式. 只需要在Latex公式的文本前后各增加一个$符号,Matplotlib就可以 ...

  9. Matplotlib绘图双纵坐标轴设置及控制设置时间格式

    双y轴坐标轴图 今天利用matplotlib绘图,想要完成一个双坐标格式的图. fig=plt.figure(figsize=(20,15)) ax1=fig.add_subplot(111) ax1 ...

随机推荐

  1. idea 出现 bootstrap.properties 中的内容不能识别

    错误截图如下 依赖库引用问题 第一种: <dependency> <groupId>org.springframework.cloud</groupId> < ...

  2. Manytasking optimization MATP

    Manytasking Jmetal代码反向解析1_MATP测试函数集 觉得有用的话,欢迎一起讨论相互学习~Follow Me 这是我在写Manytask optimization时的笔记,代码地址可 ...

  3. 工控随笔_24_西门子TIA 博图硬件目录的更新

    西门子博图软件,不但体积庞大,功能也很复杂,与经典的Step7相比,如果不是经常使用,一般都会有一种很难使用的感觉. 而且相比原来的Step7操作有点不太一样.这里简单的说一下硬件目录的更新. 有两种 ...

  4. 转载: 我如何使用 Django + Vue.js 快速构建项目

    原文链接: https://www.ctolib.com/topics-109796.html 正文引用如下 引言 大U的技术课堂 的新年第一课,祝大家新的一年好好学习,天天向上:) 本篇将手把手教你 ...

  5. 【ARM-Linux开发】Linux模块机制浅析

    Linux模块机制浅析   Linux允许用户通过插入模块,实现干预内核的目的.一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析. 模块的Hello World! ...

  6. CMDB资产采集的四种方式

    转 https://www.cnblogs.com/guotianbao/p/7703921.html 资产采集的概念 资产采集的四种方式:Agent.SSH.saltstack.puppet 资产采 ...

  7. Python之路【第二十四篇】:数据库索引

    数据库索引 一.索引简介 索引在mysql中也叫做"键",是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈 ...

  8. 【LEETCODE】69、动态规划,easy,medium级别,题目:198、139、221

    package y2019.Algorithm.dynamicprogramming.easy; /** * @ProjectName: cutter-point * @Package: y2019. ...

  9. 用python编写一个搜索引擎

    完整代码如下: #!/usr/bin/env python #-*- coding: utf-8 -*- import sys import os import datetime from PyQt5 ...

  10. javascript document.createElement() document.createTextNode() appendChild()

    //--------------document.createElement("div") var div = document.createElement("div&q ...