首页 > 解决方案 > 在熊猫中按月绘制图表

问题描述

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

请建议我如何为一列降雨量绘制每个月的图表。

标签: pythonpandasmatplotlibscikit-learnpandas-groupby

解决方案


作为@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从六月开始。

在此处输入图像描述

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

在此处输入图像描述


推荐阅读