您的位置:首页 > 编程语言 > Python开发

Python中Counter计数统计

2017-02-11 17:23 609 查看
计数统计应用举例:

1.检测样本中某一值出现的次数

2.日志分析某一消息出现的频率

3.分析文件中相同字符串出现的概率等

实现:

1.dict

some_data = ['a','2',2,4,5,'2','b',4,7,'a',5,'d','a','z']

count_frq = dict()

for item in some_data:

if item in count_frq:

count_frq[item] += 1

else:

count_frq[item] = 1

print count_frq

{'a': 3, 2: 1, 'b': 1, 4: 2, 5: 2, 7: 1, '2': 2, 'z': 1, 'd': 1}

2.defaultdict

>>> from collections import defaultdict

>>> some_data = ['a','2',2,4,5,'2','b',4,7,'a',5,'d','a','z']

>>> count_frq = defaultdict(int)

>>> for item in some_data:

...     count_frq[item] +=1

... 

>>> print count_frq

defaultdict(<type 'int'>, {'a': 3, 2: 1, 'b': 1, 4: 2, 5: 2, 7: 1, '2': 2, 'z': 1, 'd': 1})

3.使用set和list

>>> some_data = ['a','2',2,4,5,'2','b',4,7,'a',5,'d','a','z']

>>> count_set = set(some_data)

>>> count_list = []

>>> for item in count_set:

...     count_list.append((item,some_data.count(item)))

... 

>>> print count_list

[('a', 3), (2, 1), ('b', 1), (4, 2), (5, 2), (7, 1), ('2', 2), ('z', 1), ('d', 1)]

4.使用collections.Counter

>>> from collections import Counter

>>> some_data = ['a','2',2,4,5,'2','b',4,7,'a',5,'d','a','z']

>>> print Counter(some_data)

Counter({'a': 3, 4: 2, 5: 2, '2': 2, 2: 1, 'b': 1, 7: 1, 'z': 1, 'd': 1})

Counter类是一个容器对象,属于字典类的子类,用于统计散列对象,支持集合操作+,-,&,|,其中&和|操作分别返回两个Counter对象各元素的最小值和最大值。

3种初始化方式:

Counter("success")   #可迭代对象

Counter(s=3,c=2,e=1,u=1) #关键字参数

Counter({"s":3,"c":2,"u":1,"e":1}) #字典

方法:

1.elements()方法获取Counter中key值

>>> list(Counter(some_data).elements())

['a', 'a', 'a', 2, 'b', 4, 4, 5, 5, 7, '2', '2', 'z', 'd']

2.most_common()方法找出前N个出现频率最高的元素以及对应的次数。

>>> Counter(some_data).most_common(2)

[('a', 3), (4, 2)]

3.update()方法更新被统计对象的元素

>>> c = Counter("success")

>>> c.update("successfully")

>>> c

Counter({'s': 6, 'c': 4, 'u': 3, 'e': 2, 'l': 2, 'f': 1, 'y': 1})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python Counter 计数