我有一个包含一些汽车数据的数据框 - 结构非常简单。我有一个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。
任何帮助都将不胜感激。
答案 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')
获得类似的东西:
我不知道这是否是您期望的那种情节,但您可以使用kind
关键字轻松修改它们。希望有所帮助。