2014-11-26 44 views
6

Ben pandalar aşağıdaki veri çerçevesini (df) sahiptir:pandalar arsa histogram veri çerçevesi endeksi

 NetPrice Units Royalty 
Price      
3.65 9.13 171 57.60 
3.69 9.23  13  4.54 
3.70 9.25 129 43.95 
3.80 9.49 122 42.76 
3.90 9.74 105 38.30 
3.94 9.86 158 57.35 
3.98 9.95  37 13.45 
4.17 10.42  69 27.32 
4.82 12.04 176 77.93 
4.84 24.22 132 59.02 
5.16 12.91 128 60.81 
5.22 13.05 129 62.00 

Ben Birimleri "nin bir y ekseni ile (Fiyat endeksi)" konulu bir histogram oluşturmak çalışıyorum . ölçek '

: "..?

plt.hist(df.index) 

Bu bana y eksenine Birimleri ekleyebilir nasıl fiyatı gösteren bir histogram verir şu anda bu sadece bir olan aşağıdaki ile başladı' Teşekkür ederiz!

+0

Histogram gösterileri Değerlerin tek bir veri kümesinde dağılımı (örneğin, 3.6 ve 3.8 arasında kaç tane). Birbirinize karşı iki şey çizmek istiyorsanız, muhtemelen sadece bir çubuk grafik istiyorsunuz. 'Plt.bar (df.index, df.Units)' ı deneyin – snorthway

+0

Verilerimden bazıları oldukça büyüktür, bu nedenle bir çubuk grafik çalışmayacaktır. Her bir kutuda kaç tane birim satıldığını görebilmem için "Bir kaç tane 3,6 ile 3,8 arasında düşüyor" ün sayısını istiyorum. – DigitalMusicology

cevap

13

Verileriniz zaten kısmen toplu olduğundan, doğrudan hist() yöntemlerini kullanamazsınız. @snorthway'in yorumlarda da söylediği gibi, bunu bir çubuk grafikle yapabilirsiniz. Verilerinizi yalnızca önce kovalara koymanız gerekir. Verileri kovalara koymanın en sevdiğim yolu, cut() pandalarıdır. Yani şimdi var

df['bucket'] = pd.cut(df.Price, 10) 
print df.head() 

     Price Units   bucket 
0 8.248691  98 (7.307, 8.71] 
1 3.776487  8 (3.0999, 4.502] 
2 3.943656  89 (3.0999, 4.502] 
3 2.854063  27 (1.697, 3.0999] 
4 6.730815  29 (5.905, 7.307] 

:

np.random.seed(1) 
n = 1000 
df = pd.DataFrame({'Price' : np.random.normal(5,2,size=n), 
        'Units' : np.random.randint(100, size=n)}) 

en 10 eşit aralıklı kova içine fiyatları koyalım:

kolay olduğunu bazı kullanmak vermedi beri en bazı örnek verilerini kuralım kova aralığını içeren bir alan. Bu kovalara başka isimler vermek istiyorsanız, mükemmel Pandas documentation numaralı telefondan bunu okuyabilirsiniz. Şimdi birimlerini eklemek için Pandalar groupby() yöntem ve sum() kullanabilirsiniz:

kazanan benziyor
newdf = df[['bucket','Units']].groupby('bucket').sum() 
print newdf 
        Units 
bucket     
(-1.122, 0.295]  492 
(0.295, 1.697]  1663 
(1.697, 3.0999] 5003 
(3.0999, 4.502] 11084 
(4.502, 5.905] 15144 
(5.905, 7.307] 11053 
(7.307, 8.71]  4424 
(8.71, 10.112]  1008 
(10.112, 11.515]  77 
(11.515, 12.917] 122 

... şimdi hadi çizmek let:

newdf.plot(kind='bar') 

enter image description here

İlgili konular