时间:2023-10-06 23:54:02 | 来源:网站运营
时间:2023-10-06 23:54:02 来源:网站运营
用Python制作一份HTML报告:本文使用 Zhihu On VSCode 创作并发布刚刚写好了一个制作报告的Python程序,分享一下,也是作为自己的笔记:(几乎)没有任何前端基础,用Python制作一份HTML的数据报告。既可以做为网页发布到网站上,也可以打印成PDF。
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script># 报告标题{{ summary }}## 详细数据{{ table }}## 数据可视化{{ chart }}
把这份MD文件导出为html,命名为”Template.html“,并放在Python代码的同一个文件夹下,这样模板就准备好了。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的一部分,每次的分析结果都可以自动生成一份报告。关键词:报告