千家信息网

python如何使用collections.Counter方法实现统计

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,小编给大家分享一下python如何使用collections.Counter方法实现统计,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去
千家信息网最后更新 2024年11月29日python如何使用collections.Counter方法实现统计

小编给大家分享一下python如何使用collections.Counter方法实现统计,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

collections.Counter方法

Counter 是一个容器对象,使用 collections 模块中的 Counter 类可以实现 hash 对象的统计。

Counter 是一个无序的容器类型,以字典的键值对形式存储,其中元素作为 key,其计数作为 value。

计数值可以是任意的 Interger(包括0和负数)。

Counter() 对象还有几个可调用的方法:

  • most_common(n) -- TOP n 个出现频率最高的元素

  • elements -- 获取所有的键 通过list转化

  • update -- 增加对象

  • subtrct -- 删除对象

  • 下标访问 a['xx'] --不存在时返回0

import collectionsc = collections.Counter('helloworld')

直接显示各个元素频次

print(c)# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})

使用 most_common显示最多的n个元素

当多个元素计数值相同时,排列是无确定顺序的。

print(c.most_common(3))# [('l', 3), ('o', 2), ('h', 1)]

使用数组下标获取,类似字典方式:

print("The number of 'o':", c['o'])# The number of 'o': 2

统计列表: (只要列表中对象都是可以哈希的)

import collectionsx = [1,2,3,4,5,6,7,8,1,8,8,8,4,3,5]c = collections.Counter(x)print(c)# Counter({1: 2, 2: 1, 3: 2, 4: 2, 5: 2, 6: 1, 7: 1, 8: 4})print(c.most_common(3))# [(8, 4), (1, 2), (3, 2)]dictc = dict(c) # 转换为字典print(dictc)# {1: 2, 2: 1, 3: 2, 4: 2, 5: 2, 6: 1, 7: 1, 8: 4}

如果列表中有 unhashalbe 对象,例如:可变的列表,是无法统计的。

元组也可以统计。

c = collections.Counter([[1,2], "hello", 123, 0.52])# TypeError: unhashable type: 'list'

得到 Counter 计数器对象之后,还可以在此基础上进行增量更新。

elements() -- 返回迭代器

元素排列无确定顺序,个数小于1的元素不被包含。

'''学习中遇到问题没人解答?小编创建了一个Python学习交流群:531509025寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!'''import collectionsc = collections.Counter(a=4,b=2,c=1)print(c)# Counter({'a': 4, 'b': 2, 'c': 1})list(c.elements())# ['a', 'a', 'a', 'a', 'b', 'b', 'c']

subtract函数 -- 减去元素

import collectionsc = collections.Counter(["a","b","c","a"])print(c)# Counter({'a': 2, 'b': 1, 'c': 1})print(list(c.elements())) # 展开# ['a', 'a', 'b', 'c']# 减少元素c.subtract(["a","b"])print(c)# Counter({'a': 1, 'c': 1, 'b': 0})print(list(c.elements()))# ['a', 'c']

update函数 -- 增加元素

在进行增量计数时候,update函数非常有用。

'''学习中遇到问题没人解答?小编创建了一个Python学习交流群:531509025寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!'''import collectionsc = collections.Counter(["a","b","c","a"])print(c)# Counter({'a': 2, 'b': 1, 'c': 1})print(list(c.elements())) # 展开# ['a', 'a', 'b', 'c']c.update(["a","d"])print(c)# Counter({'a': 3, 'b': 1, 'c': 1, 'd': 1})print(list(c.elements()))# ['a', 'a', 'a', 'b', 'c', 'd']

del函数 -- 删除键

当计数值为0时,并不意味着元素被删除,删除元素应当使用del

import collectionsc = collections.Counter('helloworld')print(c)# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})c["d"] = 0print(c)# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 0})del c["l"]print(c)# Counter({'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 0})

以上是"python如何使用collections.Counter方法实现统计"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0