如何计算所有可能的列对的条件概率?
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
我在 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