python - 在熊猫中按月绘制图表
问题描述
我有一个数据集: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'
请建议我如何为一列降雨量绘制每个月的图表。
解决方案
作为@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
并获得: