如何在 Django 中显示多行 csv 文件?
How to display rows of csv file in django?
我有一个 django 应用程序,它允许用户上传一个 csv 文件,比如大学排名的 csv 文件。我必须处理已上传的数据。例如,将任何具有字符串值的列灰显并计算均值和标准差。列的所有值的偏差。为此,我使用 Pandas 并将 csv 文件转换为 pandas 数据帧。
如何使用 django 显示来自 csv 文件的数据集?列名不能硬编码,因为用户可以上传任何 csv 文件。我检查了 django-tables2 并做了以下
csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
context = {'loaded_data': data}
return render(request, "dataflow/table.html", context)
但我收到错误 ValueError: Expected table or queryset, not DataFrame
django-tables2
无法处理 dataframes
。你已经把它转换成 django-tables2
可以理解的东西,即:
from django_tables2.tables import Table
在视图中:
csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
df_table = Table(data.to_dict(orient='list'))
context = {'df_table': df_table}
return render(request, "dataflow/table.html", context)
在模板中:
{% load render_table from django_tables2 %}
{% render_table df_table %}
这是一个简单的示例,您可能需要在 dataframe
上做更多的工作,甚至 class 对 Table
class。
Pandas dataframe 可以自行转换为 html table。你可以试试
csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
data_html = data.to_html()
context = {'loaded_data': data_html}
return render(request, "dataflow/table.html", context)
在html页面中,使用{{loaded_data | safe}}
渲染table。
我有一个 django 应用程序,它允许用户上传一个 csv 文件,比如大学排名的 csv 文件。我必须处理已上传的数据。例如,将任何具有字符串值的列灰显并计算均值和标准差。列的所有值的偏差。为此,我使用 Pandas 并将 csv 文件转换为 pandas 数据帧。
如何使用 django 显示来自 csv 文件的数据集?列名不能硬编码,因为用户可以上传任何 csv 文件。我检查了 django-tables2 并做了以下
csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
context = {'loaded_data': data}
return render(request, "dataflow/table.html", context)
但我收到错误 ValueError: Expected table or queryset, not DataFrame
django-tables2
无法处理 dataframes
。你已经把它转换成 django-tables2
可以理解的东西,即:
from django_tables2.tables import Table
在视图中:
csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
df_table = Table(data.to_dict(orient='list'))
context = {'df_table': df_table}
return render(request, "dataflow/table.html", context)
在模板中:
{% load render_table from django_tables2 %}
{% render_table df_table %}
这是一个简单的示例,您可能需要在 dataframe
上做更多的工作,甚至 class 对 Table
class。
Pandas dataframe 可以自行转换为 html table。你可以试试
csvfile = request.FILES['csv_file']
data = pd.read_csv(csvfile.name)
data_html = data.to_html()
context = {'loaded_data': data_html}
return render(request, "dataflow/table.html", context)
在html页面中,使用{{loaded_data | safe}}
渲染table。