我设置了一个小网站,允许用户上传我处理并加载到数据库中的Excel文件。作为一种“确认”窗口,我快速阅读他们上传的原始数据并使用pandas进行一些聚合和格式化。它非常整洁。我试图创建几个数据帧,甚至是matplotlib图,但我无法在一个视图中将所有数据组合在一起。 (在我的return语句中,我试图返回用逗号分隔但有错误的几个项目)
def to_html(df, caption):
html = (df.style
.format(format_numbers)
.set_table_styles(styles)
.set_properties(**{'width': '100', 'margin-left': 'auto', 'margin-right': 'auto', 'margin': '0px auto', "align": "center", "text-align": "center"})
.set_caption(caption)
.render())
return html
@app.route('/upload', methods=['POST'])
def upload():
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(filename)
df = pd.read_excel(filename, index_col=None)
daily = pd.pivot_table(df, index=['date', 'dimension'], columns=['other'], values=['stuff'], aggfunc=[np.sum], fill_value=0)
daily.reset_index(inplace=True)
#to_html is a function I made which uses df.style from pandas, so this outputs a rendered pandas dataframe
return to_html(monthly, 'Your file was successfully uploaded. Here is a summary of the data:'), to_html(daily, caption='Daily details:')
else:
return 'File type is not supported.'
我在pythonanywhere上的日志文件只显示,但错误是502:
2017-01-12 17:54:13,627 :OSError: write error
2017-01-12 17:54:13,628 :Error running WSGI application
2017-01-12 17:54:13,628 :GeneratorExit
用户上传文件,我用熊猫阅读它并做一些聚合/计算/图形。如何以一种快速仪表板格式最好地显示这些图形和pandas DataFrames(HTML)?
他们上传的文件是标准模板,不到1MB。数据是时间序列,因此每天,每月,每个工作日查看它可能很有意义,或许可以添加一些快速预测或期望等。
答案 0 :(得分:1)
您应该在前端使用/ with /绘制数据(使用,d3,highcharts,cytoscape)。使用flask API仅返回数据。特别是,你应该将每小时数据,daily_data,weekly_data作为使用 jsonify 函数从烧瓶中返回。
>>> def somefunc(params):
>>> #.... some logic to get generate hourly, daily and weekly
>>> data_dict = {}
>>> data_dict["daily_data_to_plot"] = daily_data
>>> data_dict["weekly_data_to_plot"] = weekly_data
>>> data_dict["hourly_data_to_plot"] = hourly_data
>>> return jsonify(data_dict)
然后,您尝试使用ruby / js读取此数据以显示在前端。