У меня есть база данных, в которой есть голоса.Эти записи о голосовании состоят из: «Отметка времени; оценка»
Счет представляет собой целое число.
Я хочу создать тепловую карту, поэтому я хочу иметь информационный кадр со значениями для каждого часа в каждомрабочий день со средним баллом всех баллов за этот период.
Если в часе этого рабочего дня нет значений, установите среднее значение 0.
Таким образом, я пришел к этому:
gdf = pd.read_sql("select * from scores where survey_id='{}'; ".format(survey_id), self.db_conn)
gdf = gdf.set_index(['time_stamp'])
gdf.index = pd.to_datetime(gdf.index, unit='s')
if len(gdf) == 0:
return None
gdf['weekday'] = gdf.index.weekday
# gdf['hour'] = gdf.index.hour
gdf = gdf.groupby(by=[gdf['weekday'], pd.Grouper(freq='H')]).agg(['mean']).fillna(0)
Результат этого:
score weekday hour
mean mean mean
weekday time_stamp
0 2018-10-22 17:00:00 1.600000 0 17
1 2018-10-23 09:00:00 2.666667 1 9
2 2018-10-31 14:00:00 3.000000 2 14
2018-10-31 19:00:00 4.000000 2 19
Это пропускает все остальные часы недели со значением 0 в качестве среднего.
Есть предложения, что я делаю не так?
Спасибо !!:)