平時的, 數據分析過程, 會涉及很多表或者, 計算過程嘛, 有的時候, 需要將數據表啥的給同事查看和共享一下, 直接發送, 似乎不夠優雅. 直接展示在網頁往, 共小伙伴們查看和下載, 不就很香嘛.
其實 Excel 只是個噱頭, 怎么可能用 Excel 分析數據, 不存在的, 必須是 pandas 呀. 其實就是將 DataFrame 給 渲染 到 網頁而已. 而這里涉及 web, 則用下 flask, 幾行代碼就搞定了呀.
需求
- 將excel 表格顯示在網頁上
- 在局域網內能實現共享
實現
能顯示網頁, 能共享, 不就是一個弄個 web 就好了呀. 這里用 pandas 來讀取數據, 核心是用 DataFrame 的 to_html 結合 flask 來顯示網頁.
展示數據以經典的 超市數據為例, 顯示前50行吧, 這里只是一個簡化版, 主要是為了說明思路哦.
超市數據, 是 Tableau 自帶的測試數據集, Tableau 是我目前做可視化的主要工具, 就用它.
import pandas as pd
import flask
file_path = "D:/test_data/示例 - 超市.xls"
app = flask.Flask(__name__)
@app.route("/")
def show_excel():
"""將excel展示網頁"""
df = pd.read_excel(file_path).head(50)
# TODO: 這里可以寫對數據的處理哦
data_html = df.to_html()
return f"""
<html>
<body>
<h3>Tableau 實例的 "超市" 數據集 </h3>
</div>{data_html}</div>
</body>
</html>
"""
if __name__ == '__main__':
app.run(host='0.0.0.0') # 讓其他ip也能訪問
然后打開網頁, 本機測一下, 輸入 127.0.0.1:5000 回車即可看到網頁效果. (flask 默認端口是 5000)
功能完成!
但樣式有些丑, 可以嘗試改下前端, 這里我就不弄了, 主要是目前不想弄前端, 調格式是真的有些煩.
小結
- 實現就是將 excel 呀 pandas 讀取為 DataFrame, 然后轉為 html 用 flask 作為后台.
- 核心方法是 to_html(), 再此之前可有數據處理的過程, 渲染前也可以該前端進行表格優化
- web 偶爾還是得有些許了解, 一些簡單的接口還是要熟練的