我是大熊猫的新手,不知道如何绘制每个类别(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')
有人可以帮忙吗?感谢
编辑:这是要绘制的数据框输出
Category Percent “wet” Percent “non wet”
6 3/3 (100%) 0/3 (0%)
7 1/4 ¾ ( 75 %)
在x轴上为6和7,然后在每个条形(6)和条形(7)中湿润和非湿润堆叠。
答案 0 :(得分:1)
您可以将自定义功能f1
与DataFrame constructor
和T
一起使用:
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')
答案 1 :(得分:0)