我想在一个国家找到20个最常见的名字及其频率。
假设我列出了所有居民在100个城市的名字。每个列表可能包含许多名称。假设我们说的是100个列表,每个列表包含1000个字符串。
在全国范围内获取20个最常见名称及其频率的最强高效方法是什么?
这是我开始的方向,假设我将每个城市都放在同一目录的文本文件中:
pandas
和collection
模块。Counter
模块将其转换为集合,然后转换为DataFrame(使用to_dict
)。 但是,我认为这种方法可能不起作用,因为DataFrame可能会变得太大。
想听听有关这方面的任何建议。谢谢。
答案 0 :(得分:1)
以下是示例代码:
import os
from collections import Counter
cities = [i for i in os.listdir(".") if i.endswith(".txt")]
d = Counter()
for file in cities:
with open(file) as f:
# Adjust the code below to put the strings in a list
data = f.read().split(",")
d.update(Counter(data))
out = d.most_common(10)
print(out)
答案 1 :(得分:0)
您也可以使用NLTK库,我使用下面的代码用于类似目的。
from nltk import FreqDist
fd = FreqDist(text)
top_20 = fd.most_commmon(20) # it's done, you got top 20 tokens :)