1

我正在尝试从多个来源绘制随时间变化的计数,但是当收集作业在一个(或多个,但不是全部)来源上失败时出现问题。

假设我有一组数据,例如:

 date       |  count
---------------------
 10-11-2013 |   50
 11-11-2013 |   52
 13-11-2013 |   63

和另一个喜欢

 date       |  count
---------------------
 10-11-2013 |   15
 11-11-2013 |   19
 12-11-2013 |   17
 13-11-2013 |   20

无论出于何种原因,我错过了第一个 12 日的数据输入。如果我只是在处理这个单个对象,那么我可以通过跳过该元素来很好地绘制它,而那一天的线条将是不准确的。

我遇到的问题是当我有多个来源时,其中至少有一个成功地报告了当天的结果。我有一个查询集,它获取所有每日计数的总和:

DailyCount.objects.values('date').annotate(count=Sum('count')).order_by('date')

结果显示,12 日的参赛人数要低得多。每当发生这种情况时,使图表看起来非常错误。

 date       |  count
---------------------
 10-11-2013 |   65
 11-11-2013 |   71
 12-11-2013 |   17
 13-11-2013 |   83

如果不存在,有没有办法让我的查询集使用上一个日期的计数?我想过将前一天的计数添加到数据库中,但是当我无法验证时,将一些(可能是错误的)数据添加到数据库中似乎是不对的。

理想情况下,我认为它看起来像:

 date       |  count
---------------------
 10-11-2013 |   65
 11-11-2013 |   71
 12-11-2013 |   69
 13-11-2013 |   83
4

1 回答 1

0

这取决于您如何显示图表。您还可以在其中pandas存储时间序列数据,它们提供您所描述的功能:通过使用先前或未来的值(即pandas.DataFrame.fillna)回填或前向填充任何缺失值。一方面,仅将那个库用于该功能是多余的,但如果您计划进行更多数据操作,您可能会发现它很有用。

我不认为 DjangoQuerySet可以填充缺失值,因为它不是为此而构建的。但是,您可以通过从查询结果中获取值并在显示图表之前计算正确的每日值来手动计算它。

于 2013-11-13T22:40:56.823 回答