1
绘制百分比对于一个数据帧的Python:在seaborn柱状图中
import pandas as pd
df=pd.DataFrame({'group':list("AADABCBCCCD"),'Values':[1,0,1,0,1,0,0,1,0,1,0]})
我想绘制的时间A, B, C, D
一个barplot显示比例接受零(或一个)。
我有一个围着它的工作方式,但我想,必须有更直接的方式
tempdf=df.groupby(['group','Values']).Values.count().unstack().fillna(0)
tempdf['total']=df['group'].value_counts()
tempdf['percent']=tempdf[0]/tempdf['total']*100
tempdf.reset_index(inplace=True)
print tempdf
sns.barplot(x='group',y='percent',data=tempdf)
如果阴谋只是平均值,我可以简单地做sns.barplot
上比tempdf df
数据帧。如果我对绘制百分比感兴趣,我不确定如何优雅地做到这一点。
感谢,
感谢@anton。这工作几乎完美。除了给出没有浮点值的小问题,但包括'1.0'作品'sns.barplot(x ='group',y ='Values',data = df,estimator = lambda x:sum(x == 0 )* 1.0/len(x))' – PagMax
@PagMax我使用Python 3.x,所以我没有,如果你使用python 2,你应该像你一样添加'1.0'或者if你需要百分比,你可以乘以100.0。 –
谢谢,我明白不同之处。是的,我正在使用python'2.x',并且乘以'100.0'也可以,但是必须在像sum(x == 0)* 100.0/len(x)'而不是'sum( X == 0)/ LEN(x)的* 100.0'。无论如何,问题解决了,非常感谢你的帮助。 – PagMax