python自动生成word报告_python自动化生成分析报告,让你的工作效率提升10倍+

python自动生成word报告_python自动化生成分析报告,让你的工作效率提升10倍+_第1张图片

打开搜狗搜索APP,查看更多精彩资讯

如果你每天都需要输出分析报告,报告模式基本一致,只是更换里面的分析数据,每天重复着同样的工作,费时费力,工作能力没有丝毫的提升,但是如果你学过python,你就可以通过一个脚本自动生成报告,然后上班就可以腾出时间来学习其他的知识。

利用python生成word,我们需要学习一个新的模块:python-docx

首先:

导入需要的模块

创建一个空文档:

简单地几行代码我们就可以创建一个新的word文档,是不是很简单,但是我们今天要做的或许稍有难度,首先先看看我们今天的需求:

今天我们分析一份26所2019年高校开学流量变化

流程是这样的的:通过pandas分析统计数据

通过matplotlib批量生成图表

通过python-docx自动化生成汇报word

报告模式:一个大学一个标题

然后一段描述文字:

一张趋势变化图表

let's go!

现附上最后的结果,然后一步一步解析:

导入两份数据:历史数据,今天的数据

新建一个word:

获取高校的校名清单:

通过循环大学校名清单,一个一个处理:

筛选每次循环到的高校数据:

通过matplotlib画一个1*2的折线图:

将生成的图表保存为图片文件,方便导入到word:

将统计的数据和图表写入到word:p = document.add_paragraph()

p.add_run(each).bold = True

document.add_paragraph('4G业务量&VOLTE话务量', style='Intense Quote')

paragraph = document.add_paragraph('今日4G流量为:%.2f;VOLTE话务为:%.2f;2G流量为:%.2f;2G话务为:%.2f。' % (

x["4G流量"].values[-1], x["4G话务量"].values[-1], x["2G流量"].values[-1], x["2G话务量"].values[-1]))

document.add_heading("%s业务量变化图:" % each, level=1)

document.add_picture('%s.png' % each, width=Inches(6))

保存文件:document.save('demo.docx')

python-docx知识点

完整代码:document = Document()

document.add_heading('\\t\\t\\t大学流量趋势变化报告', 0)

gxlist = gx2["高校"].unique().tolist()

for each in gxlist:

print(each)

x = gx2[gx2["高校"] == each]

g = gx1[gx1["大学"] == each]

# 设定主题

sns.set_style("darkgrid")

sns.set_context("notebook", font_scale=1.3, rc={"lines.linewidth": 1.5})

# 该方法会返回画图对象和坐标对象ax,figsize是设置子图长宽(1200,800)

fig, ax = plt.subplots(figsize=(18, 10), ncols=1, nrows=2)

ax[0].plot(x["日期"], x["4G流量"], label="4G流量变化", lw=2, c="r", marker='.')

ax[0].plot(x["日期"], [g["去年开学4G流量"].values[0] for i in range(

len(x["日期"]))], label="去年开学4G流量变化平均值", lw=1.5, ls='-.', c="g")

ax[0].plot(x["日期"], [g["上学期4G流量"].values[0] for i in range(

len(x["日期"]))], label="上学期4G流量变化平均值", lw=1.5, ls=":", c="b")

ax[0].legend(loc="center left") # 添加图列就是右上角的点说明

ax[0].set_title('4G流量变化(GB)')

for a, b in zip(x["日期"], x["4G流量"]):

ax[0].text(a, b+(max(x["4G流量"])-b)*.1, '%.0f' %

b, ha='center', va='top', fontsize=15)

ax[1].plot(x["日期"], x["4G话务量"], label="4G话务量变化", lw=2, c="r", marker='.')

ax[1].plot(x["日期"], [g["去年开学4G总话务"].values[0] for i in range(

len(x["4G话务量"]))], label="去年开学4G话务变化平均值", lw=1.5, ls='-.', c="g")

ax[1].plot(x["日期"], [g["上学期4G总话务"].values[0] for i in range(

len(x["4G话务量"]))], label="上学期4G话务量变化平均值", lw=1.5, ls=":", c="b")

ax[1].legend(loc="center left") # 添加图列就是右上角的点说明··

ax[1].set_title('4G话务量变化(ERL)')

for a1, b1 in zip(x["日期"], x["4G话务量"]):

ax[1].text(a1, b1+(max(x["4G话务量"])-b1)*.1, '%.0f' %

b1, ha='center', va='top', fontsize=15)

fig.suptitle("%s业务量变化图" % each)

fig.autofmt_xdate()

plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签

plt.savefig("%s.png" % each)

p = document.add_paragraph()

p.add_run(each).bold = True

document.add_paragraph('4G业务量&VOLTE话务量', style='Intense Quote')

paragraph = document.add_paragraph('今日4G流量为:%.2f;VOLTE话务为:%.2f;2G流量为:%.2f;2G话务为:%.2f。' % (

x["4G流量"].values[-1], x["4G话务量"].values[-1], x["2G流量"].values[-1], x["2G话务量"].values[-1]))

document.add_heading("%s业务量变化图:" % each, level=1)

document.add_picture('%s.png' % each, width=Inches(6))

document.save('demo.docx')

你可能感兴趣的:(python自动生成word报告_python自动化生成分析报告,让你的工作效率提升10倍+)