Appearance
时间序列案例
时间序列分析在金融、销售、气象等领域有广泛应用。
案例背景
分析某股票的价格走势和交易指标。
数据准备
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('