Сделать гистограмму частоты из списка с элементами кортежа

Я хотел бы сделать распределение частоты слов со словами на оси х и частотой, отсчитываемыми по оси у.

У меня есть следующий список:

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

Вы не можете передать word s в plt.bar напрямую.

Но вы можете создавать индексы, чтобы перейти в bar а затем заменить их словами:

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

введите описание изображения здесь

Для -loop для создания word и frequency можно также заменить простой zip :

 word, frequency = zip(*example_list) 

Использование панд:

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

введите описание изображения здесь