2014-12-04 120 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