Skip to content

时间序列案例

时间序列分析在金融、销售、气象等领域有广泛应用。

案例背景

分析某股票的价格走势和交易指标。

数据准备

python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 创建模拟股票数据
np.random.seed(42)
dates = pd.date_range('2024-01-01', '2024-06-30', freq='B')  # 工作日

# 生成价格数据
initial_price = 100
returns = np.random.normal(0.001, 0.02, len(dates))
prices = initial_price * (1 + returns).cumprod()

# 生成成交量
volume = np.random.randint(1000000, 5000000, len(dates))

# 创建DataFrame
stock_df = pd.DataFrame({
    '日期': dates,
    '开盘价': prices * (1 + np.random.normal(0, 0.005, len(dates))),
    '收盘价': prices,
    '最高价': prices * (1 + abs(np.random.normal(0, 0.01, len(dates)))),
    '最低价': prices * (1 - abs(np.random.normal(0, 0.01, len(dates)))),
    '成交量': volume
})

stock_df.set_index('日期', inplace=True)

print("股票数据概览:")
print(stock_df.head())
print(f"\n数据量: {len(stock_df)} 个交易日")

基础分析

价格走势

python
# 绘制价格走势
stock_df[['开盘价', '收盘价', '最高价', '最低价']].plot(figsize=(12, 6))
plt.title('股票价格走势')
plt.ylabel('价格')
plt.legend(['开盘', '收盘', '最高', '最低'])
plt.tight_layout()
plt.show()

成交量分析

python
# 成交量走势
stock_df['成交量'].plot(figsize=(12, 4), color='gray', alpha=0.7)
plt.title('成交量走势')
plt.ylabel('成交量')
plt.tight_layout()
plt.show()

技术指标计算

移动平均线

python
# 计算移动平均线
stock_df['MA5'] = stock_df['收盘价'].rolling(window=5).mean()
stock_df['MA20'] = stock_df['收盘价'].rolling(window=20).mean()
stock_df['MA60'] = stock_df['收盘价'].rolling(window=60).mean()

# 绘制均线
stock_df[['收盘价', 'MA5', 'MA20', 'MA60']].plot(figsize=(12, 6))
plt.title('股票价格与移动平均线')
plt.ylabel('