首页 > 解决方案 > 字母频率:绘制一个对 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 位艺术家的容器对象) 如何扩展直方图?然后,我想对直方图进行排序,以从中获得类似的东西 在此处输入图像描述

这个 在此处输入图像描述

标签: pythondictionaryplothistogramfrequency

解决方案


对于计数,我们可以使用一个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(*..)用于解包(请参阅此答案)。

注意:我没有更新宽度或颜色以匹配您的结果图。


推荐阅读