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