Jupyter 是什么?—— 交互式计算与文档的新范式

Jupyter Notebook 和 JupyterLab 是一个开源的 Web 应用程序,它允许您创建和分享包含实时代码、方程、可视化和叙述性文本的文档。它不仅仅是一个代码编辑器,更是一个强大的交互式计算环境,能够将编程、数据探索、结果展示和报告编写无缝地整合在一起。

  • 核心组成: Jupyter 生态系统主要由以下几部分构成:

    • Jupyter Notebook/Lab 应用程序: 提供基于浏览器的用户界面,用于编辑和运行 Notebook 文档。
    • 内核 (Kernels): 负责执行代码的后端程序。Jupyter 支持多种编程语言的内核,最常用的是 IPython 内核(用于 Python),但也支持 R、Julia、Scala 等数百种语言。
    • Notebook 文档 (.ipynb): 一种 JSON 格式的文档,包含了所有的输入和输出代码、Markdown 文本、图像等。
  • 独特之处: 它以“单元格”(Cell)为基本单位,每个单元格可以包含代码、Markdown 文本、原始文本或 HTML 内容。用户可以逐个执行代码单元格,并立即看到结果,极大地提升了开发和数据分析的效率。

为什么选择 Jupyter?—— 提高效率与增强协作的利器

Jupyter 凭借其独特的优势,在数据科学、机器学习、教学和研究等领域获得了广泛应用。

  • 交互性与即时反馈: 您可以编写一小段代码,立即执行并查看结果,这对于探索性数据分析、模型调试和算法验证至关重要。无需重新运行整个脚本,节省了大量时间。
  • 集成代码、文本与可视化: Jupyter Notebook 是一种“可执行的叙事文档”。它允许您将代码、运行结果、解释性文字、图表和图片整合在同一个文档中。这使得您的分析过程清晰可见,易于理解。
  • 多语言支持: 凭借其内核架构,Jupyter 不仅限于 Python,还能支持 R、Julia 等多种流行的数据科学语言,提供了一个统一的交互式开发平台。
  • 易于分享与复现: Notebook 文件(.ipynb)可以轻松地分享给同事、学生或研究伙伴。接收者只需有 Jupyter 环境,就能完全复现您的代码和结果,大大促进了协作和知识传播。
  • 教育与演示的理想工具: 其交互性和文档集成能力使其成为教学编程、数据科学概念和展示项目成果的绝佳平台。

Jupyter 哪里获取与运行?—— 本地、服务器与云端选项

Jupyter 的部署和运行方式非常灵活,可以适应各种使用场景。

获取与安装

  1. 推荐方式:使用 Anaconda 安装 (简单且功能全面)

    Anaconda 是一个流行的 Python 和 R 数据科学平台,它预装了 Jupyter 以及许多常用的数据科学库(如 NumPy, Pandas, Matplotlib, Scikit-learn 等)。对于初学者,这是最推荐的安装方式。

    1. 下载: 访问 Anaconda 官方网站 (https://www.anaconda.com/products/distribution) 下载适用于您操作系统的最新版本。
    2. 安装: 按照安装向导的指示进行安装。通常,只需一路“下一步”即可。请确保勾选“Add Anaconda to my PATH environment variable”选项(如果系统提示)。
  2. Python 包管理器 Pip 安装 (适用于已有 Python 环境)

    如果您已经安装了 Python,并且希望轻量级安装 Jupyter,可以使用 pip。

    1. 打开终端或命令行:
    2. 安装 Jupyter Notebook: 执行命令 pip install notebook
    3. 安装 JupyterLab (可选,但推荐): 执行命令 pip install jupyterlab

运行环境

  • 本地计算机: 这是最常见的运行方式。安装完成后,您可以在自己的电脑上启动 Jupyter Notebook 或 JupyterLab,并通过浏览器访问。
  • 远程服务器: 对于需要更强大计算资源(如 GPU)或团队协作的场景,Jupyter 可以在远程服务器上运行。用户通过 SSH 连接到服务器,并在服务器上启动 Jupyter 服务,然后通过本地浏览器访问服务器的 IP 地址和端口。
  • 云端平台: 许多云服务提供商(如 Google Colab, AWS SageMaker, Azure Machine Learning, Kaggle Kernels)都内置或支持 Jupyter 环境,提供预配置的计算资源和便利的协作功能,非常适合快速原型开发和共享。

    注意: 虽然 Jupter 本身是免费开源的,但在云端平台使用时,您可能需要支付计算资源的使用费用。

Jupyter 如何高效使用?—— 从启动到高级操作

启动 Jupyter Notebook 或 JupyterLab

  1. 打开终端或命令行界面:
  2. 切换到您希望存放 Notebook 文件的目录: 使用 cd /your/directory/path 命令。在这个目录下启动 Jupyter,可以方便地管理您的项目文件。
  3. 启动命令:

    • 启动 Jupyter Notebook: 输入 jupyter notebook 并按回车。
    • 启动 JupyterLab: 输入 jupyter lab 并按回车。
  4. 浏览器自动打开: 命令执行后,您的默认网页浏览器将自动打开一个新标签页,显示 Jupyter 的文件管理界面。如果浏览器未自动打开,请复制命令行中显示的 URL (通常是 http://localhost:8888/...) 并手动粘贴到浏览器中。

Jupyter 界面概览与基础操作 (以 JupyterLab 为例)

JupyterLab 界面布局

  • 文件浏览器 (左侧边栏): 显示当前工作目录下的文件和文件夹,可以进行创建、删除、重命名、上传等操作。
  • 主工作区: 打开的 Notebook、终端、文本文件等会以标签页的形式显示在这里。
  • 菜单栏: 顶部提供“文件”、“编辑”、“视图”、“运行”等标准菜单,包含各种操作。
  • 工具栏: 常用操作的快捷按钮,如保存、插入单元格、运行单元格等。

创建与打开 Notebook

  1. 创建新 Notebook: 在文件浏览器中点击“+”号(启动器),选择“Python 3”(或其他您需要的内核)下的“Notebook”图标。或者通过“文件” -> “新建” -> “Notebook”来创建。
  2. 打开现有 Notebook: 在文件浏览器中双击 .ipynb 文件即可。

单元格类型与执行

Jupyter Notebook 的核心是单元格。主要有两种类型的单元格:

  • 代码 (Code) 单元格: 用于编写和执行代码。

    • 编写代码: 在单元格中输入您的 Python(或其他内核语言)代码。
    • 执行代码:

      • 点击工具栏上的“运行”按钮(向右的三角形)。
      • 使用快捷键 Shift + Enter
      • 使用快捷键 Ctrl + Enter(只运行当前单元格,不移动)。
      • 使用快捷键 Alt + Enter(运行当前单元格并在下方插入新单元格)。
    • 输出: 代码执行结果会直接显示在代码单元格的下方。
  • Markdown 单元格: 用于编写解释性文本、标题、列表、链接、图片等,支持标准的 Markdown 语法。

    • 切换类型: 选择单元格后,可以通过工具栏的下拉菜单将单元格类型从“代码”切换到“Markdown”。
    • 编写文本: 在单元格中输入 Markdown 格式的文本。
    • 渲染: 执行 Markdown 单元格后,它会渲染成格式化的文本。双击已渲染的 Markdown 单元格可以重新进入编辑模式。
  • Raw NBConvert 单元格 (较少用): 包含未被 Notebook 渲染的内容,通常用于更高级的文档转换需求。

保存 Notebook

Notebook 会自动保存,但您也可以手动保存:

  • 点击工具栏上的保存图标(软盘状)。
  • 使用快捷键 Ctrl + S
  • 通过“文件” -> “保存 Notebook”菜单。

编辑模式与命令模式

Notebook 单元格有两种主要模式:

  • 编辑模式 (Edit Mode): 当您点击单元格并看到一个光标时,表示处于编辑模式,可以输入文本或代码。单元格左侧通常会显示绿色边框(或高亮显示)。
  • 命令模式 (Command Mode):Esc 键退出编辑模式,进入命令模式。此时,单元格左侧通常会显示蓝色边框(或非高亮显示)。在命令模式下,您可以使用快捷键执行复制、粘贴、删除单元格等操作,而不会输入内容到单元格中。

常用快捷键 (在命令模式下)

掌握这些快捷键能大幅提升效率:

  • A:在上方插入新单元格。
  • B:在下方插入新单元格。
  • D, D (按两次):删除选定单元格。
  • Y:将选定单元格类型切换为代码。
  • M:将选定单元格类型切换为 Markdown。
  • C:复制选定单元格。
  • V:粘贴单元格到下方。
  • X:剪切选定单元格。
  • Z:撤销删除单元格。
  • Shift + L:显示所有行号(在代码单元格中)。
  • Shift + M:合并选定的单元格。
  • Ctrl + Shift + -:在光标处拆分单元格。

Jupyter 核心功能与高级技巧

Markdown 语法详解

在 Markdown 单元格中,您可以利用丰富的 Markdown 语法来格式化文本,使其更具可读性和表现力。

  • 标题: 使用 ####### 表示不同级别的标题。

    # 一级标题
    ## 二级标题
    ### 三级标题
  • 强调:

    • 粗体:**粗体文字**__粗体文字__
    • 斜体:*斜体文字*_斜体文字_
    • 粗斜体:***粗斜体文字***
  • 列表:

    • 无序列表:使用 *, +, 或 -
      * 项目一
      * 项目二
          * 子项目二一
    • 有序列表:使用数字加点。
      1. 第一项
      2. 第二项
          1. 子项二一
  • 代码块:

    • 行内代码:使用反引号 `print('Hello')`
    • 多行代码块:使用三个反引号包围。
      python
      def greet(name):
          return f"Hello, {name}!"
      print(greet("Jupyter"))
      
  • 链接: [链接文字](URL),例如 [访问 Jupyter 官网](https://jupyter.org)
  • 图片: ![图片说明](图片路径或URL),例如 ![Jupyter Logo](https://jupyter.org/assets/main-logo.svg)。您也可以将图片文件拖放到 Notebook 单元格中,Jupyter 会自动生成对应的 Markdown 语法并上传图片。
  • 引用块: 使用 >

    > 这是一个引用块。
    > 可以包含多行文字。
  • 表格:

    | 列头1 | 列头2 | 列头3 |
    |-------|-------|-------|
    | 数据1 | 数据2 | 数据3 |
    | 数据4 | 数据5 | 数据6 |
  • 数学公式 (LaTeX): 使用 $公式$ 进行行内公式,使用 $$公式$$ 进行独立公式块。

    行内公式:$E=mc^2$
    独立公式块:
    $$
    \int_a^b f(x) dx
    $$

魔法命令 (Magic Commands)

Jupyter 提供了一系列特殊的命令,以百分号 (%%%) 开头,用于控制 Notebook 的行为或执行系统级操作。这些是 IPython 内核的特性,极大地增强了 Notebook 的功能。

  • 行魔法命令 (%): 作用于单行。

    • %run script.py:运行外部 Python 脚本。
    • %timeit expression:测量一行代码的执行时间。
    • %whos:列出当前作用域中所有变量的信息。
    • %matplotlib inline:在 Notebook 中显示 Matplotlib 图表(对于旧版 Jupyter 常用,新版通常默认)。
    • %pwd:显示当前工作目录。
    • %cd /path/to/directory:改变当前工作目录。
    • %load_ext extension_name:加载 IPython 扩展。
  • 单元格魔法命令 (%%): 作用于整个单元格。必须放在单元格的第一行。

    • %%timeit:测量整个单元格代码的执行时间。
    • %%bash%%sh:在单元格中执行 Bash 命令。
      %%bash
      ls -l
      echo "Hello from Bash"
    • %%writefile filename.py:将单元格内容写入到文件中。
      %%writefile my_script.py
      def hello():
          print("Hello from my_script!")
      
      hello()
    • %%html, %%latex, %%markdown:将单元格内容按指定格式渲染。
  • 获取帮助:

    • %lsmagic:列出所有可用的魔法命令。
    • %magic:显示魔法命令的详细帮助文档。
    • %command?%command??:查看特定魔法命令的用法和源代码。

内核管理

Jupyter Notebook 可以连接到不同的内核,这意味着您可以在同一个环境中处理多种语言。

  • 切换内核: 在 Notebook 界面中,通过“内核” -> “更改内核”菜单选择不同的可用内核。
  • 重启内核: 当代码执行出现问题或需要清空所有变量时,可以通过“内核” -> “重启”来重启内核。重启内核会清除所有已定义的变量和函数,但单元格中的代码不会丢失。
  • 中断内核: 如果某个单元格的代码陷入死循环或执行时间过长,可以通过“内核” -> “中断内核”来停止当前执行。

JupyterLab 终端与文件操作

JupyterLab 提供了内置的终端,让您无需离开浏览器即可执行命令行操作,例如安装库、管理文件等。

  • 打开终端: 在 JupyterLab 的启动器中点击“终端”图标,或者通过“文件” -> “新建” -> “终端”。
  • 常用终端命令:

    • 安装 Python 库:pip install library_nameconda install library_name
    • 查看文件:ls (Linux/macOS) 或 dir (Windows)。
    • 创建文件夹:mkdir folder_name
    • 删除文件:rm file_name (Linux/macOS) 或 del file_name (Windows)。
  • 上传和下载文件: 在 Jupyter 的文件浏览器中,可以使用工具栏上的“上传”按钮上传本地文件,也可以右键点击文件选择“下载”进行下载。

导出 Notebook

Jupyter Notebook 可以方便地导出为多种格式,便于分享和归档。

  • 导出为 HTML: “文件” -> “导出 Notebook 为” -> “HTML (.html)”。HTML 文件包含了所有的代码、输出和渲染后的 Markdown,可以在任何浏览器中打开。
  • 导出为 PDF: “文件” -> “导出 Notebook 为” -> “PDF (.pdf)”。需要安装额外的工具 (如 TeX)。在 JupyterLab 中,通常更推荐“导出 Notebook 为” -> “PDF (Print Preview)”,然后使用浏览器的打印功能保存为 PDF。
  • 导出为 Python 脚本: “文件” -> “导出 Notebook 为” -> “Python (.py)”。这会将所有代码单元格的内容提取到一个 Python 脚本中,不包含 Markdown 文本。
  • 导出为 Markdown: “文件” -> “导出 Notebook 为” -> “Markdown (.md)”。

使用扩展 (Extensions) 增强功能 (JupyterLab 推荐)

JupyterLab 提供了丰富的扩展生态系统,可以进一步增强其功能,例如:

  • 代码格式化: 如 Black、isort 扩展,可以自动格式化您的 Python 代码。
  • Git 集成: 允许在 JupyterLab 界面内进行 Git 版本控制操作。
  • 目录 (Table of Contents): 自动生成 Notebook 的目录,便于导航。
  • 可视化工具: 许多库(如 Plotly、Bokeh、Altair)都与 Jupyter 集成良好,提供丰富的交互式可视化。
  • 安装扩展: 在 JupyterLab 左侧边栏找到“扩展管理器”图标(拼图块),可以在这里搜索、安装和管理扩展。

如何在 Jupyter 中进行数据可视化

Jupyter 是数据可视化的理想平台。您可以使用各种 Python 库在 Notebook 中生成图表。

  • Matplotlib: Python 最基础的绘图库。

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.linspace(0, 10, 100)
    y = np.sin(x)
    
    plt.plot(x, y)
    plt.title("正弦曲线")
    plt.xlabel("X轴")
    plt.ylabel("Y轴")
    plt.grid(True)
    plt.show()
  • Seaborn: 基于 Matplotlib 的高级统计图表库。

    import seaborn as sns
    import pandas as pd
    
    data = {'Category': ['A', 'B', 'C', 'D'],
            'Value': [10, 25, 15, 30]}
    df = pd.DataFrame(data)
    
    sns.barplot(x='Category', y='Value', data=df)
    plt.title("条形图示例")
    plt.show()
  • Plotly / Bokeh (交互式可视化): 这些库可以在 Notebook 中创建交互式图表,用户可以缩放、平移、选择数据点等。

    import plotly.express as px
    
    df = px.data.iris()
    fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
    fig.show() # 在 Notebook 中显示交互式图表

Jupyter 可以完成多少工作?—— 功能广度与资源消耗

Jupyter 的功能广度令人惊叹,几乎可以涵盖从基础代码测试到复杂项目管理的整个工作流程。

  • 基础编程与脚本: 作为交互式 Python shell 的升级版,它非常适合编写和测试小型代码片段、学习新库的用法。
  • 数据清洗与转换: 结合 Pandas 等库,Jupyter 是进行数据加载、探索、清洗和预处理的理想环境。您可以逐步执行操作,即时检查数据状态。
  • 数据分析与建模: 从统计分析到机器学习模型构建,Jupyter 提供了从数据准备到模型训练、评估和结果可视化的完整工作流。
  • 科学计算与模拟: 许多科学计算库(如 NumPy, SciPy)与 Jupyter 结合,使其成为进行数值计算、信号处理、图像分析等任务的强大工具。
  • 报告与演示: 结合 Markdown 和代码输出,可以直接生成具有说服力的技术报告和演示文稿。
  • 教学与培训: 提供了一个直观、互动性强的学习平台,学生可以直接运行和修改代码,加深理解。

关于资源消耗,这取决于您的具体任务:

  • 内存 (RAM): 处理大型数据集时,Python 变量和 Notebook 内核会占用大量内存。特别是当您加载几十 GB 的数据到 Pandas DataFrame 时,内存会成为主要瓶颈。
  • CPU: 计算密集型任务(如复杂的数值运算、模型训练)会大量占用 CPU。
  • GPU: 对于深度学习模型训练,通常需要配置 GPU 加速的 Jupyter 环境,以显著缩短训练时间。
  • 存储: Notebook 文件本身通常较小,但如果您在 Notebook 中保存了大量数据文件或模型检查点,则需要足够的硬盘空间。

因此,在使用 Jupyter 时,特别是处理大数据或复杂模型时,需要根据实际需求合理配置本地机器或云环境的资源。

总结

Jupyter Notebook 和 JupyterLab 已经成为现代数据科学和交互式编程不可或缺的工具。它通过无缝集成代码、输出、文本和可视化,极大地提升了开发效率、促进了知识共享,并为探索性分析和项目演示提供了强大的平台。从简单的代码测试到复杂的机器学习项目,Jupyter 都能提供灵活且高效的解决方案。掌握其安装、基本操作以及高级功能,将使您在数据分析、科学研究和编程学习的道路上事半功倍。

jupter使用教程