python - 字母频率:绘制一个对 PYTHON 值排序的直方图
问题描述
我要做的是分析文本中字母的频率。作为一个例子,我将在这里使用一个小句子,但所有这些都被认为是分析大文本(所以最好是有效率的)。
好吧,我有以下文字:
test = "quatre jutges dun jutjat mengen fetge dun penjat"
然后我创建了一个计算频率的函数
def create_dictionary2(txt):
dictionary = {}
i=0
for x in set(txt):
dictionary[x] = txt.count(x)/len(txt)
return dictionary
接着
import numpy as np
import matplotlib.pyplot as plt
test_dict = create_dictionary2(test)
plt.bar(test_dict.keys(), test_dict.values(), width=0.5, color='g')
问题:我想看到所有的字母,但有些看不到(15 位艺术家的容器对象) 如何扩展直方图?然后,我想对直方图进行排序,以从中获得类似的东西
解决方案
对于计数,我们可以使用一个Counter
对象。Counter 还支持获取最常见值的键值对:
from collections import Counter
import numpy as np
import matplotlib.pyplot as plt
c = Counter("quatre jutges dun jutjat mengen fetge dun penjat")
plt.bar(*zip(*c.most_common()), width=.5, color='g')
plt.show()
该most_common
方法返回一个键值元组列表。*zip(*..)
用于解包(请参阅此答案)。
注意:我没有更新宽度或颜色以匹配您的结果图。
推荐阅读
- mysql - 尝试在 Node 中批量插入用户数组时出现问题
- sql - SQL:试图获取未记录的日期
- php - 在数据表 PDF 和 Excel 中导出图像视图
- php - 仅从 Laravel 请求中的数组中获取一些字段
- excel - Excel从条形图轴中隐藏0个值
- java - 如何检查 geckodriver 是否在远程机器上运行?
- node.js - Nodejs连接到猫鼬在服务器(ubuntu)上失败,但在本地工作
- plot - 千里马 - 无法用 plot2d 绘制我的方程,因为“表达式在绘图范围内的任何地方都计算为非数值”
- oracle - oracle这个select写的错误怎么解决?
- javascript - 打开新窗口时如何自动单击 HTML 链接?