2014-12-04 125 views
1

我有一个熊猫数据框df中的概率(从2011年7月1日到2011年7月31日,在15分钟内)。 下面是一个摘录:在数据框中创建熊猫条件概率

  Date_Time  prob 
0 2011-07-01 00:00:00 0.0112 
1 2011-07-01 00:15:00 0.0224 
2 2011-07-01 00:30:00 0.0112 
3 2011-07-01 00:45:00 0.0896 
4 2011-07-01 01:00:00 0.0112 
5 2011-07-01 01:15:00 0.0112 
6 2011-07-01 01:30:00 0.0336 
7 2011-07-01 01:45:00 0.1081 
8 2011-07-01 02:00:00 0.0112 

我要计算的条件概率(给定B的概率 - > P(A | B))一个15-最小 - 期的她的四个先进的(!) 。这对于每一行(周期)。 这意味着(I使用的索引命名这里的行):

P(4 | 0),P(4 | 1),P(4 | 2),P(4 | 3)

P(5 | 1),P(5 | 2),P(5 | 3),P(5 | 4)

等等。

的公式是:P(A | B)= P(A和B)/ P(B),以及(P(A)* P(B)/ P(B))

对不起,但我不知道我该怎么做。也许有一个有用的熊猫功能,我可以适应,但我没有找到什么。

+0

如果'P(A | B)= P(A)* P(B)/ P(B)''然后A'和' B'是独立的,并且'P(A | B)= P(A)'。所以没有必要的计算... – unutbu 2014-12-04 14:50:38

回答

0

可以使用shift()计算所有这些概率

>>> for i in range(1,5): 
...  probB = df.shift(i)['prob'] 
...  probA = df['prob'] 
...  df['prob -' + str(i)] = (probA * probB)/probB 
... 
>>> df 
      Date_Time prob prob -1 prob -2 prob -3 prob -4 
0 2011-07-01 00:00:00 0.0112  NaN  NaN  NaN  NaN 
1 2011-07-01 00:15:00 0.0224 0.0224  NaN  NaN  NaN 
2 2011-07-01 00:30:00 0.0112 0.0112 0.0112  NaN  NaN 
3 2011-07-01 00:45:00 0.0896 0.0896 0.0896 0.0896  NaN 
4 2011-07-01 01:00:00 0.0112 0.0112 0.0112 0.0112 0.0112 
5 2011-07-01 01:15:00 0.0112 0.0112 0.0112 0.0112 0.0112 
6 2011-07-01 01:30:00 0.0336 0.0336 0.0336 0.0336 0.0336 
7 2011-07-01 01:45:00 0.1081 0.1081 0.1081 0.1081 0.1081 
8 2011-07-01 02:00:00 0.0112 0.0112 0.0112 0.0112 0.0112 
+0

谢谢!我尝试了一下。 – EP1986 2014-12-04 15:17:58

+0

对不起,我得到:'TypeError:与帧索引插入的列的不兼容索引'什么出错? – EP1986 2014-12-04 15:21:33

+0

@ EP1986你可以用小的示例数据集重现错误并将其发布到此处? – 2014-12-24 20:19:50