2017-03-23 2 views
0

グループ化されたDataFrameデータのプロットに関する質問があります。バープロットグループ化パンダ

データは次のようになります。私は何をしたいか

data = 

index taste food 

0  good  cheese 
1  bad  tomato 
2  worse tomato 
3  worse cheese 
4  good  meat 
5  good  meat 
6  bad  cheese 
7  worse tomato 
8  worse tomato 
9  good  cheese 
10  worse meat 
11  good  meat 

は、x軸(、良い悪い、悪い方)と各食料の割合分布として各味のカテゴリを持つバープロットを持つことです各嗜好カテゴリ内にバーとして入力します。

味カテゴリーworse私たちは:3 tomato,および1 meatを持っています。

6/10 = 60%tomato、 2/10 = 20%cheese及び 2/10 = 20%meat:合計で、したがって3 + 1 + 1 = 5カテゴリの食品タイプ、があります

   taste 
taste food   
bad cheese 50.0 
     tomato 50.0 
good cheese 40.0 
     meat  60.0 
worse cheese 20.0 
     meat  20.0 
     tomato 60.0 
:私の希望の結果を得ているようだ

df_1 = data.groupby(['taste', 'food']).agg({'taste' : 'count'}) 
df_2 = df_1.groupby(level=0).apply(lambda x: 100 * x/float(x.sum())) 

は、これまでのところ私のようなものでGroupByaggを使用しようとしました

しかし、今私は実際にこれをプロットする方法に立ち往生しています! Excelで

、それはのようなものになります。

enter image description here

+0

はあなたを助けることができる。この例でますか? http://seaborn.pydata.org/examples/factorplot_bars.html – Zealseeker

+0

ありがとう@ゼウスエーカー。ちょっと見てみます。あなたがそれを処理し、ここに入力している間、あなた自身の質問に対する答えを見つけたという古典:) – gussilago

答えて

0

Iあなたが必要と思うと:

df = df['taste'].unstack(0, fill_value=0) 
#remove index and column names if necessary 
df.index.name = None 
df.columns.name = None 
print (df) 
     bad good worse 
cheese 50.0 40.0 20.0 
meat  0.0 60.0 20.0 
tomato 50.0 0.0 60.0 

df.plot.bar(stacked=True) 

graph

関連する問題