簡體   English   中英

使用元組元素從列表中生成頻率直方圖

[英]Make Frequency histogram from list with tuple elements

我想制作一個單詞頻率分布,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()

使用熊貓:

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')

在此輸入圖像描述

你不能直接將word s傳遞給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 -loop也可以用簡單的zip和列表解包來代替:

word, frequency = zip(*example_list)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM