一、概念
为了处理数字数据,Pandas提供了几个变体,如滚动,展开和指数移动窗口统计的权重。 其中包括总和,均值,中位数,方差,协方差,相关性等;
所谓窗口,就是将某个点的取值扩大到包含这个点的一段区间,用区间来进行判断;
移动窗口就是窗口向一端滑行,默认是从右往左,每次滑行并不是区间整块的滑行,而是一个单位一个单位的滑行;
窗口函数主要用于通过平滑曲线来以图形方式查找数据内的趋势。如果日常数据中有很多变化,并且有很多数据点可用,那么采样和绘图就是一种方法,应用窗口计算并在结果上绘制图形是另一种方法。 通过这些方法,可以平滑曲线或趋势。
二、rolling()
1. 参数说明
DataFrame.rolling(window, min_periods=None, center=False, win_type=None,
on=None, axis=0, closed=None)
window:表示时间窗的大小,有两种形式:1)使用数值int,则表示观测值的数量,即向前几个数据;2)也可以使用offset类型,这种类型较复杂,使用场景较少,此处暂不做介绍;
min_periods:每个窗口最少包含的观测值数量,小于这个值的窗口结果为NA。值可以是int,默认None。offset情况下,默认为1;
center: 把窗口的标签设置为居中,布尔型,默认False,居右
win_type: 窗口的类型。截取窗的各种函数。字符串类型,默认为None;
on: 可选参数。对于dataframe而言,指定要计算滚动窗口的列。值为列名。
axis: 默认为0,即对列进行计算
closed:定义区间的开闭,支持int类型的window。对于offset类型默认是左开右闭的即默认为right。可以根据情况指定为left、both等。
2. 代码示例
示例中,由于窗口大小为3(window),前两个元素有空值,第三个元素的值将是n,n-1和n-2元素的平均值。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(7, 4),
index = pd.date_range('1/1/2020', periods=7),
columns = ['A', 'B', 'C', 'D'])
df
A B C D
2020-01-01 -0.103252 -0.378633 -0.689324 -1.150870
2