Jupyter Notebook 入门教程:功能与用法深度解析
在现代数据科学、机器学习、教育和研究领域,Jupyter Notebook 已成为不可或缺的工具。它以其独特的交互式计算环境,极大地提高了代码开发、数据探索、结果分享的效率。对于刚接触这些领域的新手来说,掌握 Jupyter Notebook 是迈入精彩世界的第一步。
本文将带你详细了解 Jupyter Notebook 的核心功能、安装方法、基础操作及进阶用法,帮助你快速上手并体会到它的强大之处。
一、什么是 Jupyter Notebook?为何选择它?
1.1 核心概念
Jupyter Notebook 是 Project Jupyter 项目的一个开源 Web 应用程序。它允许你创建和分享包含:
- 实时代码 (Live Code)
- 方程式 (Equations)
- 可视化 (Visualizations)
- 解释性文本 (Explanatory Text)
的文档。这些文档被称为“Notebook”(笔记本),以 .ipynb
为后缀保存。
Jupyter 本身是一个语言无关的项目,但最常用的是与 Python 语言结合,因为它起源于 IPython 项目(一个增强的 Python 交互式解释器)。然而,通过安装不同的“内核 (Kernels)”,Jupyter Notebook 可以支持包括 R, Julia, Scala, Java 等在内的几十种编程语言。
1.2 为何选择 Jupyter Notebook?
相比传统的脚本文件(如 .py
文件)或集成开发环境 (IDE),Jupyter Notebook 提供了独特的优势:
- 交互性与探索性: 你可以按块(Cell)执行代码,立即看到结果,这对于数据清洗、建模过程中的反复试验和探索性分析极为方便。
- 文档化与解释性: 它无缝集成了代码、输出和文本(Markdown),使得你可以在同一文档中详细解释代码的逻辑、数据处理的步骤、分析的结果,形成一个完整的叙述。
- 可视化集成: 集成了 Matplotlib, Seaborn, Plotly 等流行的可视化库后,可以直接在 Notebook 中生成并显示图表,让数据故事更加生动。
- 易于分享:
.ipynb
文件本身就是一种标准格式,可以方便地分享给他人。GitHub 等平台原生支持.ipynb
文件的在线渲染。你也可以轻松地将 Notebook 导出为 HTML, PDF, Markdown 等格式。 - 教学与演示: 其逐块执行和文档化的特性非常适合教学和演示,教师可以逐步展示代码和概念,学生也可以轻松复现和练习。
- 跨平台: 作为一个 Web 应用,它可以在几乎所有主流操作系统(Windows, macOS, Linux)上运行。
总之,Jupyter Notebook 提供了一个集代码、文本、输出、可视化于一体的强大工作台,尤其适合需要大量探索、迭代和清晰文档化工作的场景。
二、安装 Jupyter Notebook
安装 Jupyter Notebook 最简单、最推荐的方式是使用 Anaconda 或 Miniconda。这是一个包含了 Python 以及众多科学计算、数据分析常用库(如 NumPy, Pandas, Matplotlib)的发行版。
2.1 使用 Anaconda/Miniconda 安装 (推荐)
- 下载 Anaconda 或 Miniconda: 访问 Anaconda 官网 (https://www.anaconda.com/products/distribution) 或 Miniconda 官网 (https://docs.conda.io/en/latest/miniconda.html),根据你的操作系统下载对应的安装包。Miniconda 更轻量级,只包含 Python 和 conda 包管理器,适合希望自己管理环境和库的用户。
- 运行安装程序: 按照安装向导的步骤进行安装。大多数情况下,选择默认选项即可。确保勾选“Add Anaconda/Miniconda to my PATH environment variable”(或类似的选项),这样就可以在命令行中直接使用
conda
和jupyter
命令。 - 验证安装: 打开终端(或命令提示符),输入以下命令并回车:
bash
conda --version
jupyter notebook --version
如果显示版本号,则表示安装成功。
Anaconda 安装完成后,Jupyter Notebook 及其所需的依赖库通常已经包含在内,无需额外安装。
2.2 使用 pip 安装 (适合已有 Python 环境的用户)
如果你已经安装了 Python (推荐 Python 3.3 或更高版本),可以使用 pip 包管理器安装:
打开终端(或命令提示符),输入以下命令并回车:
bash
pip install notebook
这将会安装 Jupyter Notebook 及其核心依赖。你可能需要配置环境变量才能在任意位置调用 jupyter notebook
命令。
三、启动 Jupyter Notebook
安装完成后,启动 Jupyter Notebook 非常简单。
3.1 通过终端/命令提示符启动
打开终端(或命令提示符),切换到你想要保存 Notebook 文件的目录(可选,但推荐),然后输入以下命令并回车:
bash
jupyter notebook
或者对于新版本的 JupyterLab (通常与 Notebook 一起安装并是推荐的后续版本):
bash
jupyter lab
执行此命令后:
- 一个本地的 Web 服务器会在你的计算机上启动。
- 你的默认网页浏览器会自动打开一个新的标签页,显示 Jupyter Notebook 的文件浏览器界面。
终端窗口会显示服务器的运行信息,请不要关闭这个终端窗口,它是 Notebook 服务的后台进程。关闭终端窗口将停止 Jupyter Notebook 服务。
3.2 通过 Anaconda Navigator 启动
如果你安装的是 Anaconda,还可以通过 Anaconda Navigator(一个图形界面应用程序)来启动 Jupyter Notebook 或 JupyterLab。启动 Anaconda Navigator,找到 Jupyter Notebook 或 JupyterLab 的图标,点击“Launch”即可。
四、Jupyter Notebook 用户界面概览 (功能解析)
启动 Jupyter Notebook 后,你会看到两个主要界面:文件浏览器界面和 Notebook 编辑器界面。
4.1 文件浏览器界面 (Dashboard)
这是 Jupyter Notebook 的起始页,它展示了运行 Notebook 服务器所在目录的文件和文件夹。
- 功能:
- 导航文件系统: 你可以在此界面中浏览服务器启动目录下的文件结构。
- 创建新文件: 点击右上角的 “New” 按钮,可以选择创建新的 Python 3 Notebook(或其他内核的 Notebook)、文本文件、文件夹或终端。
- 上传文件: 点击右上角的 “Upload” 按钮,可以将本地文件上传到当前目录。
- 重命名/复制/移动/删除文件: 勾选文件或文件夹前的复选框,上方会出现操作按钮或在下拉菜单中选择操作。
- 查看正在运行的 Notebooks 和终端: 点击 “Running” 标签页,可以看到当前正在运行的 Notebooks 和终端,并可以选择关停它们。
- 管理 Clusters: 如果你配置了 IPython 并行计算,可以在 Clusters 标签页管理。
这个界面本质上是一个本地的文件管理器,让你方便地组织和访问你的 Notebook 文件。
4.2 Notebook 编辑器界面
当你从文件浏览器界面创建一个新的 Notebook 或打开一个已有的 .ipynb
文件时,就会进入 Notebook 编辑器界面。这是你编写代码、添加文本、查看输出的主要工作区域。
编辑器的核心组成部分包括:
- 菜单栏 (Menu Bar): 位于顶部,包含 File, Edit, View, Insert, Cell, Kernel, Widgets, Help 等菜单。
- File (文件): 新建 Notebook, 打开, 保存, 重命名, 导出 (Download as) 等。
- Edit (编辑): 剪切/复制/粘贴/删除单元格,查找替换等。
- View (视图): 切换头部/工具栏可见性,行号显示等。
- Insert (插入): 在上方或下方插入单元格。
- Cell (单元格): 运行单元格,改变单元格类型,合并/分割单元格等。这是最常用的菜单之一。
- Kernel (内核): 中断/重启/重连内核,切换内核等。当 Notebook 无响应时,重启内核是常用的解决办法。
- Widgets (部件): 与交互式控件相关。
- Help (帮助): 获取 Notebook, Python, 以及常用库的帮助文档链接。
- 工具栏 (Toolbar): 位于菜单栏下方,提供常用操作的快捷按钮。
- Save (保存): 保存 Notebook。
- Insert Cell (插入单元格): 在当前选中单元格下方插入一个新的单元格。
- Cut/Copy/Paste Cell (剪切/复制/粘贴单元格): 对选中的单元格进行操作。
- Move Cell Up/Down (上移/下移单元格): 改变单元格的顺序。
- Run (运行): 运行当前选中的单元格并选中下一个单元格(如果存在)。
- Interrupt (中断): 中断内核的执行。用于停止长时间运行或卡死的代码。
- Restart (重启): 重启内核。会清空所有内存中的变量,但不会清空单元格的代码或输出。
- Restart & Run All (重启并运行全部): 重启内核,然后从头开始运行所有单元格。常用于确保代码的顺序和依赖性正确。
- Cell Type (单元格类型): 下拉菜单,用于切换当前选中单元格的类型(Code, Markdown, Raw NBConvert)。
- Command Palette (命令面板): 键盘图标,搜索并执行所有 Jupyter 命令。
- 单元格区域 (Cell Area): Notebook 的主体区域,由一系列的单元格组成。每个单元格是独立的输入/输出块。
五、Jupyter Notebook 核心用法:单元格 (Usage)
Notebook 的核心是单元格 (Cell)。有两种主要的单元格类型:代码单元格 (Code Cells) 和 Markdown 单元格 (Markdown Cells)。
5.1 代码单元格 (Code Cells)
- 功能: 用于编写和执行编程代码。
- 用法:
- 在代码单元格中输入你的代码(例如 Python 代码)。
- 单元格左侧会有一个
In [ ]:
标记。方括号中为空表示尚未运行。 - 运行单元格:
- 点击工具栏上的 “Run” 按钮。
- 使用键盘快捷键:
Shift + Enter
(运行当前单元格并选中下一个单元格)。 - 使用键盘快捷键:
Ctrl + Enter
(运行当前单元格并保持选中)。 - 使用键盘快捷键:
Alt + Enter
(运行当前单元格并在下方插入一个新的代码单元格)。
- 输出: 代码执行结果(如
print()
函数的输出、表达式的值、错误信息等)会显示在代码单元格的下方,标记为Out [n]:
,其中n
是运行顺序的编号。 - 变量持久性: 在一个代码单元格中定义的变量和导入的模块,在同一个 Notebook 中其他后续运行的代码单元格中是可用的。Notebook 的状态由内核维护。
- 执行顺序: 单元格的执行顺序非常重要。输出的
In [n]:
和Out [n]:
中的n
反映了执行的顺序,而不是单元格在 Notebook 中的位置。
示例 (Python 代码单元格):
“`python
这是一个代码单元格
导入常用的科学计算库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
创建一个简单的数组
data = np.array([1, 3, 5, 7, 9])
print(“我的数据:”, data)
计算平均值
mean_value = np.mean(data)
print(“平均值:”, mean_value)
“`
运行这个单元格后,下方会显示:
我的数据: [1 3 5 7 9]
平均值: 5.0
5.2 Markdown 单元格 (Markdown Cells)
- 功能: 用于编写解释性文本、标题、列表、链接、图片、数学公式等,支持 Markdown 语法。
- 用法:
- 将单元格类型切换为 “Markdown”(通过工具栏下拉菜单或快捷键
Esc
进入命令模式后按M
)。 - 在单元格中输入文本,使用 Markdown 语法进行格式化。
- 运行单元格: 使用与代码单元格相同的运行方式(工具栏按钮或快捷键
Shift + Enter
,Ctrl + Enter
)。 - 渲染: 运行 Markdown 单元格会将其中的 Markdown 文本渲染成格式化的富文本。
- 编辑: 双击已渲染的 Markdown 单元格可以重新进入编辑模式。
- 将单元格类型切换为 “Markdown”(通过工具栏下拉菜单或快捷键
常用 Markdown 语法示例:
“`markdown
一级标题
二级标题
三级标题
这是一个普通段落。
这是粗体文本
这是斜体文本
- 这是一个无序列表项
-
另一个列表项
-
这是一个有序列表项
- 另一个列表项
可以使用反引号 print()
来引用代码或命令。
或者使用三个反引号创建代码块:
python
x = 10
y = 20
print(x + y)
插入图片(需要图片文件在 Notebook 目录或通过 URL 引用):
数学公式 (支持 LaTeX 语法):
行内公式:$E=mc^2$
块级公式:
$$
\int_{0}^{\infty} e^{-x^2} dx = \frac{\sqrt{\pi}}{2}
$$
“`
通过结合代码单元格和 Markdown 单元格,你可以创建一个既包含可执行代码又包含丰富解释和可视化结果的交互式文档。
5.3 原生 NBConvert 单元格 (Raw NBConvert Cells)
- 功能: 包含将 Notebook 转换为其他格式时(如 LaTeX, HTML)的原始文本,不会被 Notebook 本身处理。主要用于高级的格式控制。
- 用法: 很少直接使用,通常无需关注。
六、核心功能与操作详解 (功能与用法)
6.1 保存 Notebook
- 功能: 将当前 Notebook 的内容保存到
.ipynb
文件中。 - 用法:
- 点击工具栏最左侧的保存图标(一个软盘形状)。
- 使用快捷键
Ctrl + S
(Windows/Linux) 或Cmd + S
(macOS)。 - Jupyter Notebook 默认会进行自动保存,但手动保存是一个好习惯。
6.2 插入、删除、移动单元格
- 功能: 组织 Notebook 的结构。
- 用法:
- 插入:
- 点击工具栏上的 “+” 图标(在当前选中单元格下方插入)。
- 菜单栏 Insert -> Insert Cell Above / Insert Cell Below。
- 快捷键 (命令模式):
A
(在上方插入),B
(在下方插入)。
- 删除:
- 选中单元格,菜单栏 Edit -> Delete Cells。
- 快捷键 (命令模式): 双击
D
(即DD
)。
- 移动:
- 选中单元格,使用工具栏上的向上/向下箭头图标。
- 快捷键 (命令模式):
K
(上移),J
(下移)。
- 插入:
6.3 切换单元格类型
- 功能: 将单元格从 Code 改为 Markdown,或反之。
- 用法:
- 选中单元格,使用工具栏的下拉菜单选择类型。
- 快捷键 (命令模式):
Y
(切换到 Code),M
(切换到 Markdown),R
(切换到 Raw NBConvert)。
6.4 命令模式与编辑模式
Jupyter Notebook 的单元格有两个主要模式,理解它们对于使用快捷键非常重要:
- 编辑模式 (Edit Mode): 当你在单元格内部输入或修改内容时,单元格的边框通常是绿色的(或闪烁的光标)。此时输入的字符会直接进入单元格内容。
- 命令模式 (Command Mode): 当你选中一个单元格,但光标不在内部闪烁时,单元格的边框通常是蓝色的。此时按下的键会被识别为命令,用于对单元格本身进行操作(如插入、删除、切换类型、运行等)。
- 进入命令模式: 按
Esc
键。 - 进入编辑模式: 选中单元格后按
Enter
键,或者用鼠标双击单元格。
- 进入命令模式: 按
熟练掌握命令模式下的快捷键能极大地提高效率。
6.5 重要的键盘快捷键
掌握快捷键是高效使用 Jupyter Notebook 的关键。以下是一些最常用的快捷键(在命令模式下):
Enter
: 进入编辑模式Esc
: 进入命令模式Shift + Enter
: 运行当前单元格,选中下一个Ctrl + Enter
: 运行当前单元格Alt + Enter
: 运行当前单元格,在下方插入新单元格A
: 在上方插入新单元格B
: 在下方插入新单元格DD
: 删除当前单元格Z
: 撤销删除单元格Y
: 将当前单元格切换为 CodeM
: 将当前单元格切换为 MarkdownR
: 将当前单元格切换为 Raw NBConvertL
: 显示/隐藏行号O
: 显示/隐藏输出↑ (上箭头)
: 选中上方单元格↓ (下箭头)
: 选中下方单元格Shift + ↑
/Shift + ↓
: 选中多个相邻单元格Ctrl + Shift + -
(在编辑模式下): 在光标处分割单元格Shift + M
(在命令模式下,选中多个单元格时): 合并选中的单元格H
: 显示所有快捷键列表 (在命令模式下)
在编辑模式下,一些常用的编辑器快捷键也可用,如 Ctrl + C
, Ctrl + V
, Ctrl + A
, Ctrl + Z
, Ctrl + Y
等。
6.6 内核 (Kernel) 管理
- 功能: 内核是实际执行代码的“引擎”。每个 Notebook 都连接到一个特定的内核。内核维护着 Notebook 的状态,包括所有定义的变量和函数。
- 用法:
- 查看当前内核: 在 Notebook 编辑器右上角会显示当前使用的内核名称(默认为 Python 3)。
- 中断内核: 如果代码陷入死循环或运行过久,点击工具栏上的方形“停止”按钮,或菜单 Kernel -> Interrupt。
- 重启内核: 如果内核状态有问题(如变量混乱、无响应),点击工具栏上的圆形“刷新”按钮,或菜单 Kernel -> Restart。重启会清除所有内存中的变量。
- 重启并运行全部: 菜单 Kernel -> Restart & Run All。用于验证 Notebook 从头到尾是否能顺利运行。
- 切换内核: 菜单 Kernel -> Change kernel。如果安装了其他语言的内核,可以在此切换。
6.7 魔术命令 (Magic Commands)
- 功能: IPython(Jupyter Notebook 的 Python 内核)提供了一系列特殊的“魔术命令”,用于执行各种任务,如计时、调试、文件操作、系统命令等。
- 用法:
- 以
%
开头的是行魔术命令 (Line Magic),只作用于单行。 - 以
%%
开头的是单元格魔术命令 (Cell Magic),作用于整个单元格。
- 以
- 常用示例:
%lsmagic
: 列出所有可用的魔术命令。%timeit
: 测量单行 Python 代码的执行时间。%%timeit
: 测量整个单元格代码的执行时间。%matplotlib inline
: 在 Notebook 中直接显示 Matplotlib 图表(而不是弹出独立窗口)。%pwd
: 显示当前工作目录。%ls
或%cd
: 执行系统命令(如列出文件或改变目录)。%who
: 列出当前环境中定义的所有变量。%whos
: 列出当前环境中定义的所有变量及其类型和信息。
示例:
python
%timeit data = np.random.rand(1000)
python
%%timeit
data = np.random.rand(1000)
mean = np.mean(data)
魔术命令极大地扩展了 Notebook 的功能,使其不仅仅是一个简单的代码执行器。
6.8 显示丰富输出
Jupyter Notebook 不仅能显示文本输出和图表,还能直接显示 DataFrame(Pandas 表格)、图片、音频、视频等多种 Rich Output。
- 功能: 以更友好的格式展示不同类型的数据结果。
- 用法:
- DataFrame: 在代码单元格的最后一行输入 DataFrame 变量名,运行后会以美观的表格形式显示。
- 图像: 使用
IPython.display.Image
或%matplotlib inline
结合 Matplotlib/Seaborn 绘图。 - HTML/Markdown: 使用
IPython.display.HTML
或IPython.display.Markdown
函数可以直接渲染 HTML 或 Markdown 代码。
示例:
“`python
import pandas as pd
创建一个示例 DataFrame
df = pd.DataFrame({
‘列A’: [1, 2, 3, 4],
‘列B’: [‘A’, ‘B’, ‘C’, ‘D’],
‘列C’: [True, False, True, False]
})
在单元格最后一行输入 DataFrame 变量名
df
“`
运行后会直接渲染出 DataFrame 的表格。
“`python
from IPython.display import Image, display
显示一张在线图片
image_url = “https://www.python.org/static/community_logos/python-logo-master-v3-TM.png”
display(Image(url=image_url))
“`
6.9 导出和分享 Notebook
- 功能: 将
.ipynb
文件转换为其他常见的文档格式,方便分享给没有安装 Jupyter 的人。 -
用法:
- 菜单 File -> Download as。
- 常见的导出格式包括:
- HTML (.html): 静态网页,保留所有代码、输出、文本。最常用的分享格式。
- PDF (.pdf): 需要安装额外的工具(如 Pandoc 和 LaTeX 发行版),过程可能稍复杂。
- Markdown (.md): 转换为 Markdown 文件,代码块和输出会保留。
- Python (.py): 只导出代码单元格的内容为一个 Python 脚本文件。
- Notebook (.ipynb): 原始格式。
-
GitHub 渲染: 直接将
.ipynb
文件上传到 GitHub 仓库,GitHub 会自动将其渲染为可读的网页。
七、使用 Notebook 的最佳实践 (Usage Tips)
- 利用 Markdown 讲故事: 不要只把 Notebook 当作代码草稿本。用 Markdown 详细解释你的思考过程、数据来源、分析步骤、遇到的问题和结论。一个好的 Notebook 应该是一个完整的数据故事。
- 保持单元格简短: 将复杂的逻辑分解到多个小单元格中。这提高了代码的可读性和可测试性,也方便逐块运行和调试。
- 频繁保存: 虽然有自动保存,但手动保存能确保不会丢失工作。
- 使用快捷键: 花时间学习并使用常用的键盘快捷键,能显著提升你的工作效率。
- 定期重启内核并运行全部: 在完成一个阶段的工作后,尝试重启内核并从头运行所有单元格,确保你的代码没有隐藏的执行顺序依赖问题。
- 管理环境: 如果使用 Anaconda/Miniconda,为不同的项目创建独立的 conda 环境,避免库版本冲突。
- 清晰的命名: 文件名和变量名应该具有描述性。
- 适度评论: 在代码单元格中使用
#
进行注释,解释代码的意图,而不是简单重复代码本身。 - 利用魔术命令: 熟悉并利用
%
和%%
魔术命令进行性能测试、调试等。
八、总结
Jupyter Notebook 以其交互性、强大的文档化能力和友好的用户界面,已经成为现代数据科学和研究工作流程中不可或缺的一部分。本文详细介绍了 Jupyter Notebook 的核心功能、从安装到启动、界面组成、以及最重要的单元格使用方法(包括代码、Markdown)、快捷键、内核管理和魔术命令。
掌握 Jupyter Notebook 的基本功能和用法,将极大地提升你在数据探索、代码原型开发、结果演示和知识分享方面的效率。从现在开始,尝试在 Jupyter Notebook 中进行你的下一个项目吧!通过不断的实践,你将越来越熟练,并发现它更多的强大之处。