У меня есть почасовые данные в пандах около 10 лет. Иногда данные отсутствуют за 2-3 месяца. Я хочу заполнить пропущенные периоды. Процесс, о котором я подумал, заключается в следующем.
- Создать один год почасовых временных рядов из доступных данных, которые
рассчитывается по средним значениям для каждого дня и часа.
- Заполните пропущенные значения из этого среднего временного ряда.
- Например, если 2009/01/28 13:00 отсутствует, он найдет 01/28 13:00 из временных рядов, рассчитанных на первом шаге, и заполнит его.
Я много пытался искать, но не смог выполнить эту задачу.
Любая помощь будет оценена.
Edit:
Это моя попытка до сих пор. Я все еще проверяю это. Хотя это занимает много времени.
for count in dfaverage.index:
currentday = count.day
currentmonth = count.month
currenthour = count.hour
match_timestamp=('{:02}').format(currentmonth) + '-' + ('{:02}').format(currentday) + ' ' + ('{:02}').format(currenthour)
#print(match_timestamp)
value = df.loc[df.index.strftime('%m-%d %H') == match_timestamp].mean()
dfaverage.loc[count]['value'] = value
for count in df.index:
if math.isnan(df.loc[count]):
currentday = count.day
currentmonth = count.month
currenthour = count.hour
match_timestamp=('{:02}').format(currentmonth) + '-' + ('{:02}').format(currentday) + ' ' + ('{:02}').format(currenthour)
value = dfaverage.loc[dfaverage.index.strftime('%m-%d %H') == match_timestamp].mean()
df.at[count, 'AtmPressurekPa'] = value
Теперь я хочу перебрать каждый элемент этого пустого набора данных, найти соответствующие значения дня, месяца и часа из основного кадра данных (df), усреднить его и назначить этому временному ряду.
Позже я буду использовать временные ряды dfaverage, чтобы заполнить пропущенные значения в временных рядах df.