2016-08-09 12 views
1

私は以下のように見えるのデータフレームを持っている:パンダは、x軸とy軸の両方として使用する特定の列をプロットしますか?

私はx軸とy軸のcount(company_id)としてplot company_idにしたいです。 また、opencloseのカテゴリでそれを積み重ねたいと思います。

コードは出力を表示せず、無限に実行されます。

df 
     person_id company_id time event type date 
    0   1 255  1379312026 open A 2013-09-16 02:13:46 
    1   1 255  1379312086 close A 2013-09-16 02:14:46 
    2   1 182  1379312926 open B 2013-09-16 02:28:46 
    3   1 182  1379313046 close B 2013-09-16 02:30:46 
    4   1 81  1379314006 open A 2013-09-16 02:46:46 


df2=df[['company_id','event']] 
df2.plot(kind='bar',stacked=True) 
+0

このためSeabornを勧めます。彼らはプロットしながら、その場で小さな計算を行う方法を持っています。このSeabornサンプルプロットのページを見てください:https://stanford.edu/~mwaskom/software/seaborn/tutorial/categorical.html – Kartik

答えて

2

あなたはこれを行うことができますコメントで提案されているようseabornを使用することができるしている場合:

import seaborn as sns, matplotlib.pyplot as plt 

df = {'company_id': {0: 255, 1: 255, 2: 182, 3: 182, 4: 81}, 
     'time': {0: 1379312026, 1: 1379312086, 2: 1379312926, 3: 1379313046, 4: 1379314006}, 
     'person_id': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1}, 
     'counts': {0: 2, 1: 2, 2: 2, 3: 2, 4: 1}, 
     'type': {0: 'A', 1: 'A', 2: 'B', 3: 'B', 4: 'A'}, 
     'event': {0: 'open', 1: 'close', 2: 'open', 3: 'close', 4: 'open'}} 

# add counts column  
counts = df.groupby('company_id').size().rename('counts') 
df['count'] = df['company_id'].map(counts) 

g = sns.factorplot(y='count',x='company_id',hue='event',data=df,kind='bar', 
        palette='muted',legend=False,ci=None) 
plt.legend(loc='best') 
plt.show() 

結果:

enter image description here

関連する問題