2016-03-24 11 views
1

olarak sıralanmış tarihle arsa ı aşağıdaki biçimde df bir pandalar dataframe varpiton pandalar GroupBy XTick

İstediğim x değeri olarak tarihle iki grubu temsil eden iki eğrileri ile bir figür olduğunu
date   value  team 
12/8/2015  1.2   'A' 
12/8/2015  1.3   'A' 
12/7/2015  1.2   'A' 
12/6/2015  1.3   'B' 
12/6/2015  1.1   'B' 
12/7/2015  1.3   'B' 
............................... 

, Y değeri olarak karşılık gelen tarihin ortalama değeri. piton

for label, group in df.groupby('team']): 
     group.plot(x=group['date'], y=group['date'].mean(),label=label) 

cevap

2

"sayısal için ... 12/8/2015 dönüştürülemedi" şikayet olarak ne bana zahmet, tarih biçimi değil doğru görünüyor olduğunu bir zaman damgasına tarihinizi dönüştürmek için ihtiyacınız .

df['date'] = pd.to_datetime(df.date) 

Sonra grubunu can ve istediğiniz verileri almak için unstack:

>>> df.groupby(['date', 'team']).sum().unstack('team') 
      value  
team   'A' 'B' 
date     
2015-12-06 NaN 2.4 
2015-12-07 1.2 1.3 
2015-12-08 2.5 NaN 

.plot() ekleyin ve istediğiniz sonucu almak gerekir.

+0

Bir takip sorusu, çizim işlevini kullandıktan sonra, lejantın yalnızca 'tarih' ve 'takım' yerine 'takım' gösterdiğinin göstergesi – Jin

+0

boşver, burada cevap http://stackoverflow.com/questions/ 13886019/rekonstrüksiyon-figür-lejand-pandalar – Jin

+0

Ben df2 = df.groupby (['tarih', 'takım']) önermek için gidecektim sum(). ('Takım') ', df2. columns = df2.columns.droplevel() – Alexander