2016-01-16 124 views
0

我有一個數據框與一些汽車數據 - 結構非常簡單。我有一個ID,生產年份,公里,價格和燃料類型(汽油/柴油)。Plotting pandas groupby

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,有兩個曲線(每個燃料類型)與由年的平均值(平均功能)的價格和公里。

任何幫助,將不勝感激。

回答

1

也許有更直接的方法來做到這一點,但我會做下面的事情。首先GROUPBY並採取手段進行價格:

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

和公里

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

然後我會合並了兩個結果dataframes得到一個所有數據:

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

設置該指數爲year ley我們可以在用熊貓進行繪圖時輕鬆完成任務。所得到的數據幀是:

 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關鍵字輕鬆修改它們。希望有所幫助。

+0

或多或少。我想製作兩條線 - 一條是價格,另一條是公里,兩條線(柴油和汽油)。 – freethrow