在 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.384
,P(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
。
我有一个包含患者及其就诊的数据框,他们的左眼 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.384
,P(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
。