Pandas2.2 Series
Function application, GroupBy & window
方法 | 描述 |
---|---|
Series.apply() | 用于将一个函数应用到 Series 的每个元素或整个 Series |
Series.agg() | 用于对 Series 数据进行聚合操作 |
Series.aggregate() | 用于对 Series 数据进行聚合操作 |
Series.transform() | 用于对 Series 数据进行转换操作 |
Series.map() | 用于将 Series 中的每个元素映射为新的值 |
Series.groupby() | 用于根据一个或多个键对 Series 进行分组 |
Series.rolling() | 用于创建一个滚动窗口对象(Rolling Window Object) |
pandasSeriesrolling_14">pandas.Series.rolling
pandas.Series.rolling
是 Pandas 库中 Series
对象的一个方法,用于创建一个滚动窗口对象(Rolling Window Object)。通过这个对象,可以对 Series
数据进行滚动窗口操作,如计算移动平均、移动标准差等。滚动窗口操作在时间序列分析和数据平滑处理中非常有用。
方法签名
Series.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None, method='single')
window
: 窗口大小,指定每个窗口包含的元素数量。可以是整数或偏移量。min_periods
: 最小观测值数量,默认为None
,表示等于window
的大小。如果窗口中的非NaN
值少于min_periods
,则结果为NaN
。center
: 是否将窗口居中,默认为False
,表示窗口向后滚动;如果设置为True
,则窗口居中。win_type
: 窗口类型,默认为None
,表示使用矩形窗口。可以指定其他类型的窗口(如'boxcar'
,'triang'
,'blackman'
,'hamming'
,'bartlett'
,'parzen'
,'bohman'
,'blackmanharris'
,'nuttall'
,'barthann'
,'kaiser'
,'gaussian'
,'general_gaussian'
,'slepian'
,'dpss'
)。on
: 指定按哪个列的时间戳进行滚动,默认为None
。仅适用于DataFrame
。axis
: 指定轴,默认为 0,表示沿索引方向进行滚动。closed
: 指定窗口的边界是否包括端点,默认为None
。可选值有'right'
,'left'
,'both'
,'neither'
。method
: 计算方法,默认为'single'
,表示单遍计算;也可以设置为'table'
,表示表格计算。
主要特点
- 滚动窗口:支持固定大小的滚动窗口操作。
- 多种窗口类型:支持不同类型的窗口函数,适用于不同的应用场景。
- 灵活配置:可以通过参数控制窗口大小、最小观测值数量、窗口位置等。
- 时间序列支持:特别适用于时间序列数据的平滑处理和趋势分析。
示例及结果
示例1:基本滚动窗口操作
import pandas as pd# 创建一个 Series
s = pd.Series([1, 2, 3, 4, 5])# 使用 rolling 方法创建滚动窗口,并计算移动平均
result = s.rolling(window=2).mean()print("基本滚动窗口操作结果:")
print(result)
输出结果:
基本滚动窗口操作结果:
0 NaN
1 1.5
2 2.5
3 3.5
4 4.5
dtype: float64
在这个例子中,rolling(window=2)
创建了一个大小为 2 的滚动窗口,并对每个窗口内的元素计算了平均值。第一个元素没有足够的前驱元素形成窗口,因此结果为 NaN
。
示例2:指定最小观测值数量
import pandas as pd# 创建一个 Series
s = pd.Series([1, 2, 3, 4, 5])# 使用 rolling 方法创建滚动窗口,并指定最小观测值数量
result = s.rolling(window=2, min_periods=1).mean()print("指定最小观测值数量结果:")
print(result)
输出结果:
指定最小观测值数量结果:
0 1.0
1 1.5
2 2.5
3 3.5
4 4.5
dtype: float64
在这个例子中,min_periods=1
表示即使窗口内只有一个非 NaN
值,也会计算结果。因此,第一个元素的结果不再是 NaN
,而是其自身值。
示例3:居中窗口
import pandas as pd# 创建一个 Series
s = pd.Series([1, 2, 3, 4, 5])# 使用 rolling 方法创建居中窗口,并计算移动平均
result = s.rolling(window=3, center=True).mean()print("居中窗口结果:")
print(result)
输出结果:
居中窗口结果:
0 NaN
1 2.0
2 3.0
3 4.0
4 NaN
dtype: float64
在这个例子中,center=True
表示窗口居中,即窗口中心位于当前元素。因此,第一个和最后一个元素没有足够的前后元素形成完整窗口,结果为 NaN
。
示例4:使用不同窗口类型
import pandas as pd# 创建一个 Series
s = pd.Series([1, 2, 3, 4, 5])# 使用 rolling 方法创建滚动窗口,并指定窗口类型
result = s.rolling(window=3, win_type='triang').mean()print("使用不同窗口类型结果:")
print(result)
输出结果:
使用不同窗口类型结果:
0 NaN
1 NaN
2 2.0
3 3.0
4 4.0
dtype: float64
在这个例子中,win_type='triang'
指定了三角窗函数,窗口内的权重分布为三角形,从而影响了移动平均的计算结果。
示例5:时间序列滚动窗口
import pandas as pd# 创建一个带有时间戳索引的 Series
dates = pd.date_range('2023-01-01', periods=5)
s = pd.Series([1, 2, 3, 4, 5], index=dates)# 使用 rolling 方法按时间戳滚动,并计算移动平均
result = s.rolling('2D').mean()print("时间序列滚动窗口结果:")
print(result)
输出结果:
时间序列滚动窗口结果:
2023-01-01 1.0
2023-01-02 1.5
2023-01-03 2.5
2023-01-04 3.5
2023-01-05 4.5
Freq: D, dtype: float64
在这个例子中,rolling('2D')
表示按两天的时间窗口进行滚动,并对每个窗口内的元素计算了平均值。
总结
pandas.Series.rolling
方法在数据分析和处理中非常有用,特别是在需要对时间序列数据进行平滑处理和趋势分析时。它支持多种窗口类型、灵活配置窗口大小和位置,并且可以与聚合函数结合使用以实现复杂的滚动窗口操作。通过这些示例,可以看到 rolling()
方法在不同场景下的应用及其强大功能。
请注意,rolling
方法通常与其他聚合函数(如 mean
, sum
, std
等)结合使用,以实现更复杂的数据分析任务。