Jupyter 快速指南



IPython - 简介

Jupyter 项目是一套用于交互式计算的软件产品。IPython 最初由 Fernando Perez 于 2001 年开发,作为增强的 Python 解释器。2011 年推出了基于 Web 的 IPython 终端界面,即 IPython notebook。2014 年,Jupyter 项目作为 IPython 的衍生项目启动。

Jupyter 项目下的软件包包括:

  • Jupyter notebook - 基于 Web 的 Python、Julia、R 和许多其他编程环境的界面

  • QtConsole - 基于 Qt 的 Jupyter 内核终端,类似于 IPython

  • nbviewer - 分享 Jupyter notebooks 的工具

  • JupyterLab - 所有产品的现代基于 Web 的集成界面。

Python 的标准发行版包含一个REPL(读取-求值-打印循环)环境,它以带有>>>提示符的 Python shell 的形式出现。IPython(代表交互式 Python)是 Python 的增强型交互式环境,与标准 Python shell 相比,它具有许多功能。

IPython 的功能

与标准 Python 相比,IPython 提供了更多功能,如下所示:

  • 提供强大的交互式 Python shell。

  • 作为 Jupyter notebook 和 Jupyter 项目的其他前端工具的主要内核。

  • 具有对象自省能力。自省是在运行时检查对象属性的能力。

  • 语法高亮。

  • 存储交互历史记录。

  • 关键字、变量和函数名的 Tab 自动补全。

  • 魔术命令系统,用于控制 Python 环境和执行操作系统任务。

  • 能够嵌入到其他 Python 程序中。

  • 提供对 Python 调试器的访问。

历史和发展

IPython 最初由 Fernando Perez 于 2001 年开发。其当前版本是 IPython 7.0.1,需要 Python 3.4 或更高版本。IPython 6.0 是第一个支持 Python 3 的版本。使用 Python 2.7 的用户应该使用 IPython 2.0 到 5.7 版本。

计算笔记本的概念始于 80 年代,当时 MATLAB 和 Mathematica 发布。这些交互式 shell 的 GUI 前端具有文本格式化、添加图形、表格和添加数学符号等功能。Sage notebook 也是一个基于 Web 的笔记本。

IPython 的创建者从 2005 年开始致力于 IPython shell 的 notebook 界面。IPython notebook 很快增加了对其他语言(如 R 和 Julia)的支持。在 2014 年,Perez 启动了 Jupyter 项目作为 IPython 的衍生项目,因为 IPython 项目随着 notebook 服务器和 Qt 控制台等产品的增加而变得越来越庞大。

从 IPython 4.0 开始,所有附加组件都转移到了 Jupyter 项目,并为 IPython notebook 添加了对其他语言的支持。IPython 继续专注于改进其增强的解释器功能。它还为 Jupyter notebook 前端提供主要的内核。

IPython - 安装

Anaconda Python 发行版默认包含 IPython。它可以从 Anaconda 的下载页面下载 www.anaconda.com/download/ 此链接上提供了所有主要操作系统(Windows、MacOS 和 Linux)和架构(32 位和 64 位)的二进制文件。

要在标准 Python 安装中单独安装 IPython,可以使用以下 pip 命令:

pip3 install ipython

IPython 内部使用以下软件包:

序号 IPython 依赖项和功能
1

colorama

用于从 Python 打印彩色终端文本的跨平台 API

2

jedi

Python 的自动补全工具

3

pickleshare

具有并发支持的小型“shelve”式数据存储

4

prompt_toolkit

用于在 Python 中构建强大的交互式命令行的库

5

pygments

用 Python 编写的语法高亮显示包

6

simplegeneric

简单的泛型函数

7

traitlets

Python 应用程序的配置系统。

通常,所有依赖项都会自动安装。否则,可以使用 pip 单独安装它们。

IPython - 开始

本章将解释如何开始使用 IPython。

从命令提示符启动 IPython。

在深入了解 IPython 之前,请注意,您将看到两个主要的 Python 提示符,而不是常规的>>>,如下所述:

  • In[1] 出现在任何输入表达式之前。

  • Out[1] 出现在输出出现之前。

此外,方括号中的数字会自动递增。请观察以下屏幕截图以更好地理解:

IPython Command Prompt

现在,如果您已安装 Anaconda Python 发行版,请从开始菜单打开 Anaconda 提示符。

Anaconda prompt

从 conda 提示符启动 IPython

与常规 Python 控制台相比,我们可以注意到一些区别。IPython shell 使用不同的颜色方案为不同的元素(如表达式、函数、变量等)显示语法高亮显示。

IPython shell

另一个有用的增强功能是 Tab 自动补全。我们知道每个对象在其类中都定义了一个或多个可用方法。当您在对象之前的点后按 Tab 键时,IPython 会弹出相应的方法列表。

在下面的示例中,定义了一个字符串。作为响应,将显示字符串类的各种方法。

String Class Methods

IPython 通过在对象前面加上“?”来提供任何对象的信息。它包括类的文档字符串、函数定义和构造函数详细信息。例如,要探索上面定义的字符串对象 var,请在输入提示符中输入var?。结果将显示有关它的所有信息。请观察以下屏幕截图以更好地理解:

IPython Info

魔术函数

IPython 的内置魔术函数非常强大。有两种类型的魔术函数。

  • 行魔术,其作用非常类似于 DOS 命令。
  • 单元魔术,其作用于多行代码。

我们将在后续章节中详细学习行魔术函数和单元魔术函数。

IPython - 运行和编辑 Python 脚本

在本章中,让我们了解如何运行和编辑 Python 脚本。

运行命令

您可以在输入提示符中使用run命令来运行 Python 脚本。run 命令实际上是行魔术命令,应该写成%run。但是,%automagic模式默认始终启用,因此您可以省略它。

In [1]: run hello.py
Hello IPython

编辑命令

IPython 还提供编辑魔术命令。它调用操作系统的默认编辑器。您可以通过 Windows 记事本编辑器打开它,并可以编辑脚本。保存输入后关闭它后,将显示修改后的脚本的输出。

In [2]: edit hello.py
Editing... done. Executing edited code...
Hello IPython
welcome to interactive computing

请注意,hello.py 最初只包含一个语句,编辑后又添加了一个语句。如果未向编辑命令提供文件名,则会创建一个临时文件。请观察以下显示相同的代码:

In [7]: edit
IPython will make a temporary file named:
C:\Users\acer\AppData\Local\Temp\ipython_edit_4aa4vx8f\ipython_edit_t7i6s_er.py
Editing... done. Executing edited code...
magic of IPython
Out[7]: 'print ("magic of IPython")'

IPython - 历史命令

IPython 保留当前会话的命令及其结果。我们可以通过按向上和向下键来滚动浏览以前的命令。

此外,最后三个输出对象存储在特殊变量 _、__ 和 ___ 中。history魔术命令显示当前会话中的先前命令,如下面的屏幕截图所示:

History Command

IPython - 系统命令

如果输入单元格中的语句以感叹号 (!) 开头,则将其视为底层操作系统的系统命令。例如,!ls(对于 Linux)和!dir(对于 Windows)显示当前目录的内容

Exclamation Symbol (!) Command

系统命令的输出也可以分配给 Python 变量,如下所示:

Output of system command

变量存储没有颜色的输出,并在换行符处分割。

也可以将 Python 变量或表达式与系统命令调用组合使用。花括号 {} 中的变量可以嵌入到命令文本中。请观察以下示例:

System Command Calls

这是另一个示例,用于理解在 Python 变量前加上 $ 也能达到相同的结果。

Prefixing Python Variable

IPython - 命令行选项

在本章中,让我们了解如何在 IPython 中使用各种命令行选项。

调用 IPython 程序

您可以使用以下选项调用 IPython 程序:

C:\python36> ipython [subcommand] [options] [-c cmd | -m mod | file] [--] [arg]

文件选项是一个带有 .py 扩展名的 Python 脚本。如果没有其他选项,则执行脚本并重新出现命令提示符。

C:\python36>ipython hello.py
Hello IPython
welcome to interactive computing

子命令和参数

IPython 命令接受以下子命令选项:

  • Profile - 创建和管理 IPython 配置文件。

  • 内核 (Kernel) − 启动一个没有附加前端的内核。

  • 定位 (Locate) − 打印 IPython 目录的路径。

  • 历史记录 (History) − 管理 IPython 历史数据库。

IPython 配置文件子命令接受以下参数:

  • ipython profile create myprofile − 创建一个新的配置文件。

  • ipython profile list − 列出所有可用的配置文件。

  • ipython locate profile myprofile − 定位所需的配置文件。

要安装新的 IPython 内核,请使用以下命令:

Ipython kernel –install –name

要打印 IPython 目录的路径,请使用以下命令:

C:\python36>ipython locate myprofile
C:\Users\acer\.ipython

此外,我们知道:

  • history 子命令管理 IPython 历史数据库。

  • trim 选项将 IPython 历史数据库减少到最后 1000 条条目。

  • clear 选项删除所有条目。

IPython 的一些其他重要命令行选项列在下面:

序号 IPython 命令 & 说明
1

--automagic

启用自动调用魔法命令。

2

--pdb

在每次异常后启用自动调用 pdb 调试器。

3

--pylab

预加载 matplotlib 和 numpy 用于与默认 matplotlib 后端进行交互式使用。

4

--matplotlib

配置 matplotlib 用于与默认 matplotlib 后端进行交互式使用。

5

--gui=options

启用与任意 ('glut', 'gtk', 'gtk2','gtk3', 'osx', 'pyglet', 'qt', 'qt4', 'qt5', 'tk', 'wx', 'gtk2', 'qt4') GUI 事件循环集成。

一些 IPython 命令行选项的示例用法如下表所示:

序号 IPython 命令 & 说明
1

ipython --matplotlib

启用 matplotlib 集成

2

ipython --matplotlib=qt

使用 qt4 后端启用 matplotlib 集成

3

ipython --profile=myprofile

使用配置文件 myprofile 启动

4

ipython profile create myprofile

使用默认配置文件创建配置文件 myprofile

5

ipython help profile

显示配置文件子命令的帮助

6

ipython locate

打印 IPython 目录的路径

7

ipython locate profile myprofile

打印配置文件 `myprofile` 的目录路径

IPython - 动态对象内省

IPython 有多种方法可以动态地获取有关 Python 对象的信息。在本章中,让我们学习在 IPython 中进行动态对象内省的方法。

使用 ??? 可以提供关于对象的特定和更详细的信息。在下面讨论的第一个示例中,创建了一个简单的整数对象 a。可以通过在输入单元中键入 a ? 来获取其信息。

Dynamic Object Introspection in IPython

在第二个示例中,让我们定义一个函数并使用 ??? 来内省此函数对象。

Function and Introspect

请注意,魔法函数 %psearch 等效于使用 ??? 获取对象信息。

IPython - I/O 缓存

IPython 控制台上的输入和输出单元按顺序递增编号。在本章中,让我们详细了解 Python 中的 IO 缓存。

在 IPython 中,可以使用向上箭头键检索输入。此外,所有以前的输入都已保存并可以检索。变量 _i__i___i 始终存储前三个输入条目。此外,In_in 变量提供所有输入的列表。显然,_in[n] 从第 n 个输入单元检索输入。以下 IPython 会话可以帮助您理解这种现象:

In [1]: print ("Hello")
Hello

In [2]: 2+2
Out[2]: 4

In [3]: x = 10

In [4]: y = 2

In [5]: pow(x,y)
Out[5]: 100

In [6]: _iii, _ii, _i
Out[6]: ('x = 10', 'y = 2', 'pow(x,y)')

In [7]: In
Out[7]:
['',
   'print ("Hello")',
   '2+2',
   'x = 10',
   'y = 2',
   'pow(x,y)',
   '_iii, _ii, _i',
   'In'
]
   
In [8]: In[5] 9. IPython — IO
Out[8]: 'pow(x,y)'

In [9]: _ih
Out[9]:
['',
   'print ("Hello")',
   '2+2',
   'x = 10',
   'y = 2',
   'pow(x,y)',
   '_iii, _ii, _i',
   'In',
   'In[5]',
   '_ih'
]
   
In [11]: _ih[4]
Out[11]: 'y = 2'

In [12]: In[1:4]
Out[12]: ['print ("Hello")', '2+2', 'x=10']

类似地,单下划线、双下划线和三下划线充当变量以存储前三个输出。此外,Out_oh 形成一个单元格编号和执行操作(不包括赋值语句)的单元格输出的字典对象。要检索特定输出单元格的内容,请使用 Out[n]_oh[n]。您还可以使用切片来获取一定范围内的输出单元格。

In [1]: print ("Hello")
Hello

In [2]: 2+2
Out[2]: 4

In [3]: x = 10

In [4]: y = 3

In [5]: pow(x,y)
Out[5]: 1000

In [6]: ___, __, _
Out[6]: ('', 4, 1000)

In [7]: Out
Out[7]: {2: 4, 5: 1000, 6: ('', 4, 1000)}

In [8]: _oh
Out[8]: {2: 4, 5: 1000, 6: ('', 4, 1000)}

In [9]: _5
Out[9]: 1000

In [10]: Out[6]
Out[10]: ('', 4, 1000)

将 IPython 设置为默认 Python 环境

不同的环境变量会影响 Python 的行为。PYTHONSTARTUP 环境变量被赋值给一个 Python 脚本。因此,此脚本在 Python 提示符出现之前执行。如果每次启动新的 Python 会话时都需要默认加载某些模块,这将非常有用。

以下脚本 (start.py) 导入 IPython 模块并执行 start_ipython() 函数,以在调用 Python 可执行文件时使用 IPython shell 替换默认的 Python shell 提示符 (>>>)

import os, IPython
os.environ['PYTHONSTARTUP'] = ''
IPython.start_ipython()
raise SystemExit

假设此文件存储在 Python 的安装目录 (c:\python36) 中,请设置 PYTHONSTARTUP 环境变量并从命令行启动 Python。然后将出现 IPython shell,如下所示:

Python’s Installation Directory

请注意,可以使用 Windows 中的“系统属性”对话框和 Linux 中的 export 命令永久设置环境变量。

IPython - 导入 Python Shell 代码

IPython 可以从具有默认 >>> 提示符的标准 Python 控制台和另一个 IPython 会话读取。以下屏幕截图显示了在标准 Python shell 中编写的 for 循环:

Standard Python Shell Loop

复制代码(以及 Python 提示符)并将代码粘贴到 IPython 输入单元格中。IPython 会智能地过滤掉输入提示符(>>> 和 ...)或 IPython 提示符(In [N]: 和 ...:)。

IPython Input Cell

类似地,可以将来自一个 IPython 会话的代码粘贴到另一个会话中。下面给出的第一个屏幕截图显示在一个 IPython 窗口中定义 SayHello() 函数:

IPython window

现在,让我们选择代码并将其粘贴到另一个 IPython shell 中,然后调用 SayHello() 函数。

IPython shell Cmd

嵌入 IPython

IPython 模块的 embed() 函数使得可以在 Python 代码的命名空间中嵌入 IPython。这样,您就可以在默认的 Python 环境中利用 IPython 的功能,例如对象内省和制表符补全。

IPython module

在嵌入之前出现在全局命名空间中的 Python 对象将可用于 IPython。

Python objects

如果在 IPython 中形成了新对象或修改了以前的对象,则在退出 IPython 后,它们将自动可用于默认环境。嵌入式 IPython shell 不会更改先前代码或对象的状态。

但是,如果 IPython 嵌入到局部命名空间(例如函数内部),则一旦关闭 IPython,其中的对象将不可用。在这里,我们定义了一个函数 add()。在 add() 中,我们调用 IPython 并声明了一个变量。如果我们在关闭 IPython 后尝试访问 IPython 中的变量,则会引发 NameError 异常。

IPython NameError Exception

IPython - 魔术命令

与标准 Python shell 相比,魔法命令或魔法函数是 IPython 提供的重要增强功能之一。这些魔法命令旨在解决使用 Python 进行数据分析中的常见问题。事实上,它们控制 IPython 本身的行为。

魔法命令充当便捷函数,其中 Python 语法不是最自然的。它们对于在其工作流程中嵌入无效的 Python 语法非常有用。

魔法命令的类型

有两种类型的魔法命令:

  • 行魔法
  • 单元魔法

行魔法

它们类似于命令行调用。它们以 % 字符开头。行的其余部分是其参数,无需括号或引号。行魔法可以用作表达式,其返回值可以赋值给变量。

单元魔法

它们具有 %% 字符前缀。与行魔法函数不同,它们可以在其调用下方的多行上运行。事实上,它们可以对接收到的输入进行任意修改,这些输入甚至根本不需要是有效的 Python 代码。它们将整个块作为单个字符串接收。

要了解有关魔法函数、内置魔法函数及其文档字符串的更多信息,请使用魔法命令。特定魔法函数的信息可以通过 %magicfunction? 命令获取。现在让我们描述一些内置的行和单元魔法命令。

内置行魔法

%autocall [mode]

此魔法函数使函数无需使用括号即可自动调用。它接受三个可能的模式参数:0(关闭)、1(智能)是默认值2(始终打开)

Built-in line Magics

%automagic

如果设置为 1,则无需键入初始 % 即可调用魔法函数。在没有参数的情况下,它会切换打开/关闭。要停用,请设置为 0。

以下示例显示了一个魔法函数 %pwd(显示当前工作目录)在 %automagic 设置为 1 时无需前导 % 即可调用。

%automagic

%cd

此行魔法更改当前目录。此命令会自动维护您在 IPython 会话期间访问的目录的内部列表,位于变量 _dh 中。您还可以执行“cd -<tab>”以便方便地查看目录历史记录。

%cd

用法

%cd 命令可以以下几种方式使用:

  • %cd <dir> − 将当前工作目录更改为 <dir>

  • %cd.. − 将当前目录更改为父目录

  • %cd − 更改为上次访问的目录。

%dhist

此魔法命令打印您在本会话中访问的所有目录。每次使用 %cd 命令时,此列表都会在 _dh 变量中更新。

%dhist

%edit

此魔法命令调用当前操作系统的默认文本编辑器(Windows 为记事本)来编辑 Python 脚本。关闭编辑器后,将执行脚本。

%env

此魔法命令将列出所有环境变量。它还会读取特定变量的值或设置环境变量的值。

用法

%cd 命令可以以下几种方式使用:

  • %env − 列出所有环境变量

  • %env var − 获取 var 的值

  • %env var val − 设置 var 的值

%env

%gui [GUINAME]

在没有参数的情况下使用此命令将启用或禁用 IPython GUI 事件循环集成。使用 GUINAME 参数,此魔法将默认 GUI 工具包替换为指定的工具包。

序号 命令 & 说明
1

%gui wx

启用 wxPython 事件循环集成

2

%gui qt4|qt

启用 PyQt4 事件循环集成

3

%gui qt5

启用 PyQt5 事件循环集成

4

%gui gtk

启用 PyGTK 事件循环集成

5

%gui gtk3

启用 Gtk3 事件循环集成

6

%gui tk

启用 Tk 事件循环集成

7

%gui osx

启用 Cocoa 事件循环集成

8

(需要 %matplotlib 1.1)

9

%gui

禁用所有事件循环集成

%lsmagic

显示当前可用的所有魔法函数

%lsmagic

%matplotlib

此函数在 IPython 会话期间激活 matplotlib 交互式支持。但是,它不会导入 matplotlib 库。matplotlib 默认 GUI 工具包是 TkAgg。但是您可以显式请求不同的 GUI 后端。您可以看到可用后端的列表,如下所示:

In [4]: %matplotlib --list
Available matplotlib backends: 
['osx', 'qt4', 'qt5', 'gtk3', 'notebook', 'wx', 'qt', 'nbagg','gtk', 'tk', 'inline']

此处显示的 IPython 会话使用 qt 工具包绘制正弦波:

%matplotlib

在使用 Jupyter notebook 时,%matplotlib inline 指令仅在浏览器中显示绘图输出。

%notebook

此函数将当前 IPython 历史记录转换为具有 ipynb 扩展名的 IPython notebook 文件。先前示例中的输入单元格保存为 sine.ipynb

%notebook sine.ipynb

%pinfo

此函数类似于对象内省 ? 字符。要获取有关对象的信息,请使用以下命令:

%pinfo object

这与 object??object 同义。

%precision

此魔法函数将浮点结果限制为小数点后指定位数。

%precision

%pwd

此魔法函数返回当前工作目录。

%pwd

%pylab

此函数使用 matplotlib 和 numpy 库填充当前 IPython 会话。

%pylab

%recall

在没有参数的情况下执行时,此函数将执行上一个命令。

注意,在%recall n中,前面的数字是输入单元格的编号。因此,将调用第n个单元格中的命令。可以使用诸如%recall 1-4之类的命令来调用单元格区域中的命令。当前输入单元格将填充已调用的单元格内容,光标将闪烁,直到按下回车键。

%recall

%run

此命令从IPython shell内部运行Python脚本。

%run

%time

此命令显示IPython环境执行Python表达式所需的时间。

%time

%timeit

此函数还显示IPython环境执行Python表达式所需的时间。Python语句或表达式的执行时间使用timeit模块。此函数可以作为行魔法和单元格魔法使用,如下所述:

  • 行模式下,您可以计时单行代码。

  • 单元格模式下,第一行的语句用作设置代码,并对单元格的主体进行计时。单元格主体可以访问在设置代码中创建的任何变量。

%who

此行魔法函数打印所有交互式变量,并进行一些简单的格式化。如果给出任何参数,则仅打印类型与这些参数之一匹配的变量。

%who

IPython自定义行魔法函数

IPython的核心库包含register_line_magic装饰器。使用此装饰器,用户定义的函数将转换为行魔法函数。

IPython Custom Line Magic function

Jupyter 项目 - 概述

Jupyter项目始于2014年作为IPython项目的衍生项目。IPython的语言无关特性被迁移到Jupyter项目下。这个名字指的是Jupyter支持的核心编程语言:Julia、Python和R。Jupyter项目下的产品旨在支持交互式数据科学和科学计算。

Jupyter项目包含以下产品:

  • IPykernel − 此软件包为Jupyter提供IPython内核。

  • Jupyter客户端 − 此软件包包含Jupyter协议的参考实现。它也是一个用于启动、管理和与Jupyter内核通信的客户端库。

  • Jupyter Notebook − 此前称为IPython Notebook。这是一个基于Web的界面,用于IPython内核以及许多其他编程语言的内核。

  • Jupyter内核 − 内核是Jupyter产品的编程语言的执行环境。

Jupyter内核列表如下:

  • Qtconsole − 一个基于Qt的丰富的控制台,用于与Jupyter内核一起工作

  • nbconvert − 将Jupyter Notebook文件转换为其他格式

  • JupyterLab − 基于Web的集成界面,用于笔记本、编辑器、控制台等。

  • nbviewer − Notebook文件的HTML查看器

Jupyter Notebook - 简介

IPython Notebook由Fernando Perez开发,作为IPython内核的基于Web的前端。为了创建一个用于多种语言的集成交互式计算环境,Notebook项目被转移到Jupyter项目下,除了Python之外,还为Julia和R编程环境提供前端。

Notebook文档由富文本元素组成,包含HTML格式的文本、图形、数学公式等。Notebook也是一个可执行文档,包含Python或其他支持语言的代码块。

Jupyter Notebook是一个客户端-服务器应用程序。该应用程序在本地机器上启动服务器,并在Web浏览器中打开Notebook界面,可以在其中进行编辑和运行。Notebook保存为ipynb文件,可以导出为html、pdf和LaTex文件。

在线使用Jupyter

如果您不熟悉Jupyter,可以在本地安装之前尝试Jupyter Notebook的功能。为此,请在浏览器中访问https://jupyter.pythonlang.cn,然后选择“使用Python试用Jupyter”选项。

Try Jupyter with Python

这将打开https://mybinder.org的主页。从“文件”菜单中,选择“新建Notebook”选项以在浏览器中打开一个空白的Jupyter Notebook。与IPython终端类似的输入单元格将显示出来。您可以在其中执行任何Python表达式。

Jupyter New Notebook

安装和开始

您可以使用pip包管理器轻松安装Jupyter Notebook应用程序。

pip3 install jupyter

要启动应用程序,请在命令提示符窗口中使用以下命令。

c:\python36>jupyter notebook

服务器应用程序在默认端口号8888上运行,浏览器窗口打开以显示Notebook仪表板。

Jupyter Notebook Dashboard

观察到,仪表板在浏览器右侧边界附近显示一个下拉菜单,在“新建”按钮旁边有一个箭头。它包含当前可用的Notebook内核。现在,选择Python 3,然后在新标签页中打开一个新的Notebook。将显示类似于IPython控制台的输入单元格。

您可以在其中执行任何Python表达式。结果将显示在输出单元格中。

Result Out Cell

Jupyter Notebook - 仪表板

Jupyter Notebook的仪表板包含三个标签页,如下面的屏幕截图所示:

Jupyter Dashboard

文件标签页

“文件”标签页显示调用Notebook应用程序的当前目录下的文件和文件夹。对应于当前打开的Notebook的行以及运行状态显示在“上次修改”列的旁边。它还显示“上传”按钮,可以使用该按钮将文件上传到Notebook服务器。

运行标签页

“运行”标签页显示当前正在运行的Notebook。

集群标签页

第三个标签页“集群”由IPython并行提供。IPython的并行计算框架,是IPython内核的扩展版本。

从“新建”下拉菜单中选择“终端”以打开一个cmd窗口。您现在可以在这里启动IPython终端。

IPython Terminal

Jupyter Notebook - 用户界面

在Jupyter的用户界面中,文件名称显示在标题栏中的徽标旁边。

Jupyter Filename Creation

您可以在标题栏下方找到菜单栏。每个菜单包含许多选项,稍后将进行讨论。

Jupyter Notebook MenuBar

一排构成工具栏的图标可帮助用户执行经常需要的操作

Jupyter Notebook ToolBar

Notebook有两种模式:命令模式编辑模式。单击单元格时,Notebook进入编辑模式。请注意内核名称旁边的铅笔符号。

Jupyter Notebook Editmode

内核指示器符号显示在内核名称的右侧。请注意,空心圆圈表示内核空闲,实心圆圈表示内核繁忙。

Jupyter Notebook Kernel Indicator

文件菜单

以下是“文件”菜单中提供的选项:

序号 文件菜单和描述
1

新建Notebook

选择内核以启动新的Notebook

2

打开

将用户带到仪表板以选择要打开的Notebook

3

另存为

保存当前Notebook并启动新的内核

4

重命名

重命名当前Notebook

5

保存

保存当前Notebook并存储当前检查点

6

恢复

将Notebook的状态恢复到之前的检查点

7

下载

以各种文件格式之一导出Notebook

可用的文件格式如下所示:

File Formats

编辑菜单

编辑菜单包含用于执行剪切、复制和粘贴单元格、删除选定单元格、拆分和合并单元格、上下移动单元格、在Notebook中查找和替换、剪切/复制附件以及插入图像的按钮。

视图菜单

此菜单中的按钮可帮助我们隐藏/显示标题、工具栏和单元格编号。

插入菜单

此菜单为您提供在当前单元格之前或之后插入单元格的选项。

单元格菜单

此菜单中的选项允许用户运行Notebook中的所有单元格或特定单元格。您还可以将单元格类型设置为代码类型、Markdown或原始nbconvert类型。

内核菜单

从此菜单中,您可以启动、中断、重启或关闭内核。您还可以启动新的内核。

小部件菜单

从此菜单中,您可以保存、清除、下载或嵌入小部件状态。

帮助菜单

从此菜单中显示各种预定义的键盘快捷键。您还可以根据自己的方便调整快捷键。

Jupyter Notebook - 单元格类型

Jupyter Notebook中的单元格分为三种类型:代码、Markdown原始

代码单元格

此单元格中的内容被视为当前内核编程语言中的语句。默认内核是Python。因此,我们可以在代码单元格中编写Python语句。运行此类单元格时,其结果将显示在输出单元格中。输出可以是文本、图像、matplotlib绘图或HTML表格。代码单元格具有富文本功能。

Markdown单元格

这些单元格包含使用Markdown语言格式化的文本。所有类型的格式化功能都可用,例如使文本加粗和斜体、显示有序或无序列表、呈现表格内容等。Markdown单元格特别有用,可以为Notebook的计算过程提供文档。

原始单元格

原始单元格中的内容不会由Notebook内核进行评估。通过nbconvert传递时,它们将按需呈现。如果您在原始单元格中键入LatEx,则应用nbconvert后将进行呈现。

Raw Cells

Jupyter Notebook - 编辑

虽然菜单栏和工具栏允许您对Notebook执行各种操作,但最好能够使用键盘快捷键快速执行这些操作。

Jupyter Notebooks有两种不同的键盘输入模式:

  • 命令模式 − 将键盘绑定到Notebook级别的操作。以灰色单元格边框和蓝色左边缘为标志。

  • 编辑模式 − 当您在单元格中键入时。以绿色单元格边框为标志。

命令模式(按Esc启用)

F

查找和替换

1

将单元格更改为标题1

Ctrl-Shift-F

打开命令面板

2

将单元格更改为标题2

Ctrl-Shift-P

打开命令面板

3

将单元格更改为标题3

Enter

进入编辑模式

4

将单元格更改为标题4

P

打开命令面板

5

将单元格更改为标题5

Shift-Enter

运行单元格,选择下一单元格

6

将单元格更改为标题6

Ctrl-Enter

运行选定的单元格

A

在上面插入单元格

Alt-Enter

运行单元格并在下方插入

B

在下面插入单元格

Y

将单元格更改为代码

X

剪切选定的单元格

M

将单元格更改为Markdown

C

复制选定的单元格

R

将单元格更改为原始

V

在下方粘贴单元格

K

选择上面的单元格

Z

撤消单元格删除

Up

选择上面的单元格

D,D

删除选定的单元格

Down

选择下面的单元格

Shift-M

合并选定的单元格,或者如果只有一个单元格被选中,则合并当前单元格和下面的单元格

J

选择下面的单元格

Shift-V

在上方粘贴单元格

Shift-K

扩展上面选定的单元格

L

切换行号

Shift-Up

扩展上面选定的单元格

O

切换选定单元格的输出

Shift-Down

扩展下面选定的单元格

Shift-O

切换选定单元格的输出滚动

Shift-J

扩展下面选定的单元格

I,I

中断内核

Ctrl-S

保存并检查点

0,0

重启内核(带对话框)

S

保存并检查点

Esc

关闭分页器

Shift-L

切换所有单元格的行号,并持久保存设置

Q

关闭分页器

Shift-Space

向上滚动笔记本

Space

向下滚动笔记本

编辑模式(按 Enter 键启用)

Tab

代码补全或缩进

Ctrl-Home

跳转到单元格开头

Shift-Tab

工具提示

Ctrl-Up

跳转到单元格开头

Ctrl-]

缩进

Ctrl-End

跳转到单元格结尾

Ctrl-[

取消缩进

Ctrl-Down

跳转到单元格结尾

Ctrl-A

全选

Ctrl-Left

向左移动一个单词

Ctrl-Z

撤销

Ctrl-Right

向右移动一个单词

Ctrl-/

注释

Ctrl-M

进入命令模式

Ctrl-D

删除整行

Ctrl-Shift-F

打开命令面板

Ctrl-U

撤销选择

Ctrl-Shift-P

打开命令面板

Insert

切换覆盖标志

Esc

进入命令模式

Ctrl-Backspace

删除之前的单词

Ctrl-Y

重做

Ctrl-Delete

删除之后的单词

Alt-U

重做选择

Shift-Enter

运行单元格,选择下一单元格

Ctrl-Shift-Minus

在光标处分割单元格

Ctrl-Enter

运行选定的单元格

Down

光标向下移动

Alt-Enter

运行单元格并在下方插入

Up

光标向上移动

Ctrl-S

保存并检查点

Jupyter Notebook - Markdown 单元格

Markdown单元格显示可以使用Markdown语言格式化的文本。为了输入笔记本服务器不应将其视为代码的文本,必须首先将其转换为Markdown单元格,方法是从单元格菜单或在命令模式下使用键盘快捷键M。单元格之前的In[]提示符将消失。

标题单元格

Markdown单元格可以显示6种大小的标题文本,类似于HTML标题。在Markdown单元格中,以#符号开头文本。使用与所需标题级别对应的#符号数量。这意味着单个#将呈现最大的标题行,而六个#符号将呈现最小字体大小的标题。当您从单元格菜单或工具栏的运行按钮运行单元格时,将进行呈现。

以下屏幕截图显示了编辑模式下具有三个不同级别标题的Markdown单元格。

 Markdown Cells Three Levels

运行单元格后,输出如下:

Markdown Cells Output

请注意,Jupyter Notebook Markdown不支持所见即所得功能。格式化的效果只有在运行Markdown单元格后才会呈现。

有序列表

要呈现HTML的<ol>标签所做的编号列表,列表中的第一项应编号为1。后续项目可以赋予任何编号。在运行Markdown单元格时,它将按顺序呈现。要显示缩进列表,请按Tab键,并在每个子列表中的第一项前面加上1。

如果您为Markdown提供以下数据:

Ordered Lists

它将显示以下列表:

Ordered List Output

无序列表

如果列表项以–符号开头,则列表中的每一项都将显示一个实心圆圈;如果列表以*符号开头,则将显示一个实心方块符号。以下示例说明了此功能:

Bullet Lists

呈现的Markdown显示如下:

Bullet Lists Output

超链接

以http或https开头的Markdown文本会自动呈现超链接。要将链接附加到文本,请将文本放在方括号[]中,并将链接放在括号()中,也可以包含悬停文本。以下屏幕截图将对此进行解释。

Hyperlink Including

呈现的Markdown显示如下:

Hyperlink Included

粗体和斜体

要将文本显示为粗体,请将其放在两个下划线或两个星号之间。要显示为斜体,请将其放在单个下划线或单个星号之间。

Applying Bold and Italics

结果如下所示:

Bold and Italics Output

图像

要在Markdown单元格中显示图像,请从“编辑”菜单中选择“插入图像”选项,然后浏览到所需的图像文件。Markdown单元格将显示其语法如下:

Logo Attachment

图像将在笔记本中呈现如下所示:

Jupyter Logo

表格

在Markdown单元格中,可以使用|(管道符号)和–(破折号)来构造表格,以标记列和行。请注意,键入时符号不需要完全对齐。它只需要占据列边框和行边框各自的位置即可。笔记本将根据内容自动调整大小。表格的构造如下所示:

Table Construction

输出表格将呈现如下所示:

Table Output

Jupyter Notebook - 单元格魔法函数

在本章中,让我们了解单元格魔法函数及其功能。

%%html

此单元格魔法函数将代码单元格的内容呈现为html脚本。

Html Script

%%js 或 %%javascript

您可以使用此单元格魔法命令在Jupyter Notebook单元格中嵌入javascript代码。

Embedding JavaScript code

JavaScript Code Output

%%writefile

使用此命令将代码单元格的内容写入文件。

Write File

Jupyter Notebook - 绘图

Jupyter Notebook的IPython内核能够显示输入单元格中代码的绘图。它与matplotlib库无缝协同工作。使用%matplotlib魔法函数的内联选项即使没有调用绘图对象的show()函数,也会在单元格外部呈现绘图。show()函数会导致图形在in[]单元格下方显示,而没有带编号的out[]。

Matplotlib Library

现在,在末尾添加plt.show()并再次运行单元格以查看区别。

请注意,%matplotlib notebook 魔法函数会呈现交互式绘图。

在图形下方,您可以找到一个工具栏,用于切换视图、平移、缩放和下载选项。

Matplotlib Library Toolbar

重要的是,如果您修改绘图下方的數據,显示将动态更改,而无需绘制另一个绘图。

在上面的示例中,更改下方单元格中x和y的数据集,然后再次绘制图形,上面的图形将动态刷新。

Modify Data Underneath

Jupyter - 转换笔记本

Jupyter笔记本文件扩展名为.ipynb。笔记本由笔记本应用程序在Web浏览器中呈现。可以使用文件菜单中的“另存为”选项将其导出为各种文件格式。Jupyter还具有以nbconvert选项形式的命令行界面。默认情况下,nbconvert将笔记本导出为HTML格式。您可以使用以下命令执行此操作:

jupyter nbconvert mynotebook.ipynb

这会将mynotebook.ipynb转换为mynotebook.html。其他导出格式由`--to`子句指定。

请注意,其他选项包括['asciidoc', 'custom', 'html', 'latex', 'markdown', 'notebook', 'pdf', 'python', 'rst', 'script', 'slides']

HTML包括“basic”和“full”模板。您可以在命令行中指定如下:

jupyter nbconvert --to html --template basic mynotebook.ipynb

LaTex是一种文档准备格式,尤其用于科学排版。Jupyter包括“base”、“article”和“report”模板。

jupyter nbconvert --to latex –template report mynotebook.ipynb

要通过latex生成PDF,请使用以下命令:

jupyter nbconvert mynotebook.ipynb --to pdf

笔记本可以导出为HTML幻灯片。转换在后台使用Reveal.js。要在HTTP服务器上提供幻灯片,请在命令行中添加--postserve。要制作不需要互联网连接的幻灯片,只需将Reveal.js库放在与your_talk.slides.html位于同一目录中即可。

jupyter nbconvert myslides.ipynb --to slides --post serve

markdown选项将笔记本转换为简单的markdown输出。Markdown单元格不受影响,代码单元格缩进4个空格。

--to markdown

您可以使用rst选项将笔记本转换为基本的reStructuredText输出。它作为将笔记本嵌入Sphinx文档的起点非常有用。

--to rst

这是从笔记本中获取Python(或其他语言,取决于内核)脚本的最简单方法。

--to script

Jupyter Notebook - IPyWidgets

IPyWidgets是用于Jupyter Notebook的HTML交互式小部件的Python库。库中的每个UI元素都可以响应事件并调用指定的事件处理程序函数。它们增强了Jupyter Notebook应用程序的交互功能。

为了在笔记本中包含小部件,我们必须导入以下模块,如下所示:

from ipywidgets import widgets

这里解释了一些基本IPyWidgets:

文本输入

widgets.text()函数在笔记本中呈现小部件。它类似于HTML中的文本框表单元素。此小部件的对象具有on_submit()方法,该方法侦听文本字段的活动,并可以调用作为参数传递给它的事件处理程序。

按钮

此小部件类似于HTML按钮。单击它时,on_click()方法将注册事件,该方法将调用单击事件处理程序。

IntSlider

一个滑块控件,显示递增的整数值。还有一个FloatSlider和IntRangeSlider(在范围内更改整数)。

标签

此小部件用于在笔记本中显示不可编辑的文本。

display()

此函数来自ipywidgets模块,用于在笔记本的输入单元格中呈现小部件对象。

Interact

此函数根据传递给它的数据参数的类型自动呈现小部件。此函数的第一个参数是事件处理程序,第二个参数是传递给事件处理程序本身的值。

以下示例显示三个标签小部件、两个文本小部件和一个带有“add”标题的按钮。单击按钮后,两个文本输入字段中数字的总和将显示在最下面的标签上。

Form Creation

Jupyter QtConsole - 入门

在本章中,让我们了解如何开始使用QtConsole。本章将概述此软件并解释其安装步骤。

概述

Qt控制台是一个类似于IPython终端的GUI应用程序。但是,它提供了一些文本型IPython终端中没有的增强功能。增强功能包括内联图形、带语法高亮的多分支编辑、图形调用提示等。Qt控制台可以使用任何Jupyter内核,默认内核为IPython内核。

安装

Jupyter QtConsole是Jupyter项目的组成部分。Anaconda发行版中已经包含了QTconsole应用程序。要单独安装它,请使用以下pip命令:

pip3 install qtconsole

您也可以为此目的使用conda命令:

conda install qtconsole

您可以从Anaconda Navigator启动Jupyter控制台。要从命令行启动它,应使用以下命令,无论是从Windows命令提示符还是Anaconda提示符:

jupyter qtonsole

您将获得一个类似于IPython终端的终端,带有一个In[]提示符。您现在可以执行任何Python表达式,就像我们在IPython终端或Jupyter Notebook中所做的一样。

Jupyter QtConsole

Jupyter QtConsole - 多行编辑

多行编辑是IPython终端中没有的功能之一。要在单个输入单元格中输入多个语句,请在第一行之后按ctrl+enter。之后,只需按enter键即可在同一单元格中添加新行。要停止输入新行并运行单元格,请在最后再按一次enter键。单元格将运行,输出将显示在下一个out[]单元格中。

Multiline Editing

Jupyter QtConsole - 内联图形

QtConsole提供的另一个重要增强功能是能够显示内联图形,尤其是绘图。此功能与Matplotlib以及其他绘图库都能很好地配合使用。

Inline Graphics

Jupyter QtConsole - 保存为HTML

将QtConsole输出保存为HTML文件的选项在“文件”菜单中可用。您可以选择创建包含内联图像或将绘图图形作为外部png文件创建文件(名为qt_files)。

QtConsole output as HTML

Jupyter QtConsole - 多个控制台

您可以在Jupyter控制台应用程序中打开多个选项卡。“文件”菜单中提供了三个选项用于此目的。

  • 使用新内核新建选项卡 - 您可以使用此文件菜单加载新的内核。

  • 使用现有内核新建选项卡 - 使用此选项,您可以从IPython内核之外的其他内核中进行选择。

  • 使用相同内核新建选项卡 - 这将创建加载到特定选项卡上的内核的从属项。因此,在主选项卡上初始化的对象将在从属项中访问,反之亦然。

Multiple Consoles

连接到 Jupyter Notebook

Jupyter Notebook 提供了一个 %qtconsole 魔法命令。此命令会调用 QtConsole 作为 Notebook 前端的一个从属终端。因此,Notebook 和 QtConsole 终端之间可以共享数据。

Connecting Jupyter Notebook

您可以看到 Notebook 中的变量可以在 **qtconsole** 窗口中访问。同样,QtConsole 中的新变量也可以在 Notebook 中使用。

请注意,这两个程序的输入和输出单元是递增编号的。

使用 github 和 nbviewer

共享 Jupyter Notebook – 使用 GitHub 和 nbviewer

GitHub 仓库中具有 **.ipynb** 扩展名的 Jupyter Notebook 文件在打开时将被渲染为静态 HTML 文件。Notebook 的交互式功能(例如自定义 JavaScript 绘图)在 GitHub 仓库中将无法使用。

要使用 GitHub 共享 Notebook 文件,请登录 https://github.com 并创建一个公共仓库。然后使用“上传文件”按钮上传您的文件,如下所示:

Github

这将为您提供提交对仓库所做更改的选项。然后,仓库将显示上传的文件,如下所示:

Updated Repository

单击上传的文件以在 GitHub 查看器中查看。您可以与他人共享突出显示的 URL。

Inside Github viewer

另一种在线查看 Notebook 文件的方法是使用 Jupyter 项目的 nbviewer 实用程序。打开 https://nbviewer.jupyter.org/,并将您仓库中文件的 URL 放入文本字段中,如图所示。按“Go”按钮查看 Notebook。

nbviewer

这两种方法都将 Notebook 文件显示为静态 html。要能够执行 Notebook 中的代码,请使用 Jupyter 项目的 Binder 应用程序打开它。

Binder Application

在 nbviewer 窗口中,您将看到“在 Binder 上执行”按钮。单击它,您将看到 Notebook 文件的打开方式与您从本地机器上的 Notebook 服务器本地仪表板打开它完全相同。您可以执行添加/编辑单元格、运行单元格等所有操作。

Execute On Binder

JupyterLab - 概述

Jupyter 项目将 JupyterLab 描述为 Jupyter 生态系统下所有产品的下一代基于 Web 的用户界面。它使您可以无缝地以可扩展的方式使用 Notebook、编辑器和终端。

下面讨论 JupyterLab 的一些重要功能:

  • 代码控制台充当交互运行代码的备忘录。它完全支持丰富的输出,并且可以链接到 Notebook 内核以记录 Notebook 活动。

  • 任何文本文件(Markdown、Python、R、LaTeX 等)都可以在任何 Jupyter 内核中交互运行。

  • Notebook 单元格输出可以显示在其自己的选项卡中,也可以与 Notebook 一起显示,从而可以创建由内核支持的具有交互式控件的简单仪表板。

  • 文档的实时编辑会反映在其他查看器(例如编辑器或控制台)中。可以实时预览 Markdown、分隔值或 Vega/Vega-Lite 文档。

JupyterLab 可以处理多种文件格式(图像、CSV、JSON、Markdown、PDF 等)。它还以这些格式显示丰富的输出。JupyterLab 提供可自定义的键盘快捷键,并使用许多知名文本编辑器的键映射。

JupyterLab - 安装和入门

在安装之前,您可以尝试在线使用 JupyterLab 的功能。访问 https://jupyter.pythonlang.cn/try 并选择“试用 JupyterLab”选项。

JupyterLab

启动器选项卡显示当前可用的内核和控制台。您可以基于其中任何一个启动一个新的基于 Notebook/终端的程序。左列还包含文件浏览器、正在运行的内核和选项卡以及设置视图的选项卡。

JupyterLab 通常会随 Anaconda 发行版自动安装。但是,也可以使用以下 conda 命令单独安装:

conda install -c conda-forge jupyterlab

您也可以为此目的使用 pip 命令:

pip3 install jupyterlab

启动 JupyterLab 应用程序最方便的方法是(如果已安装)从 Anaconda Navigator 启动。

Anaconda Navigator

或者,从 Windows/Linux 命令终端或 Anaconda 提示符使用此命令从命令行启动它:

jupyter lab

无论哪种方式,JupyterLab 应用程序的启动屏幕如下所示:

JupyterLab launch screen

JupyterLab - 界面

要启动新的 Notebook,请单击所需的内核。在上面的屏幕截图中,可以看到一个内核,即 Python3 内核。单击它以启动 Python Notebook。注意,其功能与我们在本教程中学习的功能类似。

Start a Python Notebook

菜单栏

菜单栏位于窗口顶部。您可以在其中找到的默认菜单是:

  • **文件** – 与文件和目录相关的操作。

  • **编辑** – 与编辑文档和其他活动相关的操作。

  • **视图** – 更改 JupyterLab 外观的操作。

  • **运行** – 用于在不同的活动(例如 Notebook 和代码控制台)中运行代码的操作。

  • **内核** – 用于管理内核的操作,内核是用于运行代码的单独进程。

  • **选项卡** – 停靠面板中打开的文档和活动的列表。

  • **设置** – 常用设置和高级设置编辑器。

  • **帮助** – JupyterLab 和内核帮助链接的列表。

左侧边栏显示用于启动新的启动器、添加文件夹、上传文件和刷新文件列表的按钮。右侧窗格是主要的的工作区域,其中 Notebook、控制台和终端以选项卡视图显示。

要启动新的控制台,请单击左侧边栏中的 + 符号以打开新的启动器,然后单击控制台选项。控制台将在右侧窗格的新选项卡中打开。

Starting New Console

请注意,输入单元格位于底部,但是当它运行时,单元格及其相应的输出单元格将出现在控制台选项卡的上部。

启动器还允许您打开文本编辑器和终端,在其中可以调用 IPython shell。

IPython shell Text Editor

JupyterLab - 安装 R 内核

Jupyter 项目现在支持编程环境的内核。我们现在将了解如何在 Anaconda 发行版中安装 R 内核。

在 Anaconda 提示符窗口中输入以下命令:

conda install -c r r-essentials

现在,从启动器选项卡中,选择 R 内核以启动新的 Notebook。

Launcher Tab R kernel

以下是具有 R 内核的 Jupyter Notebook 的屏幕截图:

Jupyter notebook having R kernel
广告