如何使用matplotlib或任何其他库创建词频图

时间:2018-12-04 01:37:16

标签: python

我有一个带有标记化字符串/单词的数据框。这是它的样子。 (我基本上是在读取xlsx文件,然后通过删除停用词,标点符号等对文本进行规范化。)

0 [apple, orange, banana...]
1 [banana, apple, date..]
2 [banana, apple, orange...]

现在,我正在尝试使用以下代码绘制10个最常用单词的图。

counter = Counter(above_datafarme)
data_words = counter.keys()
words_counts = counter.values()
indexes = np.arange(len(data_words))
width = 0.7
plt.bar(indexes, words_counts, width)
plt.xticks(indexes + width * 0.5, data_words)
plt.show()

但是,这只会引发无法散列的类型:“列表”错误。

如果我使用to_string函数将数据框转换为字符串,它将创建一个绘图,但仅包含字母。我该如何解决?

counter = Counter(above_datafarme.to_string())
data_words = counter.keys()
words_counts = counter.values()
indexes = np.arange(len(data_words))
width = 0.7
plt.bar(indexes, words_counts, width)
plt.xticks(indexes + width * 0.5, data_words)
plt.show()

忘记添加。如何仅针对10个最常见的单词自定义上面的代码?

编辑。 我尝试了nltk FreqDist和相同的结果。它只是绘制字母。

enter image description here

1 个答案:

答案 0 :(得分:0)

我尝试以数据框的方式进行绘制并工作。

df=pd.DataFrame({'c1':['apple','banana','banana'],'c2':['orange','apple','apple'],'c3':['banana','date','orange']})

df_stack=df.stack(level=0) 
counter=df_stack.value_counts() # set top 10: df_stack.value_counts()[0:10]
plt.bar(counter.index,counter.values)

enter image description here