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