如何计算所有可能的列对的条件概率?

How to calculate conditional probability of all possible pairs of columns?

我在 pandas 中有以下布尔数据框:

      Cat  Dog  Mouse
Alex   1    0     1
Lola   0    0     1
Bob    1    1     1

每个单元格包含 true/false 说明某人是否有动物。 我想获得数据框,其中包含每对动物的条件概率,其中行决定条件。

      Cat  Dog  Mouse
Cat    1   50%    1
Dog    1    1     1
Mouse 66%  33%    1

在 pandas 中有快速的方法吗?如果是,那又如何?

如果您正在寻找使用 pandas 的“oneliner”解决方案...请查看 pandas.crosstab:

pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, margins_name='All', dropna=True, normalize=False)

您可以在 df 和转置 df 之间使用点积,并以百分比计算排名:

df.T.dot(df).rank(axis=1,method='dense',pct=True).round(3)

         Cat    Dog  Mouse
Cat    1.000  0.500    1.0
Dog    1.000  1.000    1.0
Mouse  0.667  0.333    1.0