Pandas的时间序列-滑动窗口(32)

什么是滑动(移动)窗口?为了提升数据的准确性,将某个点的取值扩大到包含这个点的一段区间,用区间来进行判断,这个区间就是窗口。例如想使用2011年1月1日的一个数据,单取这个时间点的数据当然是可行的,但是太过绝对,有没有更好的办法呢?可以选取2010年12月16日到2011年1月15日,通过求均值来评估1月1日这个点的值,2010-12-16到2011-1-15就是一个窗口,窗口的长度window=30. 移动窗口就是窗口向一端滑行,每次滑动(行)并不是区间整块的滑行,而是一个单位一个单位的滑行。例如窗口2010-12-16到2011-1-15,下一个窗口并不是2011-1-15到2011-2-15,而是2010-12-17到2011-1-16(假设数据的截取是以天为单位),整体向右移动一个单位,而不是一个窗口。这样统计的每个值始终都是30单位的均值。 窗口中的值从覆盖整个窗口的位置开始产生,在此之前即为NaN,举例如下:窗口大小为10,前9个都不足够为一个一个窗口的长度,因此都无法取值。

pandas里常用的滑动窗口函数有:

函数名函数功能
rolling_count(arg, window[, freq, center, how])Rolling count of number of non-NaN observations inside provided window.
rolling_sum(arg, window[, min_periods, ...])Moving sum.
rolling_mean(arg, window[, min_periods, ...])Moving mean.
rolling_median(arg, window[, min_periods, ...])O(N log(window)) implementation using skip list
rolling_var(arg, window[, min_periods, ...])Numerically stable implementation using Welford’s method.
rolling_std(arg, window[, min_periods, ...])Moving standard deviation.
rolling_min(arg, window[, min_periods, ...])Moving min of 1d array of dtype=float64 along axis=0 ignoring NaNs.
rolling_max(arg, window[, min_periods, ...])Moving max of 1d array of dtype=float64 along axis=0 ignoring NaNs.
rolling_corr(arg1[, arg2, window, ...])Moving sample correlation.
rolling_corr_pairwise(df1[, df2, window, ...])Deprecated.
rolling_cov(arg1[, arg2, window, ...])Unbiased moving covariance.
rolling_skew(arg, window[, min_periods, ...])Unbiased moving skewness.
rolling_kurt(arg, window[, min_periods, ...])Unbiased moving kurtosis.
rolling_apply(arg, window, func[, ...])Generic moving function application.
rolling_quantile(arg, window, quantile[, ...])Moving quantile.
rolling_window(arg[, window, win_type, ...])Applies a moving window of type window_type and size window on the data.

下面以求滑动窗口均值为例给出一个滑动窗口应用程序,如下所示:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
v = np.random.randn(20)
tx = pd.Series(v)
tx.index = pd.date_range('2018-12-01', periods = 20, freq = "d")
#print "tx", "-" * 20, "\n", tx
rm = tx.rolling(window = 5, center = False).mean()
rm.plot()
tx.plot()
plt.show()

程序执行结果:

可视图中绿色设tx,蓝色则是rm即滑动窗口处理后均值的可视化输出。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时间滑动窗口是一种在时间序列分析中常用的技术,用于对时间序列数据进行分析和预测。在Python中可以通过使用pandas库来实现时间滑动窗口。 首先,我们需要导入pandas库并读取时间序列数据。可以使用pandas中的read_csv函数来读取CSV文件或read_excel函数来读取Excel文件。读取数据后,我们可以使用pandas中的DataFrame对象来存储和处理时间序列数据。 接下来,我们可以使用rolling函数来创建滑动窗口对象。滑动窗口的大小可以通过指定参数window进行设置。例如,如果我们想创建一个大小为5的滑动窗口,可以使用rolling(window=5)。 然后,我们可以使用滑动窗口对象来进行一系列的操作。例如,可以使用滑动窗口对象的mean函数来计算滑动窗口中数据的平均值。还可以使用sum函数来计算滑动窗口中数据的总和。 除了计算统计指标外,我们还可以使用滑动窗口对象进行其他操作,例如找到最大值、最小值或者执行自定义的函数。 最后,我们可以使用pandas库的plot函数来绘制时间序列数据和滑动窗口中计算出的统计指标。这样可以更直观地观察时间序列数据的趋势和窗口中的变化。 总之,时间滑动窗口是一种在时间序列分析中常用的技术,可以使用pandas库在Python中实现。通过创建滑动窗口对象并使用相应的函数,我们可以计算滑动窗口中的统计指标,并通过绘图来展示时间序列数据的变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值