В моем наборе данных содержится тысячи точек, каждый с меткой времени. Я хочу запросить базу данных для всех точек, усреднить значения точек, чтобы получить набор точек, где каждая отдельная точка представляет собой средние значения для всех точек, взятых за тот же час.Совокупные группы точек данных
Например, сказать, что мои точки (в формате [time, value]
) являются [5:15, 10]
, [5:20, 12]
, [5:45, 14]
и [6:00, 11]
, я хотел бы, чтобы вычислить набор [[5:00, 12], [6:00, 11]]
Есть ли элегантный способ для достижения этой цели с Джанго querysets, или мне нужно будет выполнять множество небольших запросов, агрегирующих за каждый час, и составить окончательный список вручную?
EDIT: models.py
class Entry(models.Model):
temp_data = models.DecimalField(max_digits=20, decimal_places=10)
humidity_data = models.DecimalField(max_digits=20, decimal_places=10)
node = models.IntegerField()
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return 'Node {} - Time {}'.format(self.node, self.timestamp)
Я хотел бы сделать это агрегирование для обоих temp_data и humidity_data значения
Благодаря
Я хочу знать, как вы вычислили набор '[[5:00, 12], [6:00, 11]]', и я думаю, что код модели необходим. – shellbye
Добавлен код модели. Кроме того, '[[5:00, 12], [6:00, 11]]' является средним значением для всех точек данных, отмеченных с 5: 00-5: 59 (т.е. (10 + 12 + 14)/3 = 12), timestamped в начале часа (5:00) и среднее значение для всех точек с 6: 00-6: 59 (11/1) с отметкой 6:00 ... Это имеет смысл? – rfj001
Все ли ваши метки времени принадлежат к тому же дню? Или вам нужно отфильтровать их также по дате? –