在熊猫中按月明智地绘制图形

时间:2019-04-20 17:37:41

标签: python pandas matplotlib scikit-learn pandas-groupby

我有一个数据集: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 个答案:

答案 0 :(得分:1)

作为@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是如何从6月开始的。

enter image description here

同时,您可以使用df.index.month并获得:

enter image description here