時間:2023-10-06 23:54:02 | 來源:網(wǎng)站運營
時間:2023-10-06 23:54:02 來源:網(wǎng)站運營
用Python制作一份HTML報告:本文使用 Zhihu On VSCode 創(chuàng)作并發(fā)布剛剛寫好了一個制作報告的Python程序,分享一下,也是作為自己的筆記:(幾乎)沒有任何前端基礎(chǔ),用Python制作一份HTML的數(shù)據(jù)報告。既可以做為網(wǎng)頁發(fā)布到網(wǎng)站上,也可以打印成PDF。
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script># 報告標題{{ summary }}## 詳細數(shù)據(jù){{ table }}## 數(shù)據(jù)可視化{{ chart }}
把這份MD文件導出為html,命名為”Template.html“,并放在Python代碼的同一個文件夾下,這樣模板就準備好了。jinja2
是一個處理html的模板引擎。我只學到了一個語法,就是在模板中的{{ }}用法類似于字符串的format函數(shù)。Jinja2
載入模板:import jinja2env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=''))template = env.get_template('Template.html')summary = u"這是一些文字"# 輸出數(shù)據(jù)表格的代碼table = u"后面來制作數(shù)據(jù)表格"# 輸出圖表的代碼chart = u"后面來制作圖片"# 導出圖片并保存# 語法和format類似,‘=’前面是html模板的{{ }}中的變量名,后面是要導入的內(nèi)容,我喜歡用一樣的名字,比較容易識別html = template.render(summary=summary, table=table, chart=chart)with open('Report.html', 'w') as f: f.write(html)
這樣就得到了一份Report的html文件。其中的數(shù)據(jù)表格和圖暫時都是用字符串代替的。接下來講怎么插入數(shù)據(jù)和圖。Pandas
輸出表格df.to_html
把數(shù)據(jù)表格變成html格式插入網(wǎng)頁,還可以用df.style
功能對數(shù)據(jù)表做一些高亮等操作。import pandas as pdimport numpy as np# 簡單的數(shù)據(jù)表格df = pd.DataFrame(np.random.randn(5, 4), columns=['one', 'two', 'three', 'four'], index=['a', 'b', 'c', 'd', 'e'])# 輸出為htmltable = df.to_html()
plotly
進行數(shù)據(jù)可視化并插入網(wǎng)頁plotly
本身就是一個交互式的數(shù)據(jù)可視化包。我們用plotly.offline.plot
可以直接輸出圖片內(nèi)容為網(wǎng)頁格式。為了把圖片插入到我們的報告里,我們需要plotly不要輸出完整html,而只是包含數(shù)據(jù)的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')
好了,現(xiàn)在我們可以把所有的表格和圖片插入報告里了。重新運行一下前面保存文件的代碼。html = template.render(summary=summary, table=table, chart=chart)with open('Report.html', 'w') as f: f.write(html)
這樣,一份完整的html格式的數(shù)據(jù)報告就做好了。你可以把這份代碼作為你整個數(shù)據(jù)分析pipeline的一部分,每次的分析結(jié)果都可以自動生成一份報告。關(guān)鍵詞:報告
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。