← 返回《量化交易 Python 入门:从咖啡馆到华尔街》
📑 查看全课大纲(第 3 / 52 节)
  1. 1.量化分析基本概念:从咖啡馆到华尔街
  2. 2.量化交易员学习路线:从零基础到策略开发
  3. 3.量化策略生命周期:数据分析的五大流程
  4. 4.量化数据类型:数值型与类别型数据
  5. 5.量化沙盒搭建(1):Python与Anaconda安装
  6. 6.量化沙盒搭建(2):Jupyter Notebook与库配置
  7. 7.本地多源数据:量化历史回测的基石
  8. 8.TXT数据流操作:处理金融交易日志
  9. 9.JSON数据流操作:解析股票行情API响应
  10. 10.CSV行情文件操作:读取与存储历史K线
  11. 11.Excel报表操作:清洗财报与财务指标
  12. 12.量化数据库:SQL常用查询语法
  13. 13.量化数据库:Python连接与写入
  14. 14.量化多表连接:关联股票信息与行情
  15. 15.实战:小象咖啡店营业数据与个股财务指标的多源数据分析
  16. 16.量化数据采集:爬虫工作原理与合规
  17. 17.量化爬虫核心:URL管理与去重策略
  18. 18.量化网页下载:防反爬与请求头伪装
  19. 19.网页解析(1):使用XPath定位财经新闻
  20. 20.网页解析(2):使用CSS选择器与ItemLoader
  21. 21.Scrapy框架:构建工业级量化爬虫
  22. 22.Scrapy实战(1):新建项目与数据模型定义
  23. 23.Scrapy实战(2):编写财经爬虫逻辑
  24. 24.Scrapy实战(3):启用数据管道清洗行情
  25. 25.Scrapy实战(4):防反爬中间件配置
  26. 26.实战:构建每日热门个股行情自动采集系统
  27. 27.NumPy与SciPy:加速量化矩阵计算
  28. 28.NumPy数组:构建股票价格矩阵
  29. 29.数组切片:提取特定股票与交易日数据
  30. 30.NumPy常用方法:计算均值与波动率
  31. 31.向量化计算:摆脱缓慢的For循环
  32. 32.通用函数ufunc:计算对数收益率与累计收益
  33. 33.实战:股票组合资产收益率与协方差矩阵计算
  34. 34.Pandas Series:管理单只股票收盘价
  35. 35.Pandas DataFrame:构建多只股票行情面板
  36. 36.Pandas Index:时间序列索引与对齐
  37. 37.Series索引操作:按位置与标签访问行情数据
  38. 38.DataFrame索引操作:loc与iloc定位行情
  39. 39.索引总结:量化多字段筛选与定位
  40. 40.运算与对齐:合并不同交易日的数据
  41. 41.Pandas map:对股票代码与状态做映射
  42. 42.Pandas apply:滚动计算技术指标
  43. 43.文件读写操作:CSV行情数据导入导出
  44. 44.排序操作:按市盈率与收益率对股票排名
  45. 45.数据清洗:填充与剔除停牌股票缺失值
  46. 46.数据清洗:剔除重复报价与异常交易数据
  47. 47.数据清洗:替换异常报价数据
  48. 48.常用统计:量化最大回撤与分位数风险评估
  49. 49.常用统计:sum/mean/median/count聚合指标
  50. 50.极值定位:寻找历史最高价与最低价的发生日
  51. 51.风险与累计收益:计算年化波动率与累计回报
  52. 52.实战:小象咖啡店营业数据与热门个股时间序列清洗分析

量化策略生命周期:数据分析的五大流程

量化策略生命周期:数据分析的五大流程

小象量化极客小册 · 华尔街量化分析先锋系列

欢迎来到华尔街量化分析先锋:从咖啡销量到量化策略的第1章。作为一名在小象咖啡馆摸爬滚打的数据侦探,你即将迈出转型量化交易员的关键一步。本节我们将部署量化计算沙盒,并理解基础的数据分析科学模型。

小象量化极客小册 · 华尔街量化分析先锋系列 欢迎来到华尔街量化分析先锋:从咖啡销量到量化策略的第1章。作为一名在小象咖啡馆摸爬滚打的数据侦探,你即将迈出转型量化交易员的关键一步。本节我们将部署量化计算沙盒,并理解基础的数据分析科学模型。

💡 核心导读

本节将系统介绍数据分析的标准流程,从数据获取到最终报告生成的全生命周期。通过完整的Python代码演示,您将掌握:数据采集与清洗的核心方法、探索性分析(EDA)的典型技术、建模分析的关键步骤,以及如何通过可视化呈现分析结果。重点学习Pandas数据透视、Matplotlib/seaborn可视化,以及scikit-learn的快速建模技巧。


数据分析标准流程

1. 数据采集与输入

import pandas as pd
from sklearn.datasets import fetch_california_housing

data = fetch_california_housing(as_frame=True)
df = data.frame

print(f"数据维度: {df.shape}")
print("\n前3行数据示例:")
print(df.head(3).to_markdown())  # 以Markdown表格形式输出

输出示例(ASCII表格格式):

|    |   MedInc |   HouseAge |   AveRooms |   AveBedrms |   Population |   AveOccup |   Latitude |   Longitude |   MedHouseVal |
|---:|---------:|-----------:|-----------:|------------:|-------------:|-----------:|-----------:|------------:|--------------:|
|  0 |    8.325 |         41 |       6.98 |        1.02 |          322 |       2.56 |     37.88 |      -122.23 |         4.526 |
|  1 |    8.301 |         21 |       6.24 |        0.97 |         2401 |       2.11 |     37.86 |      -122.22 |         3.585 |
|  2 |    7.257 |         52 |       8.29 |        1.07 |          496 |       2.80 |     37.85 |      -122.24 |         3.521 |

2. 数据清洗与预处理

df_clean = df.copy()
df_clean['AveRooms'] = df_clean['AveRooms'].clip(upper=20)  # 截断极端值

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df_clean[['MedInc', 'HouseAge']] = scaler.fit_transform(df_clean[['MedInc', 'HouseAge']])

print("\n清洗后统计摘要:")
print(df_clean.describe().loc[['mean', 'std']].to_markdown())

3. 探索性分析(EDA)

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(12,6))
sns.heatmap(df_clean.corr(), annot=True, cmap='coolwarm')
plt.title('特征相关性矩阵')
plt.show()

df_clean.boxplot(column=['MedInc', 'AveRooms'], vert=False)
plt.title('关键特征分布')
plt.show()

4. 建模与分析

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

X = df_clean.drop('MedHouseVal', axis=1)
y = df_clean['MedHouseVal']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = LinearRegression()
model.fit(X_train, y_train)

print(f"\n模型R2分数: {model.score(X_test, y_test):.3f}")
print("特征重要性:")
for name, coef in zip(X.columns, model.coef_):
    print(f"- {name}: {coef:.4f}")

5. 结果可视化

plt.scatter(y_test, model.predict(X_test), alpha=0.5)
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--')
plt.xlabel('真实值')
plt.ylabel('预测值')
plt.title('预测结果对比')
plt.show()

💡 概念小测:数据清洗与未来函数

在量化回测的五大流程中,为什么必须在“特征工程”和“建模分析”之前,先进行“数据清洗”?

  • 数据清洗只是为了好看,不影响最终量化模型的收益率预测。
  • 历史行情数据常含有因停牌导致的缺失值或拆股导致的异常值,直接训练会使模型产生严重的偏差或报错。
  • 数据清洗可以自动预测未来的股票价格,无需再进行机器学习建模。
  • 数据清洗是为了将所有的连续型数值全部转化为离散的类别标签。

💡 代码填空:剔除缺失值

在处理小象咖啡股票的收盘价序列时,我们需要将包含 NaN(缺失值)的行进行剔除。请补齐缺失的方法名:

import pandas as pd
import numpy as np

df = pd.DataFrame({'close': [100.5, np.nan, 102.3]})
clean_df = df.{blank}()
print(clean_df)
  • fillna
  • dropna
  • drop_duplicates

📝 选择题

💡 概念小测:数据清洗与未来函数 在量化回测的五大流程中,为什么必须在“特征工程”和“建模分析”之前,先进行“数据清洗”?

  • A. 数据清洗只是为了好看,不影响最终量化模型的收益率预测。
  • B. 历史行情数据常含有因停牌导致的缺失值或拆股导致的异常值,直接训练会使模型产生严重的偏差或报错。
  • C. 数据清洗可以自动预测未来的股票价格,无需再进行机器学习建模。
  • D. 数据清洗是为了将所有的连续型数值全部转化为离散的类别标签。

答案:B(历史行情数据常含有因停牌导致的缺失值或拆股导致的异常值,直接训练会使模型产生严重的偏差或报错。)


✏️ 填空题

💡 代码填空:剔除缺失值 在处理小象咖啡股票的收盘价序列时,我们需要将包含 NaN(缺失值)的行进行剔除。请补齐缺失的方法名:

import pandas as pd
import numpy as np
df = pd.DataFrame({'close': [100.5, np.nan, 102.3]})
# 剔除含有缺失值的行
clean_df = df.___()
print(clean_df)

答案:dropna


本章小结

通过本节的实践,我们完成了从原始数据到建模分析的完整流程。以下是需要重点掌握的技能点:

行动清单

  • 使用Pandas完成数据加载与清洗,尝试对AveBedrms字段进行缺失值填充
  • 用Seaborn绘制至少3种不同类型的图表(如pairplot、violinplot等)
  • 修改建模代码,尝试用随机森林(RandomForestRegressor)替代线性回归并比较结果

「小象量化教研组」

🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问