如何结合Flask与pandas在网页展示groupby分组计算结果
代码不生效的核心原因
- 你写的
return p.to_csv('Cmaregraphe.csv')逻辑完全错误:给to_csv()传入本地文件路径时,方法会把结果写入磁盘文件,返回值是None,既不会把计算结果返回给网页,还会把你原始的Cmaregraphe.csv数据源覆盖掉。 - 分组计算后的结果默认是带多级索引的Series,直接输出也没法被浏览器正常渲染成结构化页面。
可直接运行的修复代码
from flask import Flask import pandas as pd app = Flask(__name__) @app.route('/') def show_tables(): # 读取原始CSV,分号分隔的文件直接用sep=';'即可,避免正则分隔符误切列内容 df = pd.read_csv('Cmaregraphe.csv', sep=';') # 执行分组求均值计算,reset_index把分组索引转为普通列,方便表格展示 group_result = df.groupby(['Date', 'Hour'])['Niveau'].mean().reset_index() # 把计算结果转为HTML表格,关闭多余索引列 table_content = group_result.to_html( index=False, border=1, justify='center' ) # 拼接完整网页结构返回,加基础样式提升可读性 return f""" <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>分组计算结果</title> <style> table {{ border-collapse: collapse; width: 70%; margin: 30px auto; }} th, td {{ padding: 8px 12px; border: 1px solid #ddd; text-align: center; }} th {{ background-color: #f5f5f5; }} h1 {{ text-align: center; margin-top: 40px; }} </style> </head> <body> <h1>按日期、小时分组的Niveau均值统计</h1> {table_content} </body> </html> """ if __name__ == '__main__': app.run(debug=True)
运行注意事项
- 如果你之前运行过错误版本的代码,原始
Cmaregraphe.csv大概率已经被覆盖,先恢复原始数据文件再运行新代码。 - 确认CSV文件和Python脚本放在同一目录下,否则需要补全文件的绝对路径避免读文件报错。
- 启动服务后直接访问
http://127.0.0.1:5000就能看到结构化的统计表格,不需要额外配置模板文件。后续要调整计算逻辑,直接修改groupby相关的代码即可,最终得到的DataFrame都可以通过to_html()方法直接嵌入页面展示。
内容的提问来源于stack exchange,提问作者中国在年之前我们也
相关产品推荐
相关产品推荐

