16 时间序列分析

16 时间序列分析

时间序列分析是数据分析中一个重要的部分,尤其是在金融、气象和其他需要随时间变化的数据处理中。Pandas 提供了强大的工具,让我们能够轻松地处理和分析时间序列数据。下面我们将探讨一些基础的时间序列操作和分析。

时间序列的创建

Pandas 中,时间序列通常是通过 DatetimeIndex 来实现的。我们可以通过 pd.date_range() 函数快速生成一个时间序列。

1
2
3
4
5
import pandas as pd

# 创建一个包含10天的日期范围
date_rng = pd.date_range(start='2023-01-01', end='2023-01-10', freq='D')
print(date_rng)

输出:

1
2
3
4
DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04',
'2023-01-05', '2023-01-06', '2023-01-07', '2023-01-08',
'2023-01-09', '2023-01-10'],
dtype='datetime64[ns]', freq='D')

时间序列数据的创建

通常,我们会将时间序列数据与一些数值数据结合在一起,下面是一个简单的案例示范。

1
2
3
4
5
6
import numpy as np

# 创建一个时间序列数据框
data = np.random.randn(len(date_rng)) # 生成随机数
ts = pd.Series(data, index=date_rng)
print(ts)

输出将是一个带有随机数值的 Series,索引为日期。

数据的切片与索引

时间序列的一个强大之处在于可以通过时间索引进行切片。我们可以使用 .loc 方法来选择特定的日期范围。

1
2
# 选择特定日期范围的数据
print(ts['2023-01-03':'2023-01-06'])

重采样 (Resampling)

重采样是分析时间序列中举足轻重的一步,它允许用户改变数据的频率。例如,我们可以将日数据重采样为周数据。

1
2
3
# 以周为单位重采样并计算均值
weekly_mean = ts.resample('W').mean()
print(weekly_mean)

移动窗口操作

Pandas 也支持移动窗口计算。这对于计算移动平均线非常有用。

1
2
3
# 计算滚动窗口的均值
rolling_mean = ts.rolling(window=3).mean()
print(rolling_mean)

时间序列的可视化

可视化时间序列数据可以帮助我们获取数据的趋势和季节性。我们可以使用 matplotlib 库进行绘图。

1
2
3
4
5
6
import matplotlib.pyplot as plt

ts.plot(title='时间序列数据', figsize=(10, 6))
plt.xlabel('日期')
plt.ylabel('值')
plt.show()

处理缺失值

时间序列数据中常常会出现缺失值,我们可以通过插值或向后/向前填充等方法来处理这些缺失值。

1
2
3
# 向前填充缺失值
ts_filled = ts.fillna(method='ffill')
print(ts_filled)

总结

通过以上小节,我们了解了如何使用 Pandas 进行基本的时间序列分析。我们学习了如何创建时间序列、进行数据切片、重采样、移动窗口操作、可视化以及处理缺失值。这些操作能帮助我们更好地理解随时间变化的数据特性,进而进行有效的决策分析。

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议