Расчет скользящего среднего температурных аномалий - питон - PullRequest
0 голосов
/ 04 ноября 2019

Набор данных индексируется по году-месяцу-дню (датам) и имеет столбцы TMAX и TMIN.

Мне нужно рассчитать скользящее среднее для каждой из рассчитанных вами аномалий. Используйте окно на 10 лет и выровняйте его по центру, затем добавьте это к своему графику.

Эта часть кода создает график аномалий:

tmaxanom = cll.TMAX - cll.TMAX.mean()
tminanom = cll.TMIN - cll.TMIN.mean()
yearlytmax = tmaxanom.resample('1y').mean()
yearlytmin = tminanom.resample('1y').mean()
ax = plt.plot(yearlytmax, color='red', lw=2, ms=3, marker='o')
ax = plt.plot(yearlytmin, color='blue', lw=2, ms=3, marker='o')
plt.legend(('TMAX Anomaly', 'TMIN Anomaly'), loc='best')
plt.xlabel("Year")
plt.ylabel("Degrees C")
plt.title("Temperature Anomalies in College Station, Texas")

Я пытаюсь рассчитать скользящее среднее следующим образом:

rolmean = yearlytmax.rolling(window=10, center=True)
rolmean2 = yearlytmin.rolling(window=10, center=True)
plt.plot(rolmean, color='pink', label='Rolling Mean Max')
plt.plot(rolmean2, color='yellow', label='Rolling Mean Min')

Однако это вызываетpython для выдачи ошибки: NotImplementedError: См. проблему # 11704 https://github.com/pandas-dev/pandas/issues/11704

Я перешел по ссылке, однако до сих пор не уверен, как решить эту проблему.

Пример данных:

DATE TMAX. TMIN 1951-08-01 37.8 22.8 1951-08-02 37.8 22.2 1951-08-03 40.0 23.9 1951-08-04 41.7 26.7 1951-08-05 41.1 26.1 1951-08-06 40.6 26.7 1951-08-07 38.9 24.4 1951-08-08 39.4 25.0 1951-08-09 38.9 24.4 1951-08-10 38.9 24.4 1951-08-11 38.9 22.2 1951-08-12 40.0 23.3 1951-08-13 40.6 22.8 1951-08-14 41.1 25.6 1951-08-15 41.1 23.9 1951-08-16 42.2 24.4 1951-08-17 41.7 24.4 1951-08-18 36.7 21.7 1951-08-19 31.7 23.3 1951-08-20 36.7 21.7 1951-08-21 38.3 23.3 1951-08-22 39.4 22.2 1951-08-23 37.2 23.9 1951-08-24 37.8 23.3 1951-08-25 38.3 23.9 1951-08-26 37.8 23.3 1951-08-27 37.8 23.9 1951-08-28 38.3 22.8 1951-08-29 38.3 23.3 1951-08-30 38.9 23.9 ... ... ...

1 Ответ

0 голосов
/ 05 ноября 2019

Я заставил его работать, добавив .mean() в конец каждой из скользящих средних команд, так что это выглядит так:

rolmean = yearlytmax.rolling(window=10, center=True).mean()
rolmean2 = yearlytmin.rolling(window=10, center=True).mean()
...