尝试使用matplotlib创建条形图时可能出现基于数据框的错误

时间:2018-01-27 13:08:04

标签: python pandas matplotlib bar-chart

我试图从我转换的数据框创建一个简单的条形图 this使用此代码:

df1 = data[data['PumpState'] == 1.0].groupby('Date').agg({'Pressure': np.mean})

this。现在,这似乎有点奇怪(上面的压力标签)。当我尝试将其转换为字典时,它表明'压力'是关键,Date是一个值(数字完全相反)。

当我尝试从中制作条形图时,我得到了KeyError:' Date'使用此代码:

plt.bar(range(df1.shape[0]), df1['Pressure'], align='center', alpha=0.5)
plt.xticks(range(df1.shape[0]), df1['Date'].values[:], rotation='vertical')
plt.ylabel('Average Pressure')
plt.xlabel('Date')
plt.title('Average Pressure per Day')
plt.show()

当我交换

df1['Date'].values[:]

代表

df1['Pressure'].values[:]

它显示条形图,但x轴上的值不是日期而是压力值。我的猜测是错误是在转换中的某个地方我使用group by和age或者它可能是完全不同的东西。你能帮我吗?谢谢!

2 个答案:

答案 0 :(得分:0)

IIUC你可以这样做:

data[data['PumpState'] == 1.0].groupby('Date')['Pressure'].mean().plot.bar()

答案 1 :(得分:0)

问题确实是df1['Date'].values[:]。数据框没有“日期”列。 "Date"已成为数据框索引。因此,您应该使用索引,

df1.index.values

这将看起来像:

plt.bar(range(df1.shape[0]), df1['Pressure'], align='center', alpha=0.5)
plt.xticks(range(df1.shape[0]), df1.index.values, rotation='vertical')
plt.ylabel('Average Pressure')
plt.xlabel('Date')
plt.title('Average Pressure per Day')
plt.show()