gpt4 book ai didi

python - 如何将 Pandas 数据框显示为 flask 引导表?

转载 作者:太空狗 更新时间:2023-10-30 02:17:41 24 4
gpt4 key购买 nike

我想将 pandas 数据框显示为带有 flask 的 boostrap-html 表,因此我尝试了以下操作:

数据(.csv 表):

Name    Birth Month Origin  Age Gender
Carly Jan Uk 10 F
Rachel Sep UK 20 F
Nicky Sep MEX 30 F
Wendy Oct UK 40 F
Judith Nov MEX 39 F

python代码(python_script.py):

from flask import *
import pandas as pd
app = Flask(__name__)

@app.route("/tables")
def show_tables():
data = pd.read_csv('table.csv')
data.set_index(['Name'], inplace=True)
data.index.name=None
females = data.loc[data.Gender=='f']
return render_template('view.html',tables=[females.to_html(classes='female')],

titles = ['na', 'Female surfers'])


if __name__ == "__main__":
app.run(debug=True)

templates 目录(view.html):

<!doctype html>
<title>Simple tables</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class=page>
<h1>Surfer groups</h1>
{% for table in tables %}
<h2>{{titles[loop.index]}}</h2>
{{ table|safe }}
{% endfor %}
</div>

boostrap style.css:

body            { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;}
a, h1, h2 { color: #377ba8; }
h1, h2 { margin: 0; }
h1 { border-bottom: 2px solid #eee; }
h2 { font-size: 1.2em; }

table.dataframe, .dataframe th, .dataframe td {
border: none;
border-bottom: 1px solid #C8C8C8;
border-collapse: collapse;
text-align:left;
padding: 10px;
margin-bottom: 40px;
font-size: 0.9em;
}

.male th {
background-color: #add8e6;
color: white;
}

.female th {
background-color: #77dd77;
color: white;
}

tr:nth-child(odd) { background-color:#eee; }
tr:nth-child(even) { background-color:#fff; }

tr:hover { background-color: #ffff99;}

到目前为止,当我运行我的 python_script.py 时:

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 123-221-151

我遇到了两个问题:一个 Not Found 错误,当我转到 http://127.0.0.1:5000/tables 时,我遇到了一个 builtins.KeyError KeyError: 'Name'。知道如何将 pandas 数据框显示为包含 pandas 和 flask 的表格吗?

最佳答案

这里的问题是 data.csv 文件。当您对其执行 read_csv() 时:

In [45]: pd.read_csv("/tmp/a.csv")
Out[45]:
Name Birth Month Origin Age Gender
0 Carly Jan Uk 10 F
1 Rachel Sep UK 20 F
2 Nicky Sep MEX 30 F
3 Wendy Oct UK 40 F
4 Judith Nov MEX 39 F

In [46]: df = pd.read_csv("/tmp/a.csv")

In [47]: df.columns
Out[47]: Index([u'Name Birth Month Origin Age Gender'], dtype='object')

如您所见,只有一列,而不是四列,因为它无法理解 'Birth Month' 应该是一列。要解决此问题,您可以打开文件并将第一行更改为:

"Name" "Birth Month" "Origin"  "Age" "Gender"

然后,在读取 csv 时:

In [62]: pd.read_csv("/tmp/a.csv", sep='\s+', quotechar='"')
Out[62]:
Name Birth Month Origin Age Gender
0 Carly Jan Uk 10 F
1 Rachel Sep UK 20 F
2 Nicky Sep MEX 30 F
3 Wendy Oct UK 40 F
4 Judith Nov MEX 39 F

或者您也可以将 Birth Month 更改为 Birth_Month

对于“404 Not Found”错误,问题是您没有为“/”定义任何路由。所以,(在编辑 csv 的标题之后)我会做类似的事情:

from flask import *
import pandas as pd
app = Flask(__name__)

@app.route("/tables")
def show_tables():
data = pd.read_csv("/tmp/a.csv", sep='\s+', quotechar='"')
data.set_index(['Name'], inplace=True)
data.index.name=None
females = data.loc[data.Gender=='F']
return render_template('view.html',tables=[females.to_html(classes='female')],

titles = ['na', 'Female surfers'])

@app.route("/")
def show_home():
return "Hello Guys! Visit: <a href='/tables'> this link </a>"

if __name__ == "__main__":
app.run(debug=True)

关于python - 如何将 Pandas 数据框显示为 flask 引导表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39403529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com