Python rolling函数用法介绍
1. 什么是rolling函数
在Python的pandas库中,rolling
函数是一个用于时间序列数据的重要函数。它可以方便地进行滑动窗口计算,计算某个时间窗口内的统计指标。常见的统计指标包括均值、标准差、最大值、最小值等等。通过使用rolling
函数,我们可以获得时间序列数据在不同窗口下的变化情况,从而进行更深入的数据分析和预测。
2. rolling函数的基本语法
rolling
函数的基本语法如下:
DataFrame.rolling(window, [min_periods], [center], [win_type], [on], [axis], [closed])
参数说明:
window
:一个整数,表示窗口的大小。min_periods
:一个整数,表示窗口内的有效数据点最小数量。默认为窗口大小。center
:一个布尔值,表示窗口是否以数据点为中心。默认为False,即窗口以右边界为起点。win_type
:一个字符串,表示窗口类型。默认为None,即普通的滑动窗口。其他可选值包括boxcar
、triang
、blackman
等等。on
:一个字符串,表示以哪一列作为时间序列的索引。默认为None,即使用DataFrame的index作为时间序列。axis
:一个整数,表示在哪一维度上进行滑动窗口计算。默认为0,即按列进行计算。closed
:一个字符串,表示如何处理在边界上的数据点。默认为None,即不处理。
3. rolling函数的示例
下面介绍几个rolling函数的示例,以更好地理解其用法。
示例一:计算滑动窗口内的均值
import pandas as pd
# 创建一个DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 使用rolling函数计算滑动窗口内的均值
rolling_mean = df['A'].rolling(window=3).mean()
print(rolling_mean)
输出:
0 NaN
1 NaN
2 2.000000
3 3.000000
4 4.000000
Name: A, dtype: float64
在上述示例中,我们创建了一个DataFrame
,并使用rolling
函数计算了滑动窗口大小为3的均值。可以看到,在窗口较小的前两个位置,无法形成一个完整的窗口,因此计算结果为NaN。而在后面的位置,每个窗口内的数据点被用于计算均值。
示例二:计算滑动窗口内的最大值
import pandas as pd
# 创建一个DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 使用rolling函数计算滑动窗口内的最大值
rolling_max = df['A'].rolling(window=2).max()
print(rolling_max)
输出:
0 NaN
1 2.0
2 3.0
3 4.0
4 5.0
Name: A, dtype: float64
在上述示例中,我们同样创建了一个DataFrame
,并使用rolling
函数计算了滑动窗口大小为2的最大值。与示例一不同的是,滑动窗口内的两个数据点被用于计算最大值。在窗口较小的前一个位置,无法形成一个完整的窗口,因此计算结果为NaN。而在后面的位置,每个窗口内的两个数据点被用于计算最大值。
示例三:计算滑动窗口内的标准差
import pandas as pd
# 创建一个DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 使用rolling函数计算滑动窗口内的标准差
rolling_std = df['A'].rolling(window=2).std()
print(rolling_std)
输出:
0 NaN
1 0.707107
2 0.707107
3 0.707107
4 0.707107
Name: A, dtype: float64
在上述示例中,我们同样创建了一个DataFrame
,并使用rolling
函数计算了滑动窗口大小为2的标准差。在窗口较小的前一个位置,无法形成一个完整的窗口,因此计算结果为NaN。而在窗口内的其他位置,每个窗口内的数据点被用于计算标准差。
示例四:计算滑动窗口内的加权平均值
import pandas as pd
# 创建一个DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 使用rolling函数计算滑动窗口内的加权平均值
rolling_weighted_mean = df['A'].rolling(window=3).apply(lambda x: np.average(x, weights=[0.1, 0.2, 0.3]))
print(rolling_weighted_mean)
输出:
0 1.333333
1 2.133333
2 3.133333
3 4.133333
4 5.000000
Name: A, dtype: float64
在上述示例中,我们同样创建了一个DataFrame
,并使用rolling
函数计算了滑动窗口大小为3的加权平均值。通过传入一个自定义的函数,我们可以使用np.average
函数来计算加权平均值。在每个窗口内,对应权重为[0.1, 0.2, 0.3]。而在窗口较小的前两个位置,无法形成一个完整的窗口,因此计算结果为NaN。
示例五:计算滑动窗口内的中位数
import pandas as pd
# 创建一个DataFrame
data = {'A': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
# 使用rolling函数计算滑动窗口内的中位数
rolling_median = df['A'].rolling(window=2).median()
print(rolling_median)
输出:
0 NaN
1 1.5
2 2.5
3 3.5
4 4.5
Name: A, dtype: float64
在上述示例中,我们同样创建了一个DataFrame
,并使用rolling
函数计算了滑动窗口大小为2的中位数。在窗口较小的前一个位置,无法形成一个完整的窗口,因此计算结果为NaN。而在后面的位置,每个窗口内的两个数据点被用于计算中位数。
4. 小结
本文介绍了Python中rolling
函数的用法和基本语法。通过使用rolling
函数,我们可以方便地进行滑动窗口计算,计算某个时间窗口内的统计指标,如均值、最大值、最小值等等。示例代码展示了rolling
函数在计算滑动窗口内的均值、最大值、标准差、加权平均值和中位数等指标上的应用。通过灵活运用rolling
函数,我们可以更好地分析和预测时间序列数据。