Python 3.x 集合中最常见单词的直方图。计数器对象
我有一个名为Python 3.x 集合中最常见单词的直方图。计数器对象,python-3.x,matplotlib,nlp,Python 3.x,Matplotlib,Nlp,我有一个名为word\u counts的collections.Counter对象。len(字数)为88549。打印(字数)输出的示例为 计数器({'said':21179,‘特朗普’:18425,'clinton':14421,'will':12666,'us':12552,'people':11365,'one':11209,'new':9268,'state':8287,'allow':8217,'president':8148,'campaign':7462,'like':7049,'s
word\u counts
的collections.Counter
对象。len(字数)
为88549。打印(字数)
输出的示例为
计数器({'said':21179,‘特朗普’:18425,'clinton':14421,'will':12666,'us':12552,'people':11365,'one':11209,'new':9268,'state':8287,'allow':8217,'president':8148,'campaign':7462,'like':7049,'states':6687,'hillary':6667,'obama':6572})
我想用文本中5个最常用的单词及其出现次数来绘制一个图
我尝试了
plt.bar(word\u counts.keys(),word\u counts.values())
但代码会一直运行。对于N
最常用的单词,您可以尝试:
from collections import Counter
words = ["this"]*100 + ["is"]*50 + ["an"]*30 + ["example"]*20 + ["of"]*10 + ["counter"]*5
word_counts = Counter(words)
N = 5
mc = word_counts.most_common(N)
plt.bar(*zip(*mc));
为了更好地理解*zip(*mc)
的含义,您可能希望按顺序通过print语句传递它:
print(mc)
[('this', 100), ('is', 50), ('an', 30), ('example', 20), ('of', 10)]
谢谢你的回答,它解决了我的问题。但是我想知道
zip
是什么意思?zip
和mc
中的星号有什么作用?mc
代表最常见的元组列表。有几种方法可以将元组列表解压为两个可编辑的元组。我给你看了一个,星号表示打开包装。如果您对此不满意,可以尝试x=[i[0]for i in mc];y=[i[1]表示mc中的i];plt.bar(x,y)
非常感谢您的详细解释。你的评论很有帮助。
print(*mc)
('this', 100) ('is', 50) ('an', 30) ('example', 20) ('of', 10)
print(list(zip(*mc)))
[('this', 'is', 'an', 'example', 'of'), (100, 50, 30, 20, 10)]
print(*zip(*mc))
('this', 'is', 'an', 'example', 'of') (100, 50, 30, 20, 10)