2016-05-29 4 views
2

私のシリーズを以下のように考えてみましょう。最初の列はarticle_idで、2番目の列は頻度カウントです。パンダシリーズから棒グラフをプロットする方法は?

article_id 
1   39 
2   49 
3  187 
4  159 
5  158 
     ... 
16947  14 
16948  7 
16976  2 
16977  1 
16978  1 
16980  1 

Name: article_id, dtype: int64 

私は、次のコマンドを使用して、データフレームからこのシリーズを得た:

logs.loc[logs['article_id'] <= 17029].groupby('article_id')['article_id'].count() 

ログはここにデータフレームであるとのarticle_idはその内の列の一つです。

は、どのように私は(Matlplotlib使用)のarticle_idは、X軸とY軸の周波数カウントになるような棒グラフをプロットしますか?

私の自然な本能は、.tolist()を使ってそれをリストに変換することでしたが、article_idは保持されませんでした。

+1

人々がここに尋ねる前にドキュメントをグーグルや読みしようとした場合、これらのような質問が本当に思って私を残して。 http://pandas.pydata.org/pandas-docs/stable/visualization.html – MaxNoe

答えて

5

IIUCあなたはSeries.plot.barを必要とする:

#pandas 0.17.0 and above 
s.plot.bar() 
#pandas below 0.17.0 
s.plot('bar') 

はサンプル:

import pandas as pd 
import matplotlib.pyplot as plt 

s = pd.Series({16976: 2, 1: 39, 2: 49, 3: 187, 4: 159, 
       5: 158, 16947: 14, 16977: 1, 16948: 7, 16978: 1, 16980: 1}, 
       name='article_id') 
print (s) 
1   39 
2   49 
3  187 
4  159 
5  158 
16947  14 
16948  7 
16976  2 
16977  1 
16978  1 
16980  1 
Name: article_id, dtype: int64 


s.plot.bar() 

plt.show() 

graph

+0

ありがとうございます。プロットのサイズを大きくするための提案はありますか?私はプロットで16980の異なる値を持っており、少し凝縮して見えます。私はplt.figure(figsize =(20,10))を使ってみました。 PS私はインラインプロットを使用しています。 – Aashil

+1

'' s.plot.bar() 'の前に' plt.figure(figsize =(20,10)) 'がうまく動作します。 – jezrael

+0

Worked。私は 's.plot.bar()'の後ろに置いていました。 – Aashil

関連する問題