9

好的,所以我有六个可能的数据值,分别是“32”、“22”、“12”、“31”、“21”和“11”。我将这些存储为字符串。python是否有可能对数据进行排序并只制作六个垃圾箱并显示我有多少个垃圾箱?还是直方图的输入必须是数字的?

4

4 回答 4

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}
于 2012-10-31T11:48:55.607 回答
7

你考虑过使用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})
于 2012-10-31T12:30:45.707 回答
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

像这样的东西?

于 2012-10-31T11:46:21.810 回答
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图表库来绘制条形图。也许您可以使用这篇文章来检查 matplotlib 用于绘制条形图的情况。

于 2012-10-31T11:53:11.643 回答