溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何使用collections.Counter方法實現(xiàn)統(tǒng)計

發(fā)布時間:2022-03-16 13:43:30 來源:億速云 閱讀:558 作者:小新 欄目:開發(fā)技術

小編給大家分享一下python如何使用collections.Counter方法實現(xiàn)統(tǒng)計,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

collections.Counter方法

Counter 是一個容器對象,使用 collections 模塊中的 Counter 類可以實現(xiàn) hash 對象的統(tǒng)計。

Counter 是一個無序的容器類型,以字典的鍵值對形式存儲,其中元素作為 key,其計數作為 value。

計數值可以是任意的 Interger(包括0和負數)。

Counter() 對象還有幾個可調用的方法:

  • most_common(n) -- TOP n 個出現(xiàn)頻率最高的元素

  • elements -- 獲取所有的鍵 通過list轉化

  • update -- 增加對象

  • subtrct -- 刪除對象

  • 下標訪問 a['xx'] --不存在時返回0

import collections
c = 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

統(tǒng)計列表: (只要列表中對象都是可以哈希的)

import collections
x = [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 對象,例如:可變的列表,是無法統(tǒng)計的。

元組也可以統(tǒng)計。

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

得到 Counter 計數器對象之后,還可以在此基礎上進行增量更新。

elements() -- 返回迭代器

元素排列無確定順序,個數小于1的元素不被包含。

'''
學習中遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流群:531509025
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
import collections
c = 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 collections
c = 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函數非常有用。

'''
學習中遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流群:531509025
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
import collections
c = 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 collections
c = collections.Counter('helloworld')
print(c)
# Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, 'w': 1, 'r': 1, 'd': 1})

c["d"] = 0
print(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方法實現(xiàn)統(tǒng)計”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI