Построение графика по месяцам в пандах - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть набор данных: df.head(4)

               Dewptm   Fog  Humidity   Pressurem     Tempm      Wspdm  Rainfall
datetime_utc                            
1996-11-01    11.666667 0.0  52.916667  -2659.666667  22.333333  2.466667   0
1996-11-02    10.458333 0.0  48.625000  1009.833333   22.916667  8.028571   0
1996-11-03    12.041667 0.0  55.958333  1010.500000   21.791667  4.804545   0
1996-11-04    10.222222 0.0  48.055556  1011.333333   22.722222  1.964706   0

Как я мог построить гистограмму осадков для каждого месяца. Однако я не знаю точного подхода, я пробовал что-то подобное, но не получилось.

df.groupby([df['datetime_utc'].dt.month_name()], sort=False).sum().plot(kind="bar",figsize=(18,5),stacked=True,align='center',width=0.9)
plt.ylabel('Rainfall (mm)')
plt.xlabel('Year Wise')

Но я получаю ошибку: KeyError: 'datetime_utc'

Пожалуйста, предложите мне, как я могу построить график для каждого месяца для столбца Дождь.

1 Ответ

1 голос
/ 21 апреля 2019

Как @DamianoC.говорит, datetime_utc ваш индекс.Так что либо:

df = df.reset_index()

df.groupby([df['datetime_utc'].dt.month_name()], sort=False).sum().plot(kind="bar",figsize=(18,5),stacked=True,align='center',width=0.9)
plt.ylabel('Rainfall (mm)')
plt.xlabel('Year Wise')

, либо

df.groupby([df.index.month_name()], sort=False).sum().plot(kind="bar",figsize=(18,5),stacked=True,align='center',width=0.9)
plt.ylabel('Rainfall (mm)')
plt.xlabel('Year Wise')

Однако рекомендуется не использовать строку в качестве индекса для графика.Вместо этого выполните df.index.month и измените метку с помощью ax.set_xticklabels().Например, если ваши данные начинаются с 2018-06-04, вы могли бы получить такой график, отмечая, как x-axis начинается с июня.

enter image description here

Пока вы можете использовать df.index.month и получить:

enter image description here

...