15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 用Python制作一份HTML报告

用Python制作一份HTML报告

时间:2023-10-06 23:54:02 | 来源:网站运营

时间:2023-10-06 23:54:02 来源:网站运营

用Python制作一份HTML报告:
本文使用 Zhihu On VSCode 创作并发布
刚刚写好了一个制作报告的Python程序,分享一下,也是作为自己的笔记:(几乎)没有任何前端基础,用Python制作一份HTML的数据报告。既可以做为网页发布到网站上,也可以打印成PDF。

用Markdown制作一个网页模板

第一步是制作一个网页模板。如果有前端技术,当然可以用html和CSS做出一个漂亮的模板。或者也可以在网上找到合适的模板。但是我用了最简单的方法:在VScode里用Markdown写一份简单的模板,并用Markdown Preview Enhanced插件保存为html格式。也可以使用其他喜欢的Markdown笔记软件,如Typora之类的,大多有导出html的功能。所以最后html的样式就取决于这些软件的渲染结果了。

写模板的时候把需要插入文字、表格、图片等内容的地方用两层大括号“{{ }}”括起来,后续插入内容。

另外,在开头插入一段plotly的源码地址,后面将会用plotly画图。例如:

<script src="https://cdn.plot.ly/plotly-latest.min.js"></script># 报告标题{{ summary }}## 详细数据{{ table }}## 数据可视化{{ chart }}把这份MD文件导出为html,命名为”Template.html“,并放在Python代码的同一个文件夹下,这样模板就准备好了。

用jinja2导入模板

jinja2是一个处理html的模板引擎。我只学到了一个语法,就是在模板中的{{ }}用法类似于字符串的format函数。

Jinja2载入模板:

import jinja2env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=''))template = env.get_template('Template.html')summary = u"这是一些文字"# 输出数据表格的代码table = u"后面来制作数据表格"# 输出图表的代码chart = u"后面来制作图片"# 导出图片并保存# 语法和format类似,‘=’前面是html模板的{{ }}中的变量名,后面是要导入的内容,我喜欢用一样的名字,比较容易识别html = template.render(summary=summary, table=table, chart=chart)with open('Report.html', 'w') as f: f.write(html)这样就得到了一份Report的html文件。其中的数据表格和图暂时都是用字符串代替的。接下来讲怎么插入数据和图。

Pandas输出表格

可以用df.to_html把数据表格变成html格式插入网页,还可以用df.style功能对数据表做一些高亮等操作。

import pandas as pdimport numpy as np# 简单的数据表格df = pd.DataFrame(np.random.randn(5, 4), columns=['one', 'two', 'three', 'four'], index=['a', 'b', 'c', 'd', 'e'])# 输出为htmltable = df.to_html()

plotly进行数据可视化并插入网页

plotly本身就是一个交互式的数据可视化包。我们用plotly.offline.plot可以直接输出图片内容为网页格式。为了把图片插入到我们的报告里,我们需要plotly不要输出完整html,而只是包含数据的div。所以前面提到了把plotly的js引用加到我们的模板前面。

import plotly as pyimport plotly.express as px# 画一个箱型图。fig = px.box(data_frame=df, x='one', y='two')chart = py.offline.plot(fig, include_plotlyjs=False, output_type='div')好了,现在我们可以把所有的表格和图片插入报告里了。重新运行一下前面保存文件的代码。

html = template.render(summary=summary, table=table, chart=chart)with open('Report.html', 'w') as f: f.write(html)这样,一份完整的html格式的数据报告就做好了。你可以把这份代码作为你整个数据分析pipeline的一部分,每次的分析结果都可以自动生成一份报告。

关键词:报告

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭