我有一个与患者及其就诊相关的数据框,其左眼和/或右眼中存在某种疾病,并标有{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和shift操作以优雅的方式计算P(R = 1 | L = 1)的条件概率?
答案 0 :(得分:2)
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
。