我正在开发一个Django Web应用程序,该应用程序使用bokeh在浏览器中可视化存储在SQLite中的数据。
由于我想将数据显示为stacked area plot,因此得出结论,在绘制之前,使用pandas库将django模型中的数据保存到数据框可能会有所帮助。
我的Django models.py
包含以下模型:
class Activity(models.Model):
def __str__(self):
return self.title
title = models.CharField(max_length=50)
sport = models.ForeignKey(Sport, on_delete=models.CASCADE)
date = models.DateField(blank=False)
duration = models.FloatField()
distance = models.FloatField(blank=True, null=True)
description = models.CharField(max_length=50, blank=True, null=True)
trace_file = models.ForeignKey(TraceFiles, on_delete=models.CASCADE, blank=True, null=True)
SQLite数据库中的一些示例数据可能类似于:
| id | title | date | duration | sport_id | trace_file_id | description | distance |
|--------------------------------------------------------------------------------------------|
| 1 | biking01 | 2019-01-01 | 183 | 1 | 16 | NULL | 142 |
| 2 | running17 | 2019-01-01 | 45 | 2 | 2 | NULL | 14 |
| 3 | biking02 | 2019-01-01 | 67 | 1 | 18 | NULL | 45 |
从模型读取并将数据转换为熊猫数据框的最佳方法是什么?例如,我的views.py
中有类似的代码:
from .models import Activity
import pandas as pd
activities = Activity.objects.all().order_by("-date")
...
类似于this example中的数据框,我想获得一个如下所示的数据框,以便绘制散景区域图。
sport_id duration date
0 1 183 2019-01-02
1 1 67 2019-05-06
2 2 45 2019-03-04
感谢您的帮助。
答案 0 :(得分:1)
如果您只是想简单地导出数据以在Django应用程序外部进行可视化,请查看ImportExportModelAdmin https://django-import-export.readthedocs.io/en/latest/api_admin.html
您可以对每个项目的列表进行for循环,然后将列表设置为新的df列
import pandas as pd
df = pd.DataFrame()
game = []
for i in range(0,len(yourquery)):
game.append(yourquery[i].game_id)
df['game_id'] = game
我以前没有使用过bokeh,但是我使用过plotly.py,从经验来看,图表加载速度非常慢。考虑使用诸如plotly.js之类的东西,该东西可以呈现相似的图表,但是从后端传递的json数据中。我正在研究的当前项目(可能与您的相似)使用plotly.js site