跳到主要内容

Pandas 时间窗口

在时间序列分析中,时间窗口(Time Window)是一个非常重要的概念。它允许我们在一个特定的时间范围内对数据进行操作和分析。Pandas提供了强大的工具来处理时间窗口,使得我们能够轻松地进行滚动计算、滑动窗口分析等操作。

什么是时间窗口?

时间窗口是指在时间序列数据中,选择一个固定的时间段(如5天、10分钟等),然后在这个时间段内对数据进行操作。常见的时间窗口操作包括滚动平均值、滚动总和、滑动窗口分析等。

基本概念

在Pandas中,时间窗口操作主要通过rolling方法来实现。rolling方法允许我们指定一个窗口大小,然后在这个窗口内对数据进行操作。

滚动窗口

滚动窗口是指在时间序列数据中,选择一个固定大小的窗口,然后在这个窗口内对数据进行操作。窗口会随着时间向前滚动,每次滚动一个时间步长。

python
import pandas as pd

# 创建一个时间序列数据
data = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

# 使用rolling方法计算滚动平均值
rolling_mean = data.rolling(window=3).mean()

print(rolling_mean)

输出:

0    NaN
1 NaN
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0
dtype: float64

在这个例子中,我们创建了一个包含10个元素的时间序列数据,并使用rolling方法计算了窗口大小为3的滚动平均值。注意,前两个值是NaN,因为窗口大小是3,前两个值没有足够的数据来计算平均值。

滑动窗口

滑动窗口与滚动窗口类似,但它允许窗口在时间序列中滑动,而不是固定在一个位置。滑动窗口通常用于分析时间序列中的趋势和模式。

python
# 使用rolling方法计算滑动窗口的总和
rolling_sum = data.rolling(window=3).sum()

print(rolling_sum)

输出:

0     NaN
1 NaN
2 6.0
3 9.0
4 12.0
5 15.0
6 18.0
7 21.0
8 24.0
9 27.0
dtype: float64

在这个例子中,我们计算了窗口大小为3的滑动窗口总和。与滚动平均值类似,前两个值是NaN

实际应用案例

股票价格分析

假设我们有一组股票价格数据,我们想要计算过去5天的滚动平均价格,以分析股票价格的趋势。

python
# 创建股票价格数据
stock_prices = pd.Series([100, 101, 102, 103, 104, 105, 106, 107, 108, 109])

# 计算过去5天的滚动平均价格
rolling_avg = stock_prices.rolling(window=5).mean()

print(rolling_avg)

输出:

0    NaN
1 NaN
2 NaN
3 NaN
4 102.0
5 103.0
6 104.0
7 105.0
8 106.0
9 107.0
dtype: float64

在这个例子中,我们计算了股票价格在过去5天的滚动平均价格。前4个值是NaN,因为窗口大小是5,前4个值没有足够的数据来计算平均值。

温度数据分析

假设我们有一组温度数据,我们想要计算过去7天的滚动最高温度,以分析温度的变化趋势。

python
# 创建温度数据
temperatures = pd.Series([20, 21, 22, 23, 24, 25, 26, 27, 28, 29])

# 计算过去7天的滚动最高温度
rolling_max = temperatures.rolling(window=7).max()

print(rolling_max)

输出:

0    NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 26.0
7 27.0
8 28.0
9 29.0
dtype: float64

在这个例子中,我们计算了温度在过去7天的滚动最高温度。前6个值是NaN,因为窗口大小是7,前6个值没有足够的数据来计算最高温度。

总结

Pandas中的时间窗口功能为我们提供了强大的工具来处理和分析时间序列数据。通过rolling方法,我们可以轻松地进行滚动计算、滑动窗口分析等操作。这些功能在金融分析、气象数据分析等领域有着广泛的应用。

附加资源

练习

  1. 创建一个包含20个元素的随机时间序列数据,并计算窗口大小为5的滚动平均值。
  2. 使用股票价格数据,计算过去10天的滚动最低价格。
  3. 分析一组温度数据,计算过去14天的滚动标准差。

通过完成这些练习,你将更好地掌握Pandas中的时间窗口功能。