将一个数据框中的特定列(包含)除以另一个数据框

时间:2019-08-07 01:27:41

标签: python pandas

我有一个很大的数据集,可以从中找到概率。虽然有很多列,但我只有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%

1 个答案:

答案 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