2012-10-31 48 views
9

好的,我有6個可能的數據值,分別是'32','22','12','31','21'和'11'。我有這些存儲爲字符串。 python是否有可能對數據進行排序,並且只是創建六個倉,並顯示每個倉庫有多少個倉?或者直方圖的輸入是數值的嗎?在python中製作字符串值的柱狀圖

+2

條形圖與直方圖之間存在差異。條形圖適用於此,而直方圖則不適用。 –

+0

好的,但如果我使用條形圖,我必須手動排序每一塊數據以確定繪圖之前它在哪個類別?有沒有辦法讓它像直方圖那樣對我進行排序? –

+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 

是這樣的?

0

假設data是列表,你想在一個箱計數的數字。我將使用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。 – 2012-10-31 12:46:21

+0

它有什麼問題?爲什麼不是pythonic? – useratuniv

+1

列表理解是Pythonic,顯式循環不是。 – 2012-10-31 12:55:15

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。 –