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)