查看全课大纲(第 6 / 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.DataFrame索引操作:loc与iloc定位行情
  38. 38.索引总结:量化多字段筛选与定位
  39. 39.运算与对齐:合并不同交易日的数据
  40. 40.Pandas map:对股票代码与状态做映射
  41. 41.Pandas apply:滚动计算技术指标
  42. 42.排序操作:按市盈率与收益率对股票排名
  43. 43.数据清洗:填充与剔除停牌股票缺失值
  44. 44.数据清洗:剔除重复报价与异常交易数据
  45. 45.常用统计:量化最大回撤与分位数风险评估
  46. 46.极值定位:寻找历史最高价与最低价的发生日
  47. 47.风险与累计收益:计算年化波动率与累计回报
  48. 48.实战:小象咖啡店营业数据与热门个股时间序列清洗分析
  49. 49.Series索引操作:按位置与标签访问行情数据
  50. 50.文件读写操作:CSV行情数据导入导出
  51. 51.数据清洗:替换异常报价数据
  52. 52.常用统计:sum/mean/median/count聚合指标

量化沙盒搭建(2):Jupyter Notebook与库配置

约 12 分钟

小象实战讲义 · 量化交易Python入门:从咖啡馆到华尔街

上一节我们把独立的 Python 环境搭了起来,这一节让沙盒真正可用:安装 Jupyter Notebook、把新环境注册成 Kernel、配置常用扩展,让代码既能交互式调试又能留存完整记录。命令行适合一次性操作,Jupyter 才是量化分析的主战场——边写边看、图文混排、随时回溯。本节结束后,你的量化沙盒就具备了跑通本课程全部代码的条件。

💡 核心导读

本节将深入讲解数据分析环境的高级部署技巧,重点解决多版本Python环境管理、虚拟环境隔离、Jupyter Notebook扩展配置等实战问题。通过本小节学习,您将掌握:1) 使用conda创建多版本Python环境;2) 在Jupyter中配置不同内核;3) 安装常用数据分析扩展插件。所有操作均通过终端命令和Python代码演示,确保环境配置可复现。


多版本Python环境管理

conda环境配置

conda create -n quant python=3.11 -y

conda activate quant
conda install numpy pandas matplotlib scikit-learn -y

conda env list

环境结构对比

+---------------+    +---------------+
|  base         |    |  quant         |
|  python=3.10  |    |  python=3.11   |
|  numpy=1.24   |    |  numpy=2.5   |
+---------------+    +---------------+

Jupyter内核管理

将conda环境加入Jupyter

import sys
import os
import subprocess
import json

# 模拟 pip install 和 kernel 安装的输出(不实际执行)
print("正在安装 ipykernel...")
print("Successfully installed ipykernel-6.29.4")
print()
print("正在安装内核 'Quant'...")
print("Installed kernelspec quant in /home/user/.local/share/jupyter/kernels/quant")
print()
print("可用内核列表:")
kernels = [
    "python3      /usr/local/share/jupyter/kernels/python3",
    "Quant      /home/user/.local/share/jupyter/kernels/quant"
]
for kernel in kernels:
    print(kernel)
正在安装 ipykernel...
Successfully installed ipykernel-6.29.4

正在安装内核 'Quant'...
Installed kernelspec quant in /home/user/.local/share/jupyter/kernels/quant

可用内核列表:
python3      /usr/local/share/jupyter/kernels/python3
Quant      /home/user/.local/share/jupyter/kernels/quant

内核切换演示

import sys
import os

print(f"当前Python版本:{sys.version.split()[0]}")
print(f"工作目录:{os.getcwd()}")
print()
print("标准库导入成功。")


开发环境增强配置

必备Jupyter扩展

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

jupyter nbextension enable execute_time/ExecuteTime
jupyter nbextension enable codefolding/main

注意:jupyter_contrib_nbextensions 仅支持经典 Jupyter Notebook(< 7.0),不兼容 Jupyter Lab。若使用 Jupyter Lab,请安装 Lab 原生扩展;若坚持使用 nbextensions,需在经典 Notebook 界面中操作。

常用插件功能说明

当前Python版本:3.14.5
工作目录:C:\Users\leing\AppData\Local\Temp

标准库导入成功。

📝 动手练一练

第 1 题 · 概念应用 你正在Jupyter Notebook中分析一只股票的日收益率序列。你已经在一个单元格中计算并存储了收益率数据到变量 returns。随后,你在下方新建了一个单元格,打算计算该收益率的年化波动率。但你不小心先运行了新建的单元格,此时会发生什么?

  • A. Jupyter会报错 NameError,因为 returns 变量还未定义,必须从上到下按顺序运行。
  • B. Jupyter会使用之前同一个Kernel中已定义过的 returns 变量进行计算,即使它来自上方未按顺序运行的单元格。
  • C. Jupyter会自动搜索整个Notebook文件,找到 returns 变量的定义并执行,然后继续计算年化波动率。
  • D. 新建的单元格会陷入等待状态,直到你手动运行上方的单元格后才会继续执行。
👉 点击查看参考答案

答案:B(Jupyter会使用之前同一个Kernel中已定义过的 returns 变量进行计算,即使它来自上方未按顺序运行的单元格。)

推理过程:Jupyter Notebook的核心机制是内核(Kernel)共享内存。所有单元格都在同一个Python进程中执行。变量 returns 一旦在某个单元格中被定义并执行,就会驻留在该内核的全局作用域中。后续单元格运行时,可以直接访问这些已存在的变量,无论单元格的物理位置或执行顺序如何。这正是Jupyter交互式分析的便利之处,但也可能导致状态依赖错误(例如,修改了 returns 的数据源但未重新运行计算它的单元格)。选项A描述的是普通脚本的行为;选项C的“自动搜索并执行”功能不存在;选项D的“等待状态”也不符合Jupyter的实际行为。


第 2 题 · 代码填空 你已经在名为 quant_env 的Conda环境中安装了Pandas。现在你想在Jupyter Notebook中使用这个环境作为内核。请补全以下在终端中执行的命令,将 quant_env 环境注册为Jupyter可识别的内核。

# 1. 激活目标Conda环境
conda activate quant_env

# 2. 在该环境中安装 ipykernel
pip install ipykernel

# 3. 将当前环境注册到Jupyter,内核显示名称为“Quant-Trading”
python -m ipykernel install --user --name quant_env --display-name ______
👉 点击查看参考答案

空位应填:"Quant-Trading"

完整命令序列与解释:

# 1. 激活目标Conda环境
conda activate quant_env

# 2. 在该环境中安装 ipykernel(使得该环境具备作为内核的能力)
pip install ipykernel

# 3. 将当前环境注册到Jupyter
# --user: 为当前用户安装内核规格
# --name: 指定内核的内部标识符(通常与环境名一致)
# --display-name: 指定在Jupyter界面中显示给用户的友好名称
python -m ipykernel install --user --name quant_env --display-name "Quant-Trading"

执行成功后,在Jupyter Notebook的“Kernel” -> “Change kernel”菜单中,就能看到名为“Quant-Trading”的选项。选择它后,Notebook就会使用 quant_env 环境中的Python解释器和所有已安装的库(如特定版本的Pandas)来执行代码。

本章小结

通过本节学习,您已经掌握了数据分析环境的进阶配置方法,包括多版本环境隔离、Jupyter内核管理和开发效率工具链的搭建。

📋 行动清单

  • 使用conda创建Python 3.10和3.12两个不同版本的环境,并在Jupyter中配置对应内核
  • 在新建环境中安装Scrapy库,并验证scrapy version命令输出
  • 启用Jupyter的ExecuteTime插件,记录某数据分析脚本各单元格执行时间

—— 小象教研组