2017-07-13 6 views
3

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

私が最初にパンダのデータフレームに変換して、以下の例のように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() 

答えて

3

あなたは直接matplotlib.pyplot.barword Sを渡すことはできません。しかし、あなたが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() 

enter image description here

wordfrequencyを作成するfor -loopも簡単なzipウントで置き換えることができますリストのアンパック:

word, frequency = zip(*example_list) 
+1

おかげで、これは私が探していたものだった、また、ジッパーは非常に便利な機能です:) – jjn

+0

「PLT」と「NP」を呼び出すときに使用しているものLIBSを定義してください。 – biogeek

+0

@biogeekこれらは既に質問で定義されているので、私はそれを解消するのは少し難しいと思っています。しかし答えを自己完結させるために、私はコードにそれらを含めました。コメントありがとう。 :) – MSeifert

4

使用パンダ:

コメントを
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') 

enter image description here

関連する問題