Python強化訓練筆記(三)——詞頻的統計


現有列表如下:

[6, 7, 5, 9, 4, 1, 8, 6, 2, 9]

希望統計各個元素出現的次數,可以看作一個詞頻統計的問題。

我們希望最終得到一個這樣的結果:{6:2, 7:1...}即 {某個元素:出現的次數...}

首先要將這些元素作為字典的鍵,建立一個初值為空的字典:

>>> from random import randint
>>> l = [randint(1,10) for x in xrange(10)]
>>> l
[6, 7, 5, 9, 4, 1, 8, 6, 2, 9]
>>> d = dict.fromkeys(l, 0)
>>> d
{1: 0, 2: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}
# 現在的任務是需要將d中每個鍵所對應的值統計出來
>>> for x in l:
>>>     d[x] += 1
>>> d
{1: 1, 2: 1, 4: 1, 5: 1, 6: 2, 7: 1, 8: 1, 9: 2}
# 這就統計完了所有的元素出現的次數

 

另外一種方法,利用collections模塊中的Counter對象

>>> from collections import Counter
# 這個Counter可以直接接受一個列表,將它轉化為統計完成的結果
>>> d = Counter(l)
>>> d
Counter({6: 2, 9: 2, 1: 1, 2: 1, 4: 1, 5: 1, 7: 1, 8: 1})
# 該Counter對象是字典對象的子類,也可以通過鍵來訪問對應值
>>> d[6]
2
# Counter對象方便之處在於它內置有most_common(n)方法,可以直接統計出前n個最高詞頻
>>> d.most_common(2)
[(6, 2), (9, 2)]

 

下面進行實踐,對某篇文章進行詞頻統計,得到詞頻最高的十個詞。

>>> import re
>>> from collections import Counter
>>> txt = open('CodingStyle.txt').read()
>>> new_txt = re.split('\W+', txt)
>>> result = Counter(new_txt)
>>> result.most_common(10)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM