在 Pandas 数据帧中使用 groupby 和移位操作计算条件概率

Calculate conditional probability using groupby and shift operations in Pandas dataframe

我有一个包含患者及其就诊的数据框,他们的左眼 and/or 右眼是否存在疾病标有 {0,1} 值(0 = 不存在,1 = 存在)。数据集如下所示:

Patient   R L

P_1       0 1

P_1       1 1

P_1       0 1

P_1       0 1

P_1       0 1

P_2       1 1

P_2       0 1

P_2       0 1

P_2       1 1

P_3       0 0

P_3       1 1

P_3       0 0

P_3       0 1

P_3       1 1

P_3       0 1

and so on.....

例如,如何使用 grouby 和移位运算以优雅的方式计算 P(R=1 | L=1) 的条件概率?

IIUC:

df.groupby('L').R.mean()

给予

L
0    0.000000
1    0.384615
Name: R, dtype: float64

所以答案:P(R=1|L=1) = 0.384P(R=1|L=0) = 0

或者如果我们也想获得患者的概率:

df.groupby(['Patient','L']).R.mean()

给出:

Patient  L
P_1      1    0.2
P_2      1    0.5
P_3      0    0.0
         1    0.5
Name: R, dtype: float64

所以,例如,P(R=1|Patent=P_3, L=1) = 0.5