2013-10-05 17 views
25

Başka bir soruda, bir dizi dizideki olay sayısını saymak için Counter() kullanabileceğimi gördüm. Yani ['A','B','A','C','A','A'] varsa Counter({'A':3,'B':1,'C':1}) alırım. Ama şimdi, bu bilgiyi örneğin bir histogram oluşturmak için nasıl kullanabilirim?Histogram oluşturmak için Python'da Sayaç() kullanma?

+2

İsterseniz histogram oluşturmak için numpy ve matplotlib kullanmanızı öneririm – jabaldonedo

+0

Teknik olarak [matplotlib] (http://matplotlib.org/) –

+4

'a bakın, bu * bir histogramdır - bileşenleri (harfleri) ve sıklığı vardır (meydana geldiklerinde). Bunu bir çubuk grafiğe nasıl dönüştüreceğinizi soruyor musunuz? –

cevap

42

Verileriniz için, bir çubuk grafik yerine histogram kullanmak muhtemelen daha iyidir.

from collections import Counter 
import numpy as np 
import matplotlib.pyplot as plt 


labels, values = zip(*Counter(['A','B','A','C','A','A']).items()) 

indexes = np.arange(len(labels)) 
width = 1 

plt.bar(indexes, values, width) 
plt.xticks(indexes + width * 0.5, labels) 
plt.show() 

Sonuç: Yapacak bazı gerçekten özlü kodu yazabilirsiniz enter image description here

+0

OP'nin verileri bir histogram için en uygun durumdaysa ne olur? Oyuna geç olduğunu biliyorum, ama cevabınızı histogram örneğine uygulanacak şekilde güncellemek istiyorum (ancak henüz nasıl yapacağımı bilmiyorum). Bu sorunun başlığına cevap verirdi. –

+0

@ThomasMatthew teknik olarak, bir histogramdır. "çubuk grafik yerine çubuk grafik", "matplotlib.pyplot.hist" yerine "matplotlib.pyplot.bar" kullanımına daha çok atıfta bulunur. Ben 'bar' (OP istediği) Counter ile daha iyi gider inanıyorum, bu o – Igonato

+0

Ayrıca bu bir şey değişmiş olabilir 3 yaşındaki bir soru – Igonato

9

bu pandas kullanarak:

In [24]: import numpy as np 

In [25]: from pandas import Series 

In [27]: sample = np.random.choice(['a', 'b'], size=10) 

In [28]: s = Series(sample) 

In [29]: s 
Out[29]: 
0 a 
1 b 
2 b 
3 b 
4 a 
5 b 
6 b 
7 b 
8 b 
9 a 
dtype: object 

In [30]: vc = s.value_counts() 

In [31]: vc 
Out[31]: 
b 7 
a 3 
dtype: int64 

In [32]: vc = vc.sort_index() 

In [33]: vc 
Out[33]: 
a 3 
b 7 
dtype: int64 

In [34]: vc.plot(kind='bar') 

sonuçlanan:

enter image description here

bu koda bak
İlgili konular