2013-10-05 1 views
25

別の質問で、Counter()を使用して文字列の集合内での出現回数を数えることができました。だから['A','B','A','C','A','A']があればCounter({'A':3,'B':1,'C':1})が得られます。しかし、今、私はどのようにヒストグラムを構築するためにその情報を使用することができますか?PythonでCounter()を使ってヒストグラムを作成していますか?

+2

ヒストグラムを作成するにはnumpyとmatplotlibを使うことをお勧めします。 – jabaldonedo

+0

技術的に[matplotlib](http://matplotlib.org/) –

+4

を見てみましょう。それはヒストグラムです - それは成分(文字)と頻度(発生する回数)。これを棒グラフにする方法を尋ねていますか? –

答えて

42

ヒストグラムの代わりにbarchartを使用する方がよいでしょう。このコードをチェックアウト:

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() 

結果: enter image description here

+0

OPのデータがヒストグラムに最も適していたらどうなりますか?私はそれがゲームに遅れていることを知っていますが、私はあなたの回答をヒストグラムの例に適用するように更新したいと思います(しかし、私はまだそれを行う方法がわかりません)。それは質問のタイトルに答えるだろう。 –

+0

@ThomasMatthewは技術的にヒストグラムです。 "ヒストグラムの代わりにbarchart"は、 'matplotlib.pyplot.hist'の代わりに' matplotlib.pyplot.bar'を使うことを参照しています。私はバーがカウンター(OPが欲しかったもの)でうまくいくと信じています。それは – Igonato

+0

です。これは3年前の質問です。 – Igonato

9

あなたはpandasを使用してこれを行うにはいくつかの本当に簡潔なコードを書くことができます。

に結果の
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') 

enter image description here

関連する問題