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 模型、季节性分解等高级时间序列分析方法。