pandas中的窗口对象(窗口函数)


引用文章:( Pandas 窗口函数
以下内容是总结记忆版:(个人理解, 如有偏差,请多指教)

窗口函数简介

窗口

中文释义: = 窗户。可以通过它对某一个区域进行观测和眺望。

英文释义 = window 。

计算机释义 = 窗口,视窗:
an area within a frame on a computer screen, in which a particular program is operating or in which information of a particular type is shown
(解释:一个框架的区域,在这个区域中一些特殊的程序和信息进行被执性、显示、处理)

为何要引入窗口函数

因为有些特殊的时序数据难以直接进行操作。
窗口函数方便处理时序数据,解决了滞后性和数据分布的不稳定性。
主要用于通过平滑曲线来以图形方式查找数据内的趋势。

基本使用方法

1. 读取或输入时序数据(序列数据)
2. 将数据换成 pd 格式
3. 定义窗口的方式及大小
4. 在指定窗口下执行需要的统计函数

下面将通过这些步骤依次进行展开:

滑动窗口 rolling

话不多说,先上代码,然后带着问题去读解释。
代码段1:

import pandas as pd 
s = pd.Series([1,2,3,4,5])
roller = s.rolling(window=3)
print(roller.mean())

运行结果:

0    NaN
1    NaN
2    2.0
3    3.0
4    4.0

为什么是这样:
这是因为参数 window 设置的原因:
(是 .rolling() 中的必备参数)

window = 数值型int --> 计算统计量的观测值的数量,及从第0个元素开始,
向前数window个,然后在使用后面定义的函数
window  = offset时间偏移量 --> 表示时间窗的大小

程序解释:

s = pd.Series([1,2,3,4,5])	--> [1,2,3,4,5]
经过:s.rolling(window=3)  -->  
		从第0个下标,往前数3个,[空,空 ,1]
		从第1个下标,往前数3个,[空,1 , 2]
		从第2个下标,往前数3个,[1, 2, 3]
		从第3个下标,往前数3个,[2, 3, 4]
		从第4个下标,往前数3个,[3, 4, 5]
然后得到的元素,在经过统计函数,mean()进行计算。
第n个元素的值将是n,n-1和n-2元素的平均值
便形成了:
0    NaN
1    NaN
2    2.0
3    3.0
4    4.0

代码段2:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),
index = pd.date_range('1/1/2020', periods=10),
columns = ['A', 'B', 'C', 'D'])
print(df)
print (df.rolling(window=3).mean())

自行输入体会

扩张窗口 expanding

.expanding()又叫扩展窗口函数。
不是固定窗口长度,其长度是不断的扩大的。所以才叫expanding (ing现在进行时,expand扩展)–>(时刻在扩展)

rolling(window = 自定义输入)
expanding(min_periods = 自定义输入)

第n个元素的值将是n,n-1,n-2…’1’这n个元素的平均值

类似的函数还有:
sum() 函数 与 consum() 函数 的区别
cummax, cumsum, cumprod 函数是典型的类扩张窗口函数,

代码段1:

import pandas as pd 
s = pd.Series([1,2,3,4,5])
expanding = s.expanding(min_periods=3)
print(expanding.mean())

运行结果:

0    NaN
1    NaN
2    2.0
3    2.5
4    3.0
dtype: float64

代码段2:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(10, 4),
      index = pd.date_range('1/1/2018', periods=10),
      columns = ['A', 'B', 'C', 'D'])
print (df.expanding(min_periods=3).mean())

指数加权窗口 ewm

指数 exp()
权重 weight
移动 move
因此组成 ewm() = 指数权重移动起来 = 指数加权移动窗口 (个人理解)

官方详细文档点击查看

常用的设置参数:
com,span,halflife,alpha (最重要的参数)

在这里插入图片描述

ewm类型函数作用
ewma指数加权移动平均
ewmvar指数加权移动方差
ewmstd指数加权移动标准差
ewmcorr指数加权移动相关系数
ewmcov指数加权移动协方差

代码段:

import pandas as pd
import numpy as np

df = pd.DataFrame({'T': [0, 1, 2, np.nan, 4]})
print(df)

df1 = df.ewm(com=0.5).mean()
print(df1)

#Specifying times with a timedelta halflife when computing mean
times = pd.date_range(start='2020-12-19', periods=5)
df2 = df.ewm(halflife='4 days', times=pd.DatetimeIndex(times)).mean()
print(df2)

运行结果

     T
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0
          T
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213
          T
0  0.000000
1  0.543214
2  1.114950
3  1.114950
4  2.144696
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Pandas是一个数据分析和数据处理的强大工具,它提供了许多用于处理时间序列数据的功能。其,时间窗口的统计类特征使得我们能够对时间序列数据进行灵活的统计分析。 时间窗口表示在给定的时间范围内对数据进行分组和聚合操作。例如,我们可以将一年的数据按照月或季度进行分组,然后计算每个月或季度的统计量,比如平均值、最大值、最小值等。 Pandas提供了多种方法来进行时间窗口的统计类特征计算。其最常用的方法是使用`rolling()`函数和`resample()`函数。 `rolling()`函数用于创建一个滚动窗口对象,然后可以对该对象进行一系列的聚合操作。我们可以指定窗口的大小和窗口的滑动步长,然后计算窗口内数据的统计量。例如,可以计算每个时间点前10个数据的平均值,或者计算每个时间点前30分钟的最大值。 `resample()`函数则用于按照指定的时间间隔对数据进行重新采样。我们可以指定采样的频率,比如按照天、周、月、季度等进行采样,然后计算每个采样间隔的统计量。例如,可以计算每个月的总和、每周的均值等。 使用这些函数,我们可以对时间序列数据进行各种复杂的统计计算。除了常见的统计量之外,还可以使用自定义函数进行计算,以满足不同的需求。 总而言之,Pandas的时间窗口的统计类特征功能为我们提供了一种方便灵活的方式来对时间序列数据进行统计分析。通过指定窗口的大小和滑动步长,我们可以按照不同的时间间隔对数据进行聚合操作,计算各种统计量。这些功能对于时间序列数据的探索性分析、预测建模以及特征工程等任务都非常有用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值