J'utilise Flask mais cela s'applique probablement à beaucoup de frameworks similaires.
Je construis un pandas Dataframe, par exemple.
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x)
Le template analysis.html ressemble à
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data}}
{% endblock %}
Cela fonctionne mais la sortie semble horrible. Il n’utilise pas de sauts de ligne, etc., j’ai joué avec les fonctions data.to_html()
et data.to_string()
Ce qui suit devrait fonctionner:
@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())
# ^^^^^^^^^
Vérifiez la documentation pour des options supplémentaires comme le style CSS.
De plus, vous devez ajuster votre modèle comme suit:
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{data | safe}}
{% endblock %}
afin de dire à Jinja que vous passez dans le balisage. Merci à @SeanVieira pour le conseil.
Ok, j’ai réussi à obtenir de très beaux résultats en combinant maintenant les indices que j’ai obtenus ici. Dans le visualiseur Python que j'utilise
@app.route('/analysis/<filename>')
def analysis(filename):
x = pd.DataFrame(np.random.randn(20, 5))
return render_template("analysis.html", name=filename, data=x)
par exemple. J'envoie le dataframe complet au modèle html. Mon modèle html est basé sur bootstrap. Je peux donc simplement écrire
{% extends "base.html" %}
{% block content %}
<h1>{{name}}</h1>
{{ data.to_html(classes="table table-striped") | safe}}
{% endblock %}
Il existe de nombreuses autres options avec bootstrap, consultez ici: http://getbootstrap.com/css/#tables
Base.html est essentiellement copié à partir d'ici http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xii-facelift
La question suivante est évidemment de savoir comment tracer un tel cadre. Quelqu'un a une expérience avec Bokeh?
Merci à vous deux, Matt et Sean.
thomas
Vous pouvez utiliser enaml-web pour afficher et interagir avec des cadres de données de pandas.
Quelques exemples:
Remarque: l'interaction (tri, filtrage, etc.) nécessite un serveur prenant en charge Websocket.