- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一长串单词,我想生成列表中每个单词出现频率的直方图。我能够在下面的代码中做到这一点:
import csv
from collections import Counter
import numpy as np
word_list = ['A','A','B','B','A','C','C','C','C']
counts = Counter(merged)
labels, values = zip(*counts.items())
indexes = np.arange(len(labels))
plt.bar(indexes, values)
plt.show()
但是,它不会按等级显示 bin(即按频率,因此最高频率是左侧的第一个 bin,依此类推),即使当我打印 counts
时它对它们进行排序对我来说 Counter({'C': 4, 'A': 3, 'B': 2})
。我怎样才能做到这一点?
最佳答案
您可以先对数据进行排序,然后将排序后的数组传递给 bar
,从而获得所需的输出;下面我使用 numpy.argsort
为了那个原因。情节如下所示(我还在栏中添加了标签):
这是生成带有一些内联注释的绘图的代码:
from collections import Counter
import numpy as np
import matplotlib.pyplot as plt
word_list = ['A', 'A', 'B', 'B', 'A', 'C', 'C', 'C', 'C']
counts = Counter(word_list)
labels, values = zip(*counts.items())
# sort your values in descending order
indSort = np.argsort(values)[::-1]
# rearrange your data
labels = np.array(labels)[indSort]
values = np.array(values)[indSort]
indexes = np.arange(len(labels))
bar_width = 0.35
plt.bar(indexes, values)
# add labels
plt.xticks(indexes + bar_width, labels)
plt.show()
如果你只想绘制前 n
个条目,你可以替换行
counts = Counter(word_list)
通过
counts = dict(Counter(word_list).most_common(n))
在上面的例子中,counts
将是
{'A': 3, 'C': 4}
对于 n = 2
。
如果你想去掉图的框架并直接标记条形图,你可以查看this post .
关于python - 如何生成词频直方图,其中条形根据高度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596128/
我在 Eclipse 中创建了一个 Java 程序。该程序计算每个单词的频率。例如,如果用户输入“I went to the shop”,程序将产生输出“1 1 1 2”,即 1 个字长 1 ('I'
我在工作中只有 R 可用,而且我以前用 Python 做过。我需要获取 CSV 文件中每组事件的计数。我在 Python 中进行了情绪分析,我在提供的表格中搜索了一本 Python 字典,其中包含每个
我想一个字一个字地读,然后将哪个字与我的结构数组中的字进行比较。如果我没有,我想在第一个空位添加。 #include #include #include #include using names
我想计算已转换为标记的文本文件中特定单词前后三个单词的频率。 from nltk.tokenize import sent_tokenize from nltk.tokenize import wor
我需要编写一个程序来计算文本中每个单词的频率,此外我需要能够返回 n 个最常用单词的列表(如果更多单词具有相同的频率(它们按字母顺序排序)。还有一个未计算在内的单词列表(停用词)。 停用词使用什么结构
我对 sklearn 的 TfidfVectorizer 在计算每个文档中单词的频率时有一个疑问。 我看到的示例代码是: >>> from sklearn.feature_extraction.tex
我是一名优秀的程序员,十分优秀!