example data cleaning python pandas flask

python - cleaning - Visualización de Pandas Dataframe en una página web



data cleaning python (2)

Estoy usando Flask, pero esto probablemente se aplica a muchos frameworks similares.

Construyo un marco de datos pandas, por ejemplo

@app.route(''/analysis/<filename>'') def analysis(filename): x = pd.DataFrame(np.random.randn(20, 5)) return render_template("analysis.html", name=filename, data=x)

La plantilla analysis.html parece

{% extends "base.html" %} {% block content %} <h1>{{name}}</h1> {{data}} {% endblock %}

Esto funciona, pero la salida se ve horrible. No usa linebreaks, etc. He jugado con data.to_html() y data.to_string() ¿Cuál es la forma más fácil de mostrar un marco?


Lo siguiente debería funcionar:

@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()) # ^^^^^^^^^

Consulte pd.DataFrame.to_html() para ver opciones adicionales, como el estilo de CSS.

Además, debe ajustar su plantilla así:

{% extends "base.html" %} {% block content %} <h1>{{name}}</h1> {{data | safe}} {% endblock %}

para decirle a Jinja que estás pasando el marcado. Gracias a @SeanVieira por la propina.


Ok, he logrado obtener algunos resultados muy buenos combinando las pistas que tengo aquí. En el visor de Python real que uso

@app.route(''/analysis/<filename>'') def analysis(filename): x = pd.DataFrame(np.random.randn(20, 5)) return render_template("analysis.html", name=filename, data=x)

Por ejemplo, envío el marco de datos completo a la plantilla html. Mi plantilla html está basada en bootstrap. Por lo tanto, simplemente puedo escribir

{% extends "base.html" %} {% block content %} <h1>{{name}}</h1> {{ data.to_html(classes="table table-striped") | safe}} {% endblock %}

Hay muchas otras opciones con bootstrap, echa un vistazo aquí: http://getbootstrap.com/css/#tables

Base.html básicamente se copia desde aquí http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xii-facelift

La siguiente pregunta es, obviamente, cómo trazar ese marco. ¿Alguien tiene alguna experiencia con Bokeh?

Gracias a ambos por Matt y Sean.

Thomas