如何统计出序列中元素出一的频度
python备忘

某随机序列[12,3,6,5,6,7,7,...]中找到出现次数最高的三个元素,它们出现的次数是多少?
对某英文文章的单词进行词频统计,找到出现次数最高的10个单词,它们出现的次数是多少?
首先我们创建一个随机序列
from random import randint data = [randint(0,20) for _ in xrange(30)]
我们想要的结果应该是一个字典比较直观,比说是{2:5,3:2,...} #2出现了5次,3出现了2次这个样子
c = dict.fromkeys(data,0) for x in data: c[x]+=1 print(c)
这样我们就统计出了序列中数字出现的频度,然后进行一个排序,就得到了想要的结果。这是常规做法,效率低下,而且啰嗦。
from collections import Counter c2 = Counter(data) print(c2.most_common(3))
这样我们就找到了出现频度最高的3个元素,Counter是专门处理这方面的模块,很好用。下面我们来研究一下如何对英文文章进行词频统计,假设我们程序下有一篇名为article.txt的文章
from collections import Counter import re txt = open('article.txt').read() c3 = Counter(re.split('\W+',txt)) #以非字母进行分割 print(c3.most_common(3))
这样我们就得到了出现频率最高的3个单词