Pandas Отображение Dataframe на веб-странице
Я использую Flask, но это, вероятно, относится ко многим аналогичным структурам.
Я создаю pandas Dataframe, например.
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x)
Образец template.html выглядит как
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data}}
{% endblock %}
Это работает, но вывод выглядит ужасно. Он не использует разрывы строк и т.д.
Я играл с data.to_html()
и data.to_string()
Какой самый простой способ отображения кадра?
Ответы
Ответ 1
Следующее должно работать:
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x.to_html())
# ^^^^^^^^^
Отметьте документацию для дополнительных параметров, таких как стилизация CSS.
Кроме того, вам необходимо настроить шаблон следующим образом:
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data | safe}}
{% endblock %}
чтобы рассказать Jinja, что вы проходите в разметке. Спасибо @SeanVieira за подсказку.
Ответ 2
Хорошо, мне удалось получить очень хорошие результаты, объединив намеки, которые я получил здесь. В реальном зрителе Python я использую
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x)
например. Я отправляю полный файл данных в шаблон html. Мой шаблон html основан на загрузке. Поэтому я могу просто написать
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{ data.to_html(classes="table table-striped") | safe}}
{% endblock %}
Есть множество других опций с бутстрапом, здесь вы можете посмотреть:
http://getbootstrap.com/css/#tables
Base.html по существу копируется здесь
http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xii-facelift
Следующий вопрос, очевидно, заключается в том, как построить такой фрейм. Кто-нибудь имеет опыт работы с Боке?
Спасибо вам и Мэтту и Шона.
томас