2016-04-06 5 views
1

私はパンダには新しく、次のデータフレーム内の他の状態への「濡れた」割合(パーセンテージ)を示す各カテゴリ(6,7)の棒グラフを描く方法はわかりません:パンダのアイテムカテゴリのバーポット

Mine Category State 
X23 6 Wet 
M34 7 Wet 
K28 7 Dry 
U56 7 Swampy 
S90 6 Wet 
E35 7 Dry 
X67 6 Wet 

私の努力、これまで:

sub =df.groupby(['Category','State==Wet'].sum() 
sub.plot(kind='bar') 

は、誰かが助けてくださいことはできますか?おかげ

EDIT:x軸上これは、データフレームの出力をプロットする

Category Percent “wet” Percent “non wet” 
6 3/3 (100%) 0/3 (0%) 
7 1/4 ¾ (75 %) 

だから6及び図7に示すように、ウェットバーの各々に積層された非湿潤(6)とバー(7) 。

+0

あなたが所望の出力を追加することができ - データフレームを? – jezrael

+0

Thanks @ jezrael – user27976

+0

カテゴリの列をピボットしてパーセントで集計したいと思うように聞こえます。そうねぇ。 – bamdan

答えて

1

あなたはDataFrame constructorTでカスタム関数f1を使用することができます。

def f1(x): 
    return (sum(x == 'Wet')/float(len(x)))*100, (sum(x != 'Wet')/float(len(x)))*100 

grouped = df.groupby(['Category'])['State'].apply(f1) 

new_cols = ['wet','non-wet'] 
print pd.DataFrame(zip(*grouped), columns=grouped.index,index=new_cols).T 
      wet non-wet 
Category     
6   100.0  0.0 
7   25.0  75.0 

sub.plot(kind='bar') 
+0

お時間をいただきありがとうございました。それは完璧に働いた! – user27976

0

value_counts()を使用して、結果をプロットすることができます。私のDataframeでは、TestGroup列に対してこれを行いたいが、Category列で行うことができる。

df.TestGroup.value_counts(normalize= True).plot(kind = "bar") 

enter image description here

お役に立てば幸いです。

+0

こんにちはバムダン、助けてくれてありがとう。私は自分の投稿を編集したばかりです。ユニークなカテゴリをx軸にしたいと思っていたとは思えませんでした。したがって、他の州への「湿潤」の割合を示す2つの列があります。 – user27976