2012-10-31 16 views
9

これで、 '32'、 '22'、 '12'、 '31'、 '21'、 '11'の6つの値を取ることができます。私はこれらを文字列として格納しています。 Pythonがデータをソートして6つのビンを作成し、それぞれのビンをいくつ表示することは可能ですか?または、ヒストグラムへの入力は数値でなければなりませんか?Pythonで文字列値のヒストグラムを作成する

+2

棒グラフとヒストグラムには違いがあります。棒グラフはここでは適切ですが、ヒストグラムは適切ではありません。 –

+0

OKですが、棒グラフを使用した場合、各データを手動で並べ替えて、プロットする前のカテゴリを特定する必要がありますか?ヒストグラムのように私のためにそれを並べ替える方法がありますか? –

+0

「ヒストグラムのように」とはどういう意味ですか?私が知りませんPythonのヒストグラムライブラリはありますか? –

答えて

15
data = ['32', '22', '12', '32', '22', '12', '31', '21', '11'] 
dict((x, data.count(x)) for x in data) 

結果

{'11': 1, '12': 2, '21': 1, '22': 2, '31': 1, '32': 2} 
+0

ありがとうございました。 –

2
data = ['32', '22', '12', '32', '22', '12', '31', '21', '11'] 
sm = {i:0 for i in ['32', '22', '12', '31', '21','11']} 
for i in data: 
    sm[i] += 1 
print sm 

これはなんですか? dataを想定し

0

はリストであり、あなたは、ビンの中の数字をカウントします。私はbinsを辞書として使用します。

bin = {'11': 0, '12': 0, '21': 0, '22': 0, '31': 0, '32': 0} 

for element in data: 
    if element in bin: # Ignore other elements in data if any 
     bin[element] = bin[element] + 1 

bins辞書は、データリスト内の各要素の周波数を持つことになります。今すぐbinsを使用して、グラフプロットライブラリを使用して棒グラフをプロットすることができます。このpostを使用して、棒グラフをプロットするmatplotlibの使用状況を確認できますか?

+1

それほどPythonicではありません。 –

+0

どうしたのですか?それはなぜpythonicではないのですか? – useratuniv

+1

リスト内包はPythonicです。明示的なループはありません。 –

6

collections.Counterをご検討いただきましたか?

# python 2.7 
>>> l = ['32', '22', '12', '31', '21', '11', '32'] 
>>> import collections 
>>> collections.Counter(l) 
Counter({'32': 2, '11': 1, '12': 1, '21': 1, '22': 1, '31': 1}) 
+0

を参照してくださいありがとう、これは非常に便利だろうが、悲しく、私はPython 2.6.6上にあるようです。 –

関連する問題