Jupyter 是一个开源项目,它允许用户创建和共享包含实时代码、方程、可视化和叙述性文本的文档。它的名称来源于三种核心编程语言:Julia, Python 和 R,但如今已支持数十种编程语言(”内核”)。Jupyter 不仅仅是一款工具,更是一种交互式计算和可重现研究的生态系统。

核心思想:提供一个交互式的 Web 环境,将代码、输出、文本和可视化集成到单一文档中,便于探索性数据分析、教学和分享。


一、Jupyter 的起源与核心价值

Jupyter 项目脱胎于 IPython Notebook,旨在扩展其功能以支持更多语言。它的核心价值在于:

  1. 交互式计算:用户可以逐块执行代码,并立即看到结果,这对于数据探索、算法原型设计和教学非常有用。
  2. 富媒体文档:Notebook 不仅包含代码和输出,还可以包含 Markdown (用于文本描述)、LaTeX (用于数学公式) 和图像等,生成内容丰富的报告。
  3. 可重现性:一个运行完整的 Notebook 包含了完成分析或程序所需的所有步骤、代码和结果,有助于他人理解、复现和验证工作。
  4. 易于分享:Notebook 可以方便地导出为多种格式(HTML, PDF, Markdown 等),或直接作为 .ipynb 文件分享。
  5. 多语言支持:通过“内核”机制,可支持 Python、R、Julia、Scala、Haskell 等数十种编程语言。

二、Jupyter 生态系统核心组件

Jupyter 项目包含多个核心组件,其中最常用的是 Jupyter NotebookJupyterLab

2.1 Jupyter Notebook

Jupyter Notebook 是 Jupyter 项目的最初产品,也是最广为人知的组件。它提供了一个基于 Web 的应用程序,用于创建和管理 Notebook 文档。

核心概念

  • Notebook (.ipynb 文件):一种特殊的 JSON 格式文件,包含了有序的输入/输出单元格(代码、Markdown、原始文本)、代码执行结果等。
  • 单元格 (Cell):Notebook 的基本组成单位,分为:
    • Code Cell: 包含可执行代码的单元格。执行后,输出会直接显示在单元格下方。
    • Markdown Cell: 包含 Markdown 格式文本的单元格,用于添加说明、标题、列表、图片等。
    • Raw Cell: 包含原始文本的单元格,不会被渲染。
  • 内核 (Kernel):负责运行 Notebook 中的代码。每个 Notebook 都连接到一个特定的内核(例如 Python 3 内核),该内核管理着代码的执行状态和变量。

Jupyter Notebook 界面概述

2.2 JupyterLab

JupyterLab 是 Jupyter 项目的下一代用户界面,被设计为更强大、更灵活的交互式开发环境 (IDE)。它整合了 Jupyter Notebook 的所有功能,并提供了更多工具,如文件浏览器、终端、文本编辑器、数据查看器、Git 集成等,拥有一个可定制的、多标签页的工作区。

主要优势

  • 模块化界面:用户可以自由拖拽、调整和组合各种组件(Notebook、终端、文件浏览器、输出窗口等),创建个性化布局。
  • 多文档支持:可以在同一个窗口中同时打开并编辑多个 Notebook、终端或文本文件。
  • 增强的文件操作: 内置强大的文件浏览器和文件编辑功能。
  • 插件系统: 支持丰富的第三方插件,扩展功能。
  • 更好的性能和响应速度

JupyterLab 界面概述

三、安装与启动

3.1 安装 Jupyter

推荐在 Python 虚拟环境中安装 Jupyter,以避免环境冲突。

1
2
3
4
5
6
7
8
# 1. 创建并激活虚拟环境 (可选,但推荐)
python -m venv .venv
source .venv/bin/activate

# 2. 安装 Jupyter (会同时安装 notebook 和 jupyterlab)
pip install jupyterlab
# 或者只安装 Jupyter Notebook
# pip install notebook

3.2 启动 Jupyter

在命令行中导航到你希望作为工作目录的文件夹,然后运行相应的启动命令。

启动 Jupyter Notebook

1
jupyter notebook

这会启动一个本地服务器,并在浏览器中自动打开一个新标签页,显示文件浏览器界面。

启动 JupyterLab

1
jupyter lab

这也会启动一个本地服务器,并在浏览器中自动打开 JupyterLab 界面。

通常,它们会在 http://localhost:8888 端口运行。

四、Jupyter Notebook / JupyterLab 的基本操作

  1. 新建 Notebook:在文件浏览器界面点击 New -> Python 3 (或其他内核) 即可创建新的 Notebook。
  2. 单元格操作
    • 运行单元格:选中单元格后,点击工具栏的 Run 按钮,或使用快捷键 Shift + Enter
    • 切换单元格类型:在工具栏的下拉菜单中选择 CodeMarkdown
    • 插入单元格:点击工具栏的 + 按钮,或在 Insert 菜单中操作。
    • 删除单元格:选中单元格后,点击工具栏的剪刀图标,或在 Edit 菜单中操作。
  3. Kernel 操作
    • 重启 KernelKernel -> Restart (清除所有变量和输出)。
    • 中断 KernelKernel -> Interrupt (停止当前正在运行的代码)。
    • 切换 KernelKernel -> Change kernel
  4. 保存 NotebookFile -> Save and Checkpoint,或使用快捷键 Ctrl + S / Cmd + S
  5. 导出 NotebookFile -> Download as,可以选择导出为 HTML, PDF, Markdown, Python Script 等多种格式。

五、Jupyter 的高级应用与最佳实践

  1. 魔法命令 (Magic Commands):IPython 内核提供了一系列以 %%% 开头的特殊命令,用于执行文件系统操作、时间测量、调试等。

    • %run script.py: 运行一个 Python 脚本。
    • %timeit code: 测量代码执行时间。
    • %matplotlib inline: 在 Notebook 中直接显示 Matplotlib 图表。
    • %load_ext autoreload: 自动重新加载模块。
    • %%bash: 在 Code Cell 中执行 Bash 命令。
    1
    %timeit [i**2 for i in range(1000)]
  2. 版本控制:由于 .ipynb 文件是 JSON 格式,直接进行 Git 版本控制可能会遇到合并冲突。可以使用 nbstripoutjupytext 等工具来预处理 Notebook,将其转换为更易于版本控制的纯文本格式,或者使用集成在 JupyterLab 中的 Git 插件。

  3. 远程访问:可以通过配置 Jupyter 启动参数,使其可以在远程服务器上运行,并通过 SSH 隧道或直接对外开放端口(需注意安全性)进行访问。

  4. 扩展 (Extensions):Jupyter Notebook 和 JupyterLab 都有丰富的社区扩展,可以增强功能,如代码格式化、目录生成、拼写检查、Git 集成等。

  5. 数据科学生态集成:Jupyter 是数据科学生态的核心,与 Pandas, NumPy, Matplotlib, scikit-learn, TensorFlow, PyTorch 等库无缝集成,是进行数据清洗、探索、建模和可视化不可或缺的工具。

六、总结

Jupyter 项目,尤其是 Jupyter Notebook 和 JupyterLab,彻底改变了交互式计算和数据科学的工作方式。它提供了一个强大、灵活且用户友好的环境,使开发者和数据科学家能够以前所未有的效率进行探索、编写代码、可视化结果并分享他们的发现。无论是个人学习、团队协作还是教学演示,Jupyter 都是现代数据科学栈中一个不可或缺的工具。掌握 Jupyter 的使用,将极大提升您在数据相关工作中的生产力。