Python Notebook 入门指南:交互式计算的强大世界
1. 欢迎来到交互式计算的世界:什么是 Python Notebook?
如果你是Python编程的初学者,或者正在从事数据分析、科学计算、机器学习等领域的工作,那么Python Notebook很可能会成为你不可或缺的工具。简单来说,Python Notebook是一种集代码、代码输出(包括图表、表格等)、格式化文本(如Markdown)、数学公式和多媒体内容于一体的交互式计算环境。
想象一下,你不再需要在一个纯文本编辑器中编写代码,然后在另一个终端窗口中运行并查看结果。Notebook将这一切整合在一个统一的文档中。你可以在一个地方看到你的代码、代码运行后的即时输出(比如变量的值、错误信息、生成的图表),以及你为解释代码或结果而添加的文字说明。这种模式极大地提高了工作效率,尤其是在探索性分析、教学演示和结果分享方面。
Python Notebook最著名的实现是 Jupyter Notebook 和其下一代产品 JupyterLab。近年来,基于云的 Google Colaboratory (Colab) 也变得非常流行,它提供了免费的计算资源(包括GPU/TPU)。本指南将主要以Jupyter Notebook/Lab为例,并简要介绍Colab。
2. 为什么使用 Python Notebook?
与传统的脚本编程方式相比,Notebook提供了许多独特的优势:
- 交互性与迭代性强: 你可以编写一小段代码,立即运行它,查看结果,然后根据结果修改代码或继续下一步。这对于数据探索和算法调试特别方便。
- 可视化: Notebook可以直接在输出区域显示图表、图片等可视化结果,无需额外保存文件再打开。
- 文档与代码结合: 你可以使用Markdown单元格编写详细的解释、背景信息、分析过程或结论,将代码与文档完美地结合起来,形成一个叙述性的分析报告或教程。
- 易于分享: 一个Notebook文件(
.ipynb
)本身就是一个完整的文档,包含了代码、输出和文本。你可以轻松地将其分享给他人,他们可以在自己的Notebook环境中打开并重现你的工作流程。GitHub等平台也支持直接渲染Notebook文件。 - 支持多种语言: 虽然本指南专注于Python,但Jupyter平台支持多种编程语言(通过不同的“内核”),如R、Julia、Scala等。
- 逐步执行: 代码被分成独立的“单元格”执行。你可以按任意顺序运行单元格,这使得你可以专注于代码的特定部分,或者在分析过程中快速回溯和修改。
总之,Notebook是一个强大的工具,它改变了开发者和数据科学家进行实验、学习、教学和沟通的方式。
3. 核心概念:理解 Notebook 的基本组成
在使用Notebook之前,理解几个核心概念非常重要:
- 单元格 (Cell): Notebook由一系列的单元格组成。主要的单元格类型有两种:
- 代码单元格 (Code Cell): 用于编写和执行代码。你可以在这里写Python(或其他语言)代码。运行代码单元格后,其输出(包括打印内容、变量值、错误信息、图表等)会直接显示在单元格下方。
- Markdown 单元格 (Markdown Cell): 用于编写格式化文本、说明、标题、列表、链接、图片等。Markdown是一种轻量级的标记语言,易于学习和使用。运行Markdown单元格后,它会被渲染成漂亮的格式化文本。
- 内核 (Kernel): 内核是实际执行代码的“引擎”。当你启动一个Notebook时,会关联一个特定的内核(例如Python 3内核)。这个内核会运行你提交的代码单元格,并将其输出返回给Notebook界面显示。一个Notebook会与一个正在运行的内核实例连接,这个内核会维护变量和环境的状态。这意味着你在一个单元格中定义的变量,可以在后续的单元格中访问。
- 执行状态 (Execution State): 内核维护着当前的执行状态。当你运行代码单元格时,其中的代码会在内核的当前环境中执行。变量、函数、导入的模块等都会保留在内核的内存中,直到内核被关闭或重启。单元格左侧的
In [ ]:
标记表示单元格的执行顺序和状态。In [*]:
表示正在执行中;In [数字]:
表示执行完毕,数字表示执行顺序;In [ ]:
表示尚未执行。
理解这些概念有助于你更有效地使用Notebook,并理解为什么有时你需要按顺序运行单元格,或者在遇到问题时尝试重启内核。
4. 如何开始:安装与启动 Jupyter Notebook/Lab
入门Jupyter Notebook/Lab通常有两种主要方式:
方法一:通过 Anaconda 或 Miniconda 安装 (推荐)
Anaconda和Miniconda是流行的Python发行版,它们不仅包含了Python解释器,还预装了许多常用的科学计算库(如NumPy、Pandas、Matplotlib等)以及Jupyter Notebook/Lab。这使得安装和管理库变得非常方便。
-
下载并安装 Anaconda 或 Miniconda:
- 访问 Anaconda 官网 (https://www.anaconda.com/products/individual) 或 Miniconda 官网 (https://docs.conda.io/en/latest/miniconda.html)。
- 选择适合你操作系统的安装包并下载。推荐下载Python 3版本。
- 运行安装程序,按照提示进行安装。在安装过程中,确保勾选“Add Anaconda to my PATH environment variable”或类似选项(如果安装程序提供此选项)。如果安装程序不提供此选项,你可能需要在安装后手动配置环境变量,但通常安装程序会处理好。
-
验证安装: 打开命令行终端(Windows用户可以使用Anaconda Prompt,Mac/Linux用户可以直接使用终端)。输入以下命令并按回车:
bash
conda --version
python --version
jupyter notebook --version
如果这些命令都能显示版本信息,说明安装成功。 -
启动 Jupyter Notebook: 在命令行终端中,导航到你想创建或存放Notebook文件的目录(使用
cd
命令)。然后输入以下命令:
bash
jupyter notebook
这会自动在你的默认网页浏览器中打开一个Jupyter Notebook的主界面。这个界面会显示当前目录下的文件和文件夹。 -
启动 JupyterLab (推荐使用): JupyterLab是Jupyter Notebook的升级版本,提供了更灵活的界面布局(支持多窗口、文件浏览器、终端等集成在一个界面中)。如果你安装了Anaconda/Miniconda,通常也包含了JupyterLab。启动命令如下:
bash
jupyter lab
同样,这会在浏览器中打开JupyterLab界面。推荐初学者直接从JupyterLab开始,因为它功能更强大且是未来的趋势。
方法二:通过 pip 安装 (适用于已安装Python的用户)
如果你已经安装了Python,并且熟悉使用pip进行包管理,可以通过pip单独安装jupyter包。
-
安装 Jupyter Notebook/Lab: 打开命令行终端,输入以下命令:
bash
pip install notebook jupyterlab
这条命令会安装Jupyter Notebook和JupyterLab。你也可以选择只安装其中一个 (pip install notebook
或pip install jupyterlab
)。 -
启动 Jupyter Notebook/Lab: 同样,导航到目标目录,然后在终端输入
jupyter notebook
或jupyter lab
命令。
提示: 无论使用哪种方法,启动Notebook/Lab后,终端窗口不要关闭,因为它是运行内核的后台进程。关闭终端窗口会停止Notebook/Lab服务。
5. 使用 Google Colaboratory (Colab)
如果你不想在本地安装任何东西,或者需要免费的GPU/TPU资源,Google Colab是一个绝佳的选择。
- 访问 Colab: 打开浏览器,访问 https://colab.research.google.com/。你需要一个Google账号登录。
- 创建新 Notebook: 登录后,你会看到一个欢迎界面。点击“新建笔记本” (New notebook)。
- 使用界面: Colab的界面与Jupyter Notebook/Lab非常相似,你可以在其中创建、编辑和运行代码单元格及文本单元格。
- 连接到运行时: 默认情况下,Colab会连接到一个标准的CPU运行时。如果你需要GPU或TPU,可以点击菜单栏的“运行时” -> “更改运行时类型”,然后选择GPU或TPU。
- 上传/保存文件: 你可以将本地的Notebook文件上传到Colab,也可以将Colab中的Notebook保存到Google Drive或下载到本地。Colab也提供了左侧的文件浏览器面板,可以方便地上传和管理数据文件。
Colab的优点是零配置、免费资源;缺点是依赖网络、文件管理相对不便(需要上传下载或使用Google Drive)、免费资源有限制。对于学习和实验来说,Colab是一个非常方便的工具。
6. 初探界面与基本操作 (以 JupyterLab 为例)
启动JupyterLab后,你会在浏览器中看到一个复杂的界面。别担心,我们来分解它:
- 左侧面板 (Left Sidebar): 通常包含文件浏览器、运行中的终端和内核列表、以及其他扩展工具。文件浏览器是你导航文件和打开Notebook的地方。
- 主工作区 (Main Work Area): 这是你打开的Notebook、终端或文本文件所在的区域。你可以通过拖拽来重新排列或分割区域。
- 菜单栏 (Menu Bar): 位于顶部,提供了各种操作,如文件操作、编辑、运行、内核控制等。
- 工具栏 (Toolbar): 位于Notebook顶部,提供常用功能的快捷按钮(如保存、插入单元格、运行单元格、中断内核等)。
基本操作:
- 创建新 Notebook: 在文件浏览器中导航到目标目录,点击左侧面板顶部或菜单栏的“文件” -> “新建” -> “笔记本”,然后在弹出的窗口中选择“Python 3”(或其他你安装的内核)。一个新的Notebook会在主工作区打开。
- 切换单元格类型: 新创建的单元格默认为代码单元格。你可以选中单元格,然后在工具栏的下拉菜单中选择“Code”(代码)或“Markdown”来切换类型。
- 编写和运行代码单元格:
- 点击代码单元格内部,开始输入Python代码。
- 输入完毕后,有几种方式运行单元格:
- 点击工具栏上的“运行选中单元格”按钮 (▶)。
- 使用快捷键
Shift + Enter
:运行当前单元格,并在下方插入一个新的代码单元格(如果当前不是最后一个单元格,则选择下一个单元格)。 - 使用快捷键
Ctrl + Enter
(或Cmd + Enter
on Mac):只运行当前单元格,不移动焦点。 - 使用快捷键
Alt + Enter
(或Option + Enter
on Mac):运行当前单元格,并在下方强制插入一个新的代码单元格。
- 代码的输出会显示在单元格下方。
- 编写和渲染 Markdown 单元格:
- 将单元格类型切换为Markdown。
- 输入Markdown文本(如
# 这是一个标题
,**粗体文字**
,- 列表项
)。 - 运行Markdown单元格(同样使用运行按钮或快捷键
Shift + Enter
)。Markdown会被渲染成格式化文本。双击已渲染的Markdown单元格可以重新进入编辑模式。
- 添加、删除、移动单元格:
- 添加: 选中一个单元格,点击工具栏上的“+”按钮在下方插入新单元格。也可以在菜单栏选择“插入” -> “在下方插入单元格”或“在上方插入单元格”。
- 删除: 选中一个单元格,点击工具栏上的剪刀图标。
- 移动: 选中一个单元格,点击工具栏上的向上或向下箭头按钮。
- 保存 Notebook: 点击工具栏上的保存图标(软盘状),或使用快捷键
Ctrl + S
(或Cmd + S
),或通过菜单栏“文件” -> “保存笔记本”。Notebook文件以.ipynb
为扩展名。 - 中断和重启内核:
- 如果代码陷入死循环或运行时间过长,可以点击工具栏上的停止图标 (■) 来中断内核执行。
- 如果内核出现问题(比如变量状态混乱),可以点击工具栏上的刷新图标 (↺) 来重启内核。重启内核会清除所有变量和执行状态,你需要重新运行必要的单元格来恢复环境。菜单栏“内核”下有更多选项(如重启并清除输出)。
7. 在 Notebook 中编写和运行 Python 代码
Notebook的最大用途就是运行Python代码。以下是一些基本示例,展示了如何在代码单元格中工作:
示例 1:基本输出
“`python
这是一个代码单元格
print(“Hello, Notebook!”)
x = 10
y = 20
z = x + y
print(f”The sum of {x} and {y} is {z}”)
“`
运行这个单元格,你将在下方看到两行输出。
示例 2:变量和多单元格执行
你在一个单元格中定义的变量可以在后续的单元格中访问,前提是你按顺序运行了这些单元格,并且内核没有被重启。
单元格 1:
python
a = 5
b = 3
运行单元格 1。没有输出,但变量 a
和 b
已经在内核中定义了。
单元格 2:
“`python
访问上一个单元格中定义的变量
result = a * b
print(f”The product is: {result}”)
``
The product is: 15`。
运行单元格 2,你将看到输出
示例 3:显示表达式的值
在代码单元格中,如果一行以一个变量或表达式结束,Notebook会自动显示其值(无需使用 print()
)。这是Notebook的一个方便特性,常用于快速查看变量内容。
“`python
my_list = [1, 2, 3, 4, 5]
my_list # 这一行会显示列表的内容
my_dict = {‘a’: 1, ‘b’: 2}
my_dict # 这一行会显示字典的内容
只有最后一行的表达式会被自动显示
如果有多行表达式,只有最后一个会显示
1 + 1
2 * 2
“hello” + ” world”
``
[1, 2, 3, 4, 5]
运行这个单元格,你会在下方看到,
{‘a’: 1, ‘b’: 2},以及
“hello world”` 的输出。
示例 4:导入库并使用
导入常用的Python库(如pandas
用于数据处理,matplotlib
用于绘图,numpy
用于数值计算)是使用Notebook的常见场景。
“`python
导入库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
创建一个简单的数据集
data = {‘Category’: [‘A’, ‘B’, ‘C’, ‘D’],
‘Value’: [10, 25, 15, 30]}
df = pd.DataFrame(data)
显示 DataFrame
df
“`
运行这个单元格,你会看到一个格式化漂亮的DataFrame表格输出。
示例 5:绘制图表
Notebook可以直接在输出区域嵌入Matplotlib等库生成的图表。
“`python
使用 Matplotlib 绘制柱状图
categories = df[‘Category’]
values = df[‘Value’]
plt.figure(figsize=(6, 4)) # 可选:设置图表大小
plt.bar(categories, values, color=’skyblue’)
plt.xlabel(‘Category’)
plt.ylabel(‘Value’)
plt.title(‘Value by Category’)
plt.show() # 显示图表
``
plt.show()
运行这个单元格,你会在下方看到生成的柱状图。在Jupyter环境中,通常不是必须的,图表会自动显示,但在一些其他环境中(如脚本中)则需要。在Notebook中使用
%matplotlib inline或
%matplotlib notebook` magic命令可以控制图表的显示方式。
8. 使用 Markdown 单元格添加说明和文档
Markdown单元格是编写解释、步骤和结论的关键。学习一些基本的Markdown语法会让你的Notebook更具可读性。
以下是一些常用的Markdown语法示例:
- 标题: 使用
#
符号,# 的数量表示标题级别(1-6级)。
markdown
# 一级标题
## 二级标题
### 三级标题 - 段落: Просто输入文本即可形成段落。
- 换行: 在行尾输入两个或更多空格,然后按回车。
- 强调: 使用
*
或_
表示斜体,使用**
或__
表示粗体。
markdown
*斜体* 或 _斜体_
**粗体** 或 __粗体__
***粗体斜体*** - 列表: 使用
-
、*
或+
创建无序列表;使用数字后跟点 (1.
) 创建有序列表。
“`markdown- 项目 1
- 项目 2
- 子项目 A
- 第一项
- 第二项
“`
- 代码块:
- 行内代码: 使用反引号包围 (
``
)。例如:print("Hello")
。 - 多行代码块: 使用三个反引号包围,并在开始的反引号后指定语言名称(可选)。
markdown
python
def my_function():
print(“This is a code block”)
- 行内代码: 使用反引号包围 (
- 链接:
[链接文字](链接地址)
。例如:[访问百度](https://www.baidu.com)
。 - 图片:

。图片地址可以是本地路径或网络URL。
markdown
 - 水平线: 使用三个或更多
*
、-
或_
在一行中。
markdown
--- - 数学公式: Jupyter Notebook 支持 LaTeX 语法来书写数学公式,使用
$
包围行内公式,使用$$
包围独立公式块。
markdown
行内公式:$E=mc^2$
独立公式块:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
通过结合代码单元格和Markdown单元格,你可以创建一个既包含可执行代码和结果,又包含清晰解释和叙述的文档,这对于数据分析报告、教程和演示非常有价值。
9. Magic 命令:Notebook 的特殊功能
Jupyter Notebook 提供了一组特殊的命令,称为“Magic Commands”,它们以 %
或 %%
开头,用于执行一些与Python本身无关的操作,例如控制Notebook行为、测量代码执行时间、与操作系统交互等。
- 行 Magic 命令 (
%
): 作用于单行。 - 单元格 Magic 命令 (
%%
): 作用于整个单元格。
一些常用的 Magic 命令:
%matplotlib inline
: 在Notebook中直接显示Matplotlib图表(而不是弹出新窗口)。这是数据可视化中非常常用的命令。%timeit
: 测量单行Python代码的执行时间。
python
%timeit sum(range(1000))%%timeit
: 测量整个单元格代码的执行时间。
python
%%timeit
total = 0
for i in range(1000):
total += i%lsmagic
: 列出所有可用的Magic命令。%pwd
: 显示当前工作目录。%cd directory_path
: 改变当前工作目录。%ls
: 列出当前目录下的文件(在Windows上相当于dir
)。%run script.py
: 运行一个外部Python脚本。%who
/%whos
: 列出当前内核中定义的所有变量。
Magic 命令极大地增强了Notebook的功能和便利性。
10. 共享你的 Notebook
共享Notebook是协作和展示工作成果的重要部分。Notebook文件(.ipynb
)本身就是一种共享格式。
- 直接共享
.ipynb
文件: 你可以将.ipynb
文件发送给他人。他们可以在自己的Jupyter环境或Colab中打开它。需要注意的是,直接分享.ipynb
文件通常 不包含代码运行的结果,除非你在保存时选择了包含输出。接收者需要自己运行代码才能看到结果。 - 导出为其他格式: Jupyter提供了将Notebook导出为多种格式的功能(通过菜单栏“文件” -> “导出” 或“下载为”):
- HTML (.html): 导出为静态网页,包含了代码、输出和Markdown。任何人都可以用浏览器打开,无需Jupyter环境。这是一种常用的分享方式,因为它保留了所有内容,但不支持交互。
- PDF (.pdf): 导出为PDF文档。需要安装额外的库(如
nbconvert
和 LaTeX)。方便打印和创建报告。 - Markdown (.md): 导出为Markdown文件。代码会以代码块形式包含在内。
- Python Script (.py): 只导出代码单元格的内容,忽略Markdown单元格。方便将Notebook中的代码整理成可执行脚本。
- 使用 GitHub: GitHub原生支持渲染
.ipynb
文件。将.ipynb
文件上传到GitHub仓库后,打开文件即可在网页上看到渲染后的Notebook内容(代码、输出、Markdown)。这是分享代码和结果的一种非常便捷的方式。 - 使用 nbviewer: 如果你的Notebook托管在GitHub或其他公共URL上,可以使用 nbviewer (https://nbviewer.org/) 服务来生成一个漂亮的、易于查看的网页版本。
- Google Colab 的分享功能: Colab与Google Drive集成,可以直接通过Google Drive的分享功能将Notebook分享给特定的人或公开分享。
选择哪种分享方式取决于你的需求:如果接收者需要交互和修改,分享 .ipynb
文件或使用Colab;如果只是展示结果,HTML、PDF或GitHub/nbviewer是更好的选择。
11. 最佳实践与进阶提示
掌握基本操作后,遵循一些最佳实践可以让你的Notebook更加高效、整洁和易于理解:
- 保持单元格简洁: 每个代码单元格尽量只完成一个逻辑步骤或一小段相关功能。这有助于逐步执行和调试。
- 多用 Markdown: 利用Markdown单元格详细解释每一步的目的、数据来源、关键结果、遇到的问题或未来的改进方向。让Notebook像一篇带有可执行代码的叙述性文档。
- 按顺序编写和运行: 虽然Notebook允许乱序执行,但这可能导致状态混乱。理想情况下,你的Notebook应该可以从头到尾按顺序运行并得到正确的结果。在分享或完成工作前,尝试“内核” -> “重启并运行全部”来验证 Notebook 的可重复性。
- 管理依赖: 如果你在本地使用Jupyter,考虑使用虚拟环境(如
venv
或conda env
)来隔离不同项目的依赖库,避免版本冲突。在Notebook开头导入所有需要的库是一个好习惯。 - 保存输出: 如果你希望分享的
.ipynb
文件包含运行结果(尤其是一些重要的图表或表格),请确保在保存之前运行了相应的单元格。 - 清理不必要的输出: 有时代码单元格会产生大量输出。在分享前,可以考虑清除不必要的输出,让Notebook更清爽(菜单栏“单元格” -> “所有输出” -> “清除”)。
- 使用快捷键: 掌握常用的快捷键(如
Shift + Enter
运行,Esc
进入命令模式,然后A
在上方插入单元格,B
在下方插入,D, D
删除单元格,M
切换到Markdown,Y
切换到代码)可以极大地提高效率。在命令模式下按H
可以查看所有快捷键。 - 探索 JupyterLab 扩展: JupyterLab拥有丰富的扩展生态系统,可以添加各种功能,如变量查看器、目录生成器、Git集成等。
12. Notebook 的常见应用场景
Python Notebook 在多个领域都发挥着重要作用:
- 数据科学与分析: 这是Notebook最经典的用例。数据科学家使用Notebook进行数据清洗、转换、探索性数据分析 (EDA)、构建可视化图表、运行统计测试等。Pandas、NumPy、Matplotlib、Seaborn 是常用的配套库。
- 机器学习与深度学习: Notebook 是构建、训练和评估机器学习模型的理想环境。你可以在一个地方看到模型的代码、训练过程的日志、评估指标和结果可视化。Scikit-learn, TensorFlow, PyTorch 等库与 Notebook 结合紧密。
- 教学与学习: Notebook 提供了一个直观的环境来演示代码、解释概念和布置练习。学生可以直接在Notebook中修改代码并查看效果。
- 科学研究: 科研人员使用Notebook来记录实验步骤、运行模拟、分析实验数据并生成报告。其可重复性和文档结合的特性对于科研工作的透明度和共享至关重要。
- 原型开发: Notebook 是快速验证想法和小规模原型开发的便捷工具。
- 报告与演示: 结合代码、图表和文本,Notebook 本身就可以作为一个生动的报告或演示文稿。
13. 总结
Python Notebook(特别是Jupyter Notebook/Lab和Google Colab)是现代Python编程和数据科学不可或缺的工具。它通过将代码、输出和文档集成在一个交互式环境中,极大地提高了工作效率和沟通能力。
本指南带你了解了Notebook的核心概念、安装启动方法、基本界面操作、如何在其中编写代码和Markdown、常用的Magic命令,以及如何分享你的工作。
入门Python Notebook并不难,最重要的是动手实践。现在就打开JupyterLab或Colab,创建一个新的Notebook,尝试运行一些简单的Python代码,写一些Markdown说明,加载一个小型数据集并进行可视化。在实践中,你会越来越体会到Notebook的便利与强大。
祝你在Python Notebook的交互式世界中探索愉快!