pandas 时间序列滑动窗口

构造序列

import matplotlib.pylab
import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randn(600, 3), index = pd.date_range('7/1/2016', freq = 'D', periods = 600), columns = ['A', 'B', 'C'])
df.plot(subplots=True)

在这里插入图片描述

滑动平均

r = df.rolling(window = 10)
#r.agg, r.apply, r.count, r.exclusions, r.max, r.median, r.name, r.quantile, r.kurt, r.cov, r.corr, r.aggregate, r.std, r.skew, r.sum, r.var
r.mean().plot(subplots=True)

在这里插入图片描述

自定义窗口内函数

除了使用 rolling 自带的函数 mean, agg, apply, count, exclusions, max, median, name, quantile 之外,还可以自定义。

比如如下 lambda 函数实现了计算窗口内的平均绝对误差:
E [ x E [ x ] ] E[|x-E[x]|]

df.rolling(window = 10)\
.apply(lambda x: np.fabs(x - x.mean()).mean(), raw=True)\
.plot(subplots=True)

raw=True 表示 lambda 函数的输入实参为 np.ndarray,否则为 Series
下图中的所有值都大于零了
在这里插入图片描述

发布了274 篇原创文章 · 获赞 446 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/itnerd/article/details/104225515