我有一个很大的数据集,可以从中找到概率。虽然有很多列,但我只有2个感兴趣的动物和颜色。我想计算动物的出现并打印出颜色的可能性。
animal weight color
dog 10 white
dog 11 white
cat 18 white
cat 15 black
bird 16 white
bird 11 black
bird 10 white
df=pd.read_csv('test.csv')
animal_color=df.groupby('animal').aspiration.value_counts().loc[:,['white','black']]
color=df.animal.value_counts()
我期望以下结果:
prob(animal=dog|color=white) = 100.0%
prob(animal=dog|color=black) = 0.00%
prob(animal=cat|color=white) = 50.0%
prob(animal=cat|color=black) = 50.0%
prob(animal=bird|color=white) = 66.67%
prob(animal=bird|color=black) = 33.33%
答案 0 :(得分:2)
有两种方法
df.groupby(['animal']).color.value_counts(normalize=True)
animal color
bird white 0.666667
black 0.333333
cat black 0.500000
white 0.500000
dog white 1.000000
Name: color, dtype: float64
pd.crosstab(df.animal,df.color,normalize='index')
color black white
animal
bird 0.333333 0.666667
cat 0.500000 0.500000
dog 0.000000 1.000000