【问题标题】:Make Frequency histogram from list with tuple elements使用元组元素从列表制作频率直方图
【发布时间】:2017-12-18 05:46:08
【问题描述】:

我想做一个词频分布,x 轴上的词和 y 轴上的频率计数。

我有以下清单:

example_list = [('dhr', 17838), ('mw', 13675), ('wel', 5499), ('goed', 5080), 
                ('contact', 4506), ('medicatie', 3797), ('uur', 3792),
                ('gaan', 3473), ('kwam', 3463), ('kamer', 3447), 
                ('mee', 3278), ('gesprek', 2978)] 

我尝试先将其转换为 pandas DataFrame,然后使用pd.hist(),如下例所示,但我无法弄清楚并认为它实际上是直截了当的,但可能我遗漏了一些东西。

import numpy as np
import matplotlib.pyplot as plt

word = []
frequency = []

for i in range(len(example_list)):
  word.append(example_list[i][0])
  frequency.append(example_list[i][1])


plt.bar(word, frequency, color='r')
plt.show()

【问题讨论】:

    标签: python matplotlib plot distribution frequency


    【解决方案1】:

    使用熊猫:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    example_list = [('dhr', 17838), ('mw', 13675), ('wel', 5499), ('goed', 5080), ('contact', 4506), ('medicatie', 3797), ('uur', 3792), ('gaan', 3473), ('kwam', 3463), ('kamer', 3447), ('mee', 3278), ('gesprek', 2978)] 
    
    df = pd.DataFrame(example_list, columns=['word', 'frequency'])
    df.plot(kind='bar', x='word')
    

    【讨论】:

      【解决方案2】:

      您不能将words 直接传递给matplotlib.pyplot.bar。但是,您可以为bar 创建一个索引数组,然后使用matplotlib.pyplot.xticks 将这些索引替换为words

      import numpy as np
      import matplotlib.pyplot as plt
      
      indices = np.arange(len(example_list))
      plt.bar(indices, frequency, color='r')
      plt.xticks(indices, word, rotation='vertical')
      plt.tight_layout()
      plt.show()
      

      用于创建wordfrequencyfor 循环也可以替换为简单的zip 和列表解包:

      word, frequency = zip(*example_list)
      

      【讨论】:

      • 感谢您的评论,这是我一直在寻找的,zip 也是非常有用的功能:)
      • 请定义您在调用“plt”和“np”时使用的库。
      • @biogeek 这些已经在问题中定义了,所以我认为对此答案投反对票有点困难。但是为了使答案更加独立,我还将它们包含在代码中。感谢您的评论。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 2017-03-28
      • 1970-01-01
      • 2023-01-29
      • 2014-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多