Jupyter 是一个开源的交互式计算环境,广泛用于数据科学、机器学习、科学计算和教育领域。
什么是 Jupyter? #
Jupyter 名称来源于三种核心编程语言的缩写:
- Julia
- Python
- R
但实际上 Jupyter 支持超过 40 种编程语言。
核心组件 #
1. Jupyter Notebook #
- 基于网页的交互式计算环境
- 将代码、文本、公式、可视化内容组合在一个文档中
- 文件扩展名为
.ipynb(IPython Notebook)
2. JupyterLab #
- Jupyter 的下一代用户界面
- 提供更灵活的模块化工作环境
- 支持多标签页、终端、文本编辑器等
安装 Jupyter #
# 使用pip安装
pip install jupyterlab
# 或者安装经典notebook
pip install notebook启动 Jupyter #
# 启动JupyterLab
jupyter lab
# 启动经典Notebook
jupyter notebook启动后会自动在默认浏览器中打开工作界面。
Jupyter Notebook 基本结构 #
一个 Notebook 由一系列"单元格(cell)"组成,主要有两种类型:
- 代码单元格 - 包含可执行代码
- Markdown单元格 - 包含格式化文本(标题、列表、链接等)
常用快捷键 #
- 运行当前单元格:
Shift+Enter - 插入单元格上方:
A - 插入单元格下方:
B - 删除单元格:
D,D(按两次D) - 切换单元格类型为Markdown:
M - 切换单元格类型为代码:
Y
魔法命令(Magic Commands) #
Jupyter 提供了一些特殊的"魔法命令",以 % 或 %% 开头:
%timeit [i**2 for i in range(1000)] # 测量代码执行时间
%%writefile example.py # 将单元格内容写入文件
def hello():
print("Hello, Jupyter!")Jupyter 的优势 #
- 交互式开发 - 立即看到代码结果
- 可视化展示 - 直接在文档中显示图表和可视化
- 文档与代码结合 - 创建可执行的教学材料
- 支持多种语言 - 不仅限于Python
- 易于分享 - 可导出为HTML, PDF等多种格式
进阶功能 #
- 扩展插件 - 通过
jupyter_contrib_nbextensions添加更多功能 - 交互式控件 - 使用
ipywidgets创建交互式界面 - 大数据处理 - 与Spark等大数据工具集成
- 版本控制 - 与Git集成
适用场景 #
- 数据清洗与转换
- 数据可视化
- 机器学习建模
- 数值模拟
- 教学演示
- 研究报告撰写
Jupyter 已经成为数据科学领域的标准工具之一,它的交互性和可视化能力大大提高了开发效率和探索性数据分析的能力。
JupyterLab 和 Jupyter Notebook #
JupyterLab 和 Jupyter Notebook 都是 Jupyter 项目的交互式计算环境,但它们是不同代的产品,具有以下关系:
演进关系 #
Jupyter Notebook (经典 Notebook)
- 第一代产品(2014年推出)
- 提供基本的笔记本界面
- 每个窗口只能打开一个笔记本
JupyterLab
- 第二代产品(2018年正式发布)
- 被设计为"Notebook的下一代界面"
- 保留了Notebook所有功能,并扩展为集成开发环境
核心区别 #
| 特性 | Jupyter Notebook | JupyterLab |
|---|---|---|
| 界面架构 | 单一文档界面 | 模块化多面板界面 |
| 多文件操作 | 需切换标签页 | 支持并排编辑多个文件 |
| 扩展功能 | 有限 | 原生支持扩展系统 |
| 文件浏览器 | 简单 | 增强型文件管理器 |
| 终端/文本编辑器 | 不支持 | 内置支持 |
| UI灵活性 | 固定布局 | 可拖拽调整的面板布局 |
兼容性关系 #
文件格式
- 两者使用相同的
.ipynb文件格式 - 在一个环境中创建的笔记本可以在另一个环境中打开
- 两者使用相同的
内核系统
- 共享相同的执行内核
- 在一个环境中运行的内核可以在另一个环境中连接使用
组件继承
- JupyterLab 实际上内置了经典Notebook作为其组件
- 在JupyterLab中可以通过菜单直接以经典Notebook模式打开文件
技术栈对比 #
graph TD
Jupyter[Jupyter项目] -->|提供基础架构| Kernel[执行内核]
Jupyter --> Notebook[经典Notebook]
Jupyter --> JupyterLab
JupyterLab -->|包含| NotebookComponent[Notebook组件]
NotebookComponent -->|兼容| Notebook
用户选择建议 #
适合用经典Notebook的情况:
- 只需要简单执行代码单元格
- 在老硬件上运行(资源消耗更少)
- 习惯传统界面
推荐用JupyterLab的情况:
- 需要同时处理多个文件
- 想要集成终端、文本编辑器等功能
- 需要使用扩展插件
- 进行复杂的数据分析项目
发展趋势 #
JupyterLab 是官方主推的方向,未来新功能都会优先在JupyterLab上实现,但经典Notebook仍会长期维护。从2023年起,新安装的Jupyter默认会启动JupyterLab界面。