绘制pandas groupby

时间:2016-01-16 10:07:11

标签: python pandas matplotlib

我有一个包含一些汽车数据的数据框 - 结构非常简单。我有一个ID,生产年份,公里,价格和燃料类型(汽油/柴油)。

In [106]:
stack.head()

Out[106]:
    year    km      price   fuel
0   2003    165.286 2.350   petrol
1   2005    195.678 3.350   diesel
2   2002    125.262 2.450   petrol
3   2002    161.000 1.999   petrol
4   2002    164.851 2.599   diesel

我正在尝试使用pylab / matplotlib生成图表,其中x轴将是年份,然后使用groupby,有两个图(每种燃料类型一个),平均值按年(平均函数)的价格和km。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

也许有更直接的方法,但我会做以下事情。首先是groupby并采取价格手段:

meanprice = df.groupby(['year','fuel'])['price'].mean().reset_index()

和km:

meankm = df.groupby(['year','fuel'])['km'].mean().reset_index()

然后我将合并两个结果数据帧以将所有数据合二为一:

d = pd.merge(meanprice,meankm,on=['year','fuel']).set_index('year')

将索引设置为year ley us在使用pandas进行绘图时可以轻松完成。结果数据框为:

        fuel   price       km
year                         
2002  diesel  2.5990  164.851
2002  petrol  2.2245  143.131
2003  petrol  2.3500  165.286
2005  diesel  3.3500  195.678

最后,您可以按fuel绘制过滤:

d[d['fuel']=='diesel'].plot(kind='bar')

d[d['fuel']=='petrol'].plot(kind='bar')

获得类似的东西:

enter image description here

enter image description here

我不知道这是否是您期望的那种情节,但您可以使用kind关键字轻松修改它们。希望有所帮助。