2016-04-01 21 views
1

ben oldukça basit bir soru olmalıdır düşündüğünü var Sonuçlar, ama ben saatPandalar - Toplamak ve Çıktı

Bir pandalar dataframe üzerinde toplanmış olarak yapmak ve sonra matplotlib kullanarak çizmek istiyorum

için onunla mücadele ediyoruz

Yıllarca büyük bir tablo ve araba modelleri ile başlıyorum. Daha sonra toplam satış fiyatını ve fiyatların bir yüzdesini hesaplamak istiyorum.

yapmam ben bunu yapmak istediğini yapmak gibi görünüyor, ama sonra çıkışı ile ne yapacağını bilmiyorum

percent_asking_price =(df.groupby(['year','model'])['salesprice'].sum()/df.groupby(['year','model'])['askingprice'].sum())*100 

şöyle - görünüyor çıkışı verir gibi:

: Ben onunla ne yapacağını bilemiyorum Bu noktadan itibaren

Sample Output Data

.. Ben böyle bir şey görünmesi için matplotlib kullanarak yıl ve model adının kombinasyonu grafikle göstermek istediğiniz

Sample Chart

A bu hızla r ddply ve ggplot kullanarak gerçekten yapabileceği bir şey olduğu için sinirli biraz, ama sadece her yerde burada bir dataframe çıktı dönüştürme denedi

alamayan, ancak bu

year,model,salesprice,askingprice 
2009,Taurus,25410,30000 
2009,Taurus,8698,10000 
2009,Maxima,11135,15000 
2009,Maxima,8500,10000 
2010,Corvette,25000,30000 
2010,Corvette,18320,20000 
2010,Trans Am,32000,35000 
2010,Trans Am,23620,25000 
: bana her yerde

gerçekten takip sonuçlarını gösterir

küçük bir set yardımcı seviniriz alamadım 10

Son olarak, çıktıyı aşağıdaki gibi görünen bir veri çerçevesine dönüştürmenin bir yolu var, bu yüzden çıktı üzerinde daha fazla iş yapabilirim? Ben .. İlk sütundaki değerleri kaybetmek istemiyorum

enter image description here

teşekkürler yok!

+0

yüzden senin tüm soru üretebilir gruplama önce orijinal veriyi gösterin. –

+0

yıl, model, Çeşit, askingprice 2009 Boğa, 25410,30000 2009 Boğa, 8698,10000 2009 Maxima, 11135,15000 2009 Maxima, 8500,10000 2010 Corvette, 25000,30000 2010 , Corvette, 1832020000 2010, Trans Am, 32000.35000 2010, Trans Am, 23620,25000 –

cevap

1

bu deneyin:

In [383]: df_plt = ((df.groupby(['year','model'])['salesprice'].sum() \ 
    .....:   /\ 
    .....:   df.groupby(['year','model'])['askingprice'].sum())*100).reset_index() 

In [384]: df_plt 
Out[384]: 
    year  model  0 
0 2009 Maxima 78.54 
1 2009 Taurus 85.27 
2 2010 Corvette 86.64 
3 2010 Trans Am 92.70 

In [385]: df_plt['Year_Model'] = df_plt.year.astype(str) + ' ' + df_plt.model 

In [386]: df_plt 
Out[386]: 
    year  model  0  Year_Model 
0 2009 Maxima 78.54 2009 Maxima 
1 2009 Taurus 85.27 2009 Taurus 
2 2010 Corvette 86.64 2010 Corvette 
3 2010 Trans Am 92.70 2010 Trans Am 


In [387]: df_plt = df_plt.set_index('Year_Model')[[0]].rename(columns={0:'Percent Asking Price'}) 

In [388]: df_plt 
Out[388]: 
       Percent Asking Price 
Year_Model 
2009 Maxima     78.54 
2009 Taurus     85.27 
2010 Corvette     86.64 
2010 Trans Am     92.70 

In [389]: matplotlib.style.use('ggplot') 

In [390]: ax = df_plt.plot(kind='bar', rot=0) 

In [391]: ax.yaxis.grid(True) 

enter image description here

+0

Bu işe yarıyor, ancak Pct'yi efsanede nasıl gösterdin? Ayrıca, değerleri (2009, Boğa) yerine, birleştirilmiş metin olarak (yani 2009 Toros) görüntülemenin bir yolu var mı? Teşekkürler –

+0

@Jeff, benim güncellenmiş cevabımı kontrol edin – MaxU

+0

Şaşırtıcısın .. Teşekkür ederim! Hayal kırıklığına uğramış R çok daha kolay .. bu çılgınlık –