过滤数据帧的熊猫直方图

时间:2014-03-18 22:07:28

标签: python matplotlib pandas histogram

最后一个小时,这让我很生气。我可以在使用时绘制直方图:

hist(df.GVW, bins=50, range=(0,200))

当我需要在其中一列中过滤给定条件的数据帧时,我使用以下内容,例如:

df[df.TYPE=='SU4']

到目前为止,一切正常。当我尝试获取此过滤数据的直方图时,我收到一个关键错误:KeyError: 0L。我将以下内容用于过滤数据的直方图:

hist(df[df.TYPE=='SU4'].GVW, bins=50, range=(0,200))

某处有语法错误吗?谢谢你的帮助!

2 个答案:

答案 0 :(得分:10)

也许尝试使用.values属性(这会将数据作为numpy数组返回),所以:

hist(df[df.TYPE=='SU4'].GVW.values, bins=50, range=(0,200))

我认为这不起作用的原因是因为matplotlib hist方法试图访问输入的第一个0 - 索引元素。但是因为系列使用其整数索引作为标签而不是位置,这给切片系列带来了一个关键错误(因为第一个元素不再具有索引0


事实上,正如@AndyHayden所说,你也可以使用pandas hist方法:

df[df.TYPE=='SU4'].GVW.hist(bins=50)

答案 1 :(得分:4)

我有一个类似的问题,绘制了一个使用查询导出的数据帧。我发现如果在派生帧之后我在派生帧上使用了reset_index()函数,它就解决了这个问题。