所以我有一個資料框:
import pandas as pd
values = [4,6,4,8,13,20,2,4,3,6,5,8,2,5,7, 20, 5, 6 , 7, 9, 20 , 5, 3, 5, 20, 4, 10, 2]
example = pd.DataFrame({'Values' : values})
example
我想對這些值加權的移動視窗進行滾動計算。特別是一個帶有 ai/10 權重的 10 視窗。所以前 9 個值將是空的,然后是第 10 個:
(1/10 x 4) (2/10 x 6) (3/10 x 4) (4/10 x 8) (5/10 x 13) (6/10 x 20) (7) /10 x 2) (8/10 x 4) (9/10 x 3) (10/10 x 6)
那么第 11 個值將是
(1/10 x 6) (2/10 x 4) (3/10 x 8) (4/10 x 13) (5/10 x 20) (6/10 x 2) (7) /10 x 4) (8/10 x 3) (9/10 x 6) (10/10 x 5)
等等。
我可以使用 .rolling() 函式進行滾動位,但我無法找到如何單獨加權這些。抱歉,這可能是一個非常基本的問題。
uj5u.com熱心網友回復:
IIUC,創建一個加權陣列:
WINDOWSIZE = 10
w = np.arange(1, WINDOWSIZE 1)
out = df.rolling(WINDOWSIZE).apply(lambda x: sum(w/WINDOWSIZE * x))
print(out)
# Output:
Values
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
9 37.8 # (1/10 x 4) (2/10 x 6) (3/10 x 4) (4/10 x 8) (5/10 x 13) (6/10 x 20) (7/10 x 2) (8/10 x 4) (9/10 x 3) (10/10 x 6)
10 35.8 # (1/10 x 6) (2/10 x 4) (3/10 x 8) (4/10 x 13) (5/10 x 20) (6/10 x 2) (7/10 x 4) (8/10 x 3) (9/10 x 6) (10/10 x 5)
11 36.7
12 31.4
13 29.3
14 29.5
15 43.3
16 42.1
17 41.6
18 41.9
19 43.8
20 56.4
21 52.5
22 46.9
23 43.2
24 54.5
25 48.5
26 50.1
27 43.2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/361997.html
上一篇:numpy標量乘法如何作業?
