从dataframe中创建pandas中的条件概率

时间:2014-12-04 14:21:46

标签: python pandas

我有大熊猫数据帧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

我想计算一个15分钟时段的条件概率(给定B的概率 - > P(A | B))和她的四个(!)先行者。这对于每一行(期间)。 这意味着(我使用索引在这里命名行):

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))

抱歉,但我不知道我怎么能这样做。也许有一个有用的熊猫功能,我可以适应,但我找不到。

1 个答案:

答案 0 :(得分: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