跳到主要内容

Pandas 时间序列分析

时间序列是按时间顺序排列的数据点序列,通常用于分析随时间变化的数据。Pandas 是 Python 中一个强大的数据处理库,特别适合处理时间序列数据。本教程将带你了解如何使用 Pandas 进行时间序列分析。

1. 什么是时间序列?

时间序列是按时间顺序排列的数据点序列。常见的时间序列数据包括股票价格、气温、销售额等。时间序列分析的目标是从这些数据中提取有意义的信息,例如趋势、季节性等。

2. Pandas 中的时间序列

Pandas 提供了强大的工具来处理时间序列数据。首先,我们需要导入 Pandas 库:

python
import pandas as pd

2.1 创建时间序列

我们可以使用 pd.date_range 函数创建一个时间序列:

python
dates = pd.date_range('2023-01-01', periods=5, freq='D')
print(dates)

输出:

DatetimeIndex(['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'], dtype='datetime64[ns]', freq='D')

2.2 创建带有时间序列的 DataFrame

我们可以将时间序列作为索引,创建一个 DataFrame:

python
data = {'value': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data, index=dates)
print(df)

输出:

            value
2023-01-01 10
2023-01-02 20
2023-01-03 30
2023-01-04 40
2023-01-05 50

3. 时间序列操作

3.1 重采样

重采样是指将时间序列从一个频率转换为另一个频率。例如,将每日数据转换为每月数据:

python
df_resampled = df.resample('M').mean()
print(df_resampled)

输出:

            value
2023-01-31 30

3.2 移动窗口计算

移动窗口计算是一种常见的时间序列操作,用于计算滚动平均值、滚动标准差等:

python
df['rolling_mean'] = df['value'].rolling(window=2).mean()
print(df)

输出:

            value  rolling_mean
2023-01-01 10 NaN
2023-01-02 20 15.0
2023-01-03 30 25.0
2023-01-04 40 35.0
2023-01-05 50 45.0

4. 实际案例:分析股票价格

假设我们有一组股票价格数据,我们可以使用 Pandas 来分析其趋势和波动性。

python
# 假设我们有以下股票价格数据
stock_data = {
'date': ['2023-01-01', '2023-01-02', '2023-01-03', '2023-01-04', '2023-01-05'],
'price': [100, 105, 103, 107, 110]
}
df_stock = pd.DataFrame(stock_data)
df_stock['date'] = pd.to_datetime(df_stock['date'])
df_stock.set_index('date', inplace=True)

# 计算每日收益率
df_stock['daily_return'] = df_stock['price'].pct_change()
print(df_stock)

输出:

            price  daily_return
date
2023-01-01 100 NaN
2023-01-02 105 0.050000
2023-01-03 103 -0.019048
2023-01-04 107 0.038835
2023-01-05 110 0.028037

5. 总结

在本教程中,我们介绍了如何使用 Pandas 进行时间序列分析。我们学习了如何创建时间序列、重采样、移动窗口计算以及如何分析股票价格数据。时间序列分析是数据分析中的一个重要领域,掌握这些技能将有助于你更好地理解和分析随时间变化的数据。

6. 附加资源与练习

  • 练习 1:尝试使用 Pandas 分析你所在城市的每日气温数据,计算每周的平均气温。
  • 练习 2:使用移动窗口计算分析某只股票的滚动平均价格。
提示

如果你对时间序列分析感兴趣,可以进一步学习 ARIMA 模型、季节性分解等高级时间序列分析方法。