質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

3329閲覧

pandas dataframe の内容をflaskのビューに表示するにはどうした良いでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2019/03/04 04:19

以下のようなデータが投入されたdataframeがあります。

A 0.09
B 0.1
C 0.8
D 0.2
E 0.7
F 0.1

これをflaskのビューで表示をする場合はどのようなコードを書けば良いでしょうか?
また、データの内容はサーバーサイド側の処理によって動的に変化します。
出来れば表形式で表示したいです。

詳しい方アドバイスお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/03/04 04:20

flask は知らないんですが、html のテーブル形式で出力できればよいですか?
退会済みユーザー

退会済みユーザー

2019/03/04 04:22

早速の回答ありがとうございます。 それでも構いませんのでよろしくお願いします。
guest

回答2

0

DataFrame.to_html で HTML 形式で出力できます。
class 属性の付加なども引数でできるので、ドキュメントを参照ください。

python

1import pandas as pd 2from io import StringIO 3 4text = StringIO(''' A B C D 52013-01-01 0.469112 -0.282863 -1.509059 -1.135632 62013-01-02 1.212112 -0.173215 0.119209 -1.044236 72013-01-03 -0.861849 -2.104569 -0.494929 1.071804 82013-01-04 0.721555 -0.706771 -1.039575 0.271860 92013-01-05 -0.424972 0.567020 0.276232 -1.087401''') 10 11df = pd.read_csv(text, delim_whitespace=True) 12print(df.to_html(classes='table'))
<table border="1" class="dataframe table"> <thead> <tr style="text-align: right;"> <th></th> <th>A</th> <th>B</th> <th>C</th> <th>D</th> </tr> </thead> <tbody> <tr> <th>2013-01-01</th> <td>0.469112</td> <td>-0.282863</td> <td>-1.509059</td> <td>-1.135632</td> </tr> <tr> <th>2013-01-02</th> <td>1.212112</td> <td>-0.173215</td> <td>0.119209</td> <td>-1.044236</td> </tr> <tr> <th>2013-01-03</th> <td>-0.861849</td> <td>-2.104569</td> <td>-0.494929</td> <td>1.071804</td> </tr> <tr> <th>2013-01-04</th> <td>0.721555</td> <td>-0.706771</td> <td>-1.039575</td> <td>0.271860</td> </tr> <tr> <th>2013-01-05</th> <td>-0.424972</td> <td>0.567020</td> <td>0.276232</td> <td>-1.087401</td> </tr> </tbody> </table>

投稿2019/03/04 04:28

編集2019/03/04 04:29
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/04 05:30

丁寧なアドバイスありがとうございます。 出来れば値は動的に変更したいのでHTML側は変数を利用したいのですが、難しいでしょうか?
tiitoi

2019/03/04 05:41

dataframe はすでにあるのですよね? 上の text = StringIO(... の部分は例であって、「DataFrame オブジェクトがあるなら、to_html() で HTML で出力できる」というのが回答の趣旨です。
guest

0

ベストアンサー

tiitoiさんが 既に DataFrameを HTML化する方法を述べておられますが。
Flaskにて表示するにはこのようかかたちで行うとよいのではないでしょうか。

今回はサンプルの為 render_template_string() を使っておりますが、render_template()を使っても良いかと思います。

Python

1import flask 2import pandas as pd 3 4html=""" 5<!DOCTYPE html> 6<html lang="ja"> 7<head> 8 <meta charset="UTF-8"> 9 <title>DataFrame表示テスト</title> 10</head> 11<body> 12{{table|safe}} 13</body> 14</html> 15""" 16 17app = flask.Flask(__name__) 18@app.route('/') 19def index(): 20 df = pd.DataFrame({'key': ['A','B','C','D','E','F'], 21 'val':[0.09,0.1,0.8,0.2,0.7,0.1]}) 22 return flask.render_template_string(html, table=df.to_html(header='true')) 23 24if __name__ == '__main__': 25 app.run(debug=True)

イメージ説明

投稿2019/03/04 05:40

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/03/04 17:08

アドバイスありがとうございました! お陰様で上手くいきました。 もう一つお聞きしたいのですが、HTMLに表示されたテーブルを中寄せするにはどうしたら良いでしょうか?
magichan

2019/03/04 23:32

CSSで設定してください。 とりあえずTableを中寄せするだけで良いだけであれば <head> <meta charset="UTF-8"> <style type="text/css"> <!-- .dataframe {margin-left: auto; margin-right: auto; text-align: center;} //--> </style> <title>DataFrame表示テスト</title> </head> と htmlに直接CSSを埋め込んであげると動作するかと思います。 もし私であれば、こちらの分野に関しての専門知識も少なく、デザインセンスもないので好みに合う出来合いのCSSを探してきて使うかと思います。
退会済みユーザー

退会済みユーザー

2019/03/05 00:25

修正出来ました。この度はありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問