我有大熊猫数据帧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))
抱歉,但我不知道我怎么能这样做。也许有一个有用的熊猫功能,我可以适应,但我找不到。
答案 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