具有条件的联合概率

时间:2018-02-13 23:53:11

标签: python pandas pandas-groupby

我正在以气象站的每小时间隔处理风速(sknt)和可见性(vsby)数据。我能够用这个来计算风速和能见度的联合概率,

df1=df.groupby('vsby').size().div(len(df)) 
df2=df.groupby(['vsby', 'sknt']).size().div(len(df)).div(vprob, axis=0, level='vsby')

vsby    sknt    0
0   6.0 15.0    1.000000
1   10.0    0.0 1.000000
2   11.0    7.0 0.500000
3   11.0    16.0    0.500000
4   13.0    12.0    1.000000
5   14.0    3.0 0.500000
6   14.0    4.0 0.250000
7   14.0    12.0    0.250000
8   16.0    0.0 0.099796
9   16.0    2.0 0.209776
10  16.0    3.0 0.173116
11  16.0    4.0 0.134420
12  16.0    5.0 0.175153
13  16.0    6.0 0.024440
14  16.0    7.0 0.032587
15  16.0    8.0 0.018330
16  16.0    9.0 0.024440
17  16.0    10.0    0.024440
18  16.0    11.0    0.026477
19  16.0    12.0    0.016293
20  16.0    13.0    0.014257
21  16.0    14.0    0.008147
22  16.0    15.0    0.008147
23  16.0    16.0    0.004073
24  16.0    17.0    0.004073
25  16.0    18.0    0.002037

我感兴趣的是找到所记录的所有能见度的风速概率> = x。例如,vsby 16,概率=(0.018330 + 0.024440 + 0.024440 + 0.026477 + 0.016293 + 0.014257 + 0.008147 + 0.008147 + 0.004073 + 0.004073 + 0.002037)

我试过了,

df2.loc[df2.sknt >= 7, df2.vsby].sum() 

但它不起作用。

1 个答案:

答案 0 :(得分:0)

尝试以下方法。要使用.loc选择列,只需提供名称即可。

df2 = df2.reset_index()
df2.loc[df2['sknt'] >= 7, 'vsby'].sum()