本篇文章将会用几个非常简单的例子说明rolling()函数的用法。
import random
a = [x for x in range(10)]
b = [x for x in range(10)]
random.shuffle(a)
random.shuffle(b)
test_a = a
test_b = b
test_t = pd.DataFrame(data = [a,b]).T
test_t
结果我们得到:
0 1
0 7 5
1 8 9
2 2 1
3 1 4
4 5 2
5 9 8
6 6 7
7 0 0
8 4 3
9 3 6
然后我们将rolling()函数作用到这个DataFrame上。
t1 = test_t.rolling(10).sum()
t2 = test_t.rolling(5).sum()
t3 = test_t.rolling(3).sum()
c = pd.concat([t1,t2,t3,test_t],axis=1)
c
得到以下结果:
0 1 0 1 0 1 0 1
0 NaN NaN NaN NaN NaN NaN 7 5
1 NaN NaN NaN NaN NaN NaN 8 9
2 NaN NaN NaN NaN 17.0 15.0 2 1
3 NaN NaN NaN NaN 11.0 14.0 1 4
4 NaN NaN 23.0 21.0 8.0 7.0 5 2
5 NaN NaN 25.0 24.0 15.0 14.0 9 8
6 NaN NaN 23.0 22.0 20.0 17.0 6 7
7 NaN NaN 21.0 21.0 15.0 15.0 0 0
8 NaN NaN 24.0 20.0 10.0 10.0 4 3
9 45.0 45.0 22.0 24.0 7.0 9.0 3 6
总结:
1.rolling(k)作为一个窗口函数,帮助我们批量处理一个DataFrame的子集,每个子集包含k个数据。
2.在实际应用中,它通常用于信号处理和时间序列数据。
3.在这个过程中,我们一次取一个k的窗口大小,并对其执行一些所需的数学运算。大小为 k 的窗口表示一次有 k 个连续值。
4. 在非常简单的情况下,所有“k”值的权重相等。
其他可能需要了解的地方:
1.源码:
Syntax : DataFrame.rolling(window, min_periods=None, freq=None, center=False, win_type=None, on=None, axis=0, closed=None)