工程基础

这一篇讲量化工程的地基层:把 Python 写成结构清晰的软件,再把数据处理写得又快又不踩坑。适合已有一点 Python 基础、想系统补齐”编程功底 + pandas 内核”的人。
本篇对应两门课:OOP 面向对象编程(32 讲)+ pandas 数据分析(22 讲)。系列总纲见 量化工程能力知识图谱与学习路线。 顶层总路径见 量化投资学习路径图

参考教材 / 源码

为什么要学这块

量化代码首先是软件。策略、因子、回测框架都是要长期维护、反复改动的工程,写得乱一点,后面每加一个因子都要还债。所以第一步是把 Python 的面向对象和软件工程习惯打牢——这是 OOP 这门课的任务。

第二步是数据。量化里大概九成时间花在数据上:加载、清洗、对齐、分组、重采样。pandas 是这一层的标准工具,但大多数人只停在”查 API 拼命试”,写出来的代码要么慢几十上百倍,要么莫名其妙被 SettingWithCopyWarning 咬一口还不知道为什么。懂它的内存布局,这些问题才从”玄学”变成”可预测”。

这一篇的角度:内核解剖,不止会用,更懂为什么

市面上的 pandas 内容多是用法教程——告诉你 groupby().agg() 怎么写,但不告诉你它内部怎么分组、为什么某种写法快 87 倍。这套课的差异在于每讲两层

  1. 用法精通:跟着 Wes McKinney《Python for Data Analysis》第 3 版把用法过透,配大量随堂练和真实数据实战。
  2. 内核剖析:拆开底层实现——数据在内存里怎么摆、哪个类在干活、”快”和”坑”从哪来。真读 pandas 2.3.3 / numpy 2.4.6 的源码(引用标到 文件:行号,全部 grep 核对),能跑的就当场 inspect 验证。

一条主线贯穿全程:pandas = numpy 的内存模型 + 带标签的索引 + 块化的列存。抓住”内存布局”这条线,用法和陷阱都变得有迹可循。OOP 那门课同理,主线是”如何把系统拆成对象,让代码好懂、好改、好扩展”。

你会学到什么(对应课程讲次)

OOP 面向对象(32 讲)

板块 讲次 内容
面向对象思维 01–02 对象/类/状态/行为、封装抽象接口、组合聚合、UML
类与继承 06–10 __init__/self、类型提示、继承与 super、多重继承、多态与鸭子类型
异常与属性 11–14 异常层级、自定义异常、property、上下文管理器 with
抽象与协议 15–16 抽象基类 ABC、Protocol、运算符重载、元类一瞥
数据结构 17–18 命名元组/字典/集合/队列、@dataclass
迭代器与生成器 23–24 迭代器协议、推导式、生成器函数与表达式
设计模式 25–28 装饰器/观察者/策略/命令/状态/单例、适配器/外观/享元/抽象工厂/组合/模板
测试与并发 29–31 unittest/pytest、Mock、TDD、线程/多进程/future/AsyncIO

pandas 数据分析(22 讲)

板块 讲次 内核重点
numpy 内存模型 02–04 ndarray 的 strides、视图 vs 拷贝、广播机制、花式索引必拷贝
核心数据结构 05–07 Series=ndarray+Index、Index 是哈希表DataFrame 的 BlockManager、copy-vs-view 与 CoW
加载与清洗 08–11 read_csv 的 C 解析引擎、NaN vs pd.NA、str 访问器、Categorical 字典编码
连接与重塑 12–14 MultiIndex 的 levels+codesmerge 的哈希连接、stack/unstack
分组聚合 15–17 groupby 的 factorize 分组、Cython 聚合、透视表本质
时序与性能 18–21 DatetimeIndex=int64 纳秒、resample 分箱、rolling、性能与陷阱总讲

承上启下

这是系列的第一层。地基打好后,下一站是 【工程·研究篇】机器学习算法与量化应用——同样是”手搓 + 读源码”的路子,把这里练出的向量化直觉和读源码方法接着用到算法和交易上。完整地图见 量化工程能力知识图谱与学习路线


本篇课程