Jupyter 简明教程

Jupyter - Quick Guide

IPython - Introduction

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

Jupyter 项目下的软件包包括 −

  1. Jupyter notebook − Python、Julia、R 及其他众多语言的编程环境的 Web 界面

  2. QtConsole − 与 IPython 类似的基于 Qt 的 Jupyter 内核终端

  3. nbviewer − 共享 Jupyter 笔记本的功能

  4. JupyterLab − 现代 Web 界面集成所有产品。

Python 的标准发行版随 REPL (Read-Evaluate-Print Loop) 环境一起提供,该环境采用 IPython shell 的形式带 >>> 提示符。IPython(即 Interactive Python)是 Python 的增强型交互式环境,它比标准 Python shell 具有更多功能。

Features of IPython

IPython 提供的特性比标准 Python 多。它们如下所述 −

  1. 提供功能强大的交互式 Python shell。

  2. 可用作 Jupyter notebook 及其他 Project Jupyter 的前端工具的主内核。

  3. 具有对象内省能力。内省是指在运行时检查对象属性的能力。

  4. Syntax highlighting.

  5. 存储交互历史。

  6. 关键词、变量和函数名称的 Tab 补全。

  7. 魔术命令系统,可用于控制 Python 环境及执行 OS 任务。

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

  9. 提供对 Python 调试器的访问。

History and Development

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

计算笔记本的概念始于 80 年代,当时 MATLAB 和 Mathematica 得以发行。面向交互式外壳的这些 GUI 前端具有文本格式化、添加图形、表格以及添加数学符号等功能。Sage Notebook 也是一款基于 Web 的笔记本。

IPython 的创建者于 2005 年开始为 IPython 外壳的笔记本界面开展工作。IPython Notebook 很快增加了对其他语言(例如 R 和 Julia)的支持。直到 2014 年,Perez 才将 Jupyter 项目作为一个衍生项目从 IPython 中剥离出去,因为 IPython 项目已经变得庞大,其中增加了 Notebook Server 和 Qt 控制台等产品。

自 IPython 4.0 起,所有附加组件都被移至 Project Jupyter 并为 IPython Notebook 增加了对其他语言的支持。IPython 继续专注于改进其增强的解释器功能。它还为 Jupyter Notebook 前端提供主要内核。

IPython - Installation

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

要单独在标准 Python 安装中安装 IPython,您可以使用 pip 命令,如下所示 −

pip3 install ipython

IPython 在内部使用以下软件包 −

Sr.No.

IPython dependencies & Functionality

1

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

2

jedi 用于 Python 的自动完成工具

3

pickleshare 带有并发支持的小型“搁置”类数据存储

4

prompt_toolkit 在 Python 中构建功能强大的交互式命令行的库

5

pygments 使用 Python 编写的语法突出显示包

6

simplegeneric Simple generic functions

7

traitlets 适用于 Python 应用程序的配置系统。

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

IPython - Getting Started

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

Starting IPython from Command Prompt.

在深入了解 IPython 之前,请注意代替常规 >>> ,您将看到两个主要的 Python 提示,如下所述 −

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

  2. Out[1] 出现于输出出现之前。

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

ipython cmd

现在,如果您安装了 Python 的 Anaconda 分发,请从开始菜单中打开 Anaconda 提示符。

anaconda prompt

Start IPython from conda prompt

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

ipython shell

另一个有用的增强功能是制表符自动补全。我们知道每个对象具有一个或多个方法,如其类中定义的那样。当您在对象前面的点后按 Tab 键时,IPython 会弹出适当的方法列表。

在下面的示例中,定义了一个字符串。响应该操作,显示了字符串类的所有方法。

string class methods

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

ipython info

Magic Functions

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

  1. Line magics ,其与 DOS 命令非常相似。

  2. Cell magics ,其对多行代码进行处理。

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

IPython - Running and Editing Python Script

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

Run Command

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

In [1]: run hello.py
Hello IPython

Edit Command

IPython 还提供编辑 magic 命令。它调用操作系统的默认编辑器。您可以通过 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 - History Command

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

此外,最后三个输出对象存储在特殊变量 , _ and _ 中。 history 魔术命令显示当前会话中的上一条命令,如下图中的屏幕截图所示 −

history command

IPython - System Commands

如果输入单元格中的语句以惊叹号 (!) 开头,则它会被当作底层操作系统的系统命令。例如, !ls (适用于 Linux)和 !dir (适用于 Windows)会显示当前目录的内容

exclamation symbol command

系统命令的输出还可以像下面所示分配给 Python 变量 −

output system command

该变量存储无颜色的输出,并在换行符处拆分。

还可以将 Python 变量或表达式和系统命令调用结合起来。大括号 {} 中的变量可以内嵌在命令文本中。观察以下示例 −

system command calls

以下是另一个示例,它说明在 Python 变量前加上 $ 也能实现相同的结果。

prefixing python variable

IPython - Command Line Options

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

Invoking IPython Program

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

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

file 选项是一个 Python 脚本,扩展名为 .py。如果没有给出其他选项,将执行该脚本并重新显示命令提示符。

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

Subcommands and Parameters

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

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

  2. Kernel - 启动内核,不附加前端。

  3. Locate - 打印 IPython 目录的路径。

  4. History - 管理 IPython 历史记录数据库。

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

  1. ipython profile create myprofile - 创建新配置文件。

  2. ipython profile list - 列出所有可用的配置文件。

  3. ipython locate profile myprofile − 找到所需的配置文件。

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

Ipython kernel –install –name

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

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

此外,我们还知道 −

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

  2. trim 选项将 IPython 历史记录数据库减少到最后 1000 个条目。

  3. clear 选项删除所有条目。

以下列出了 IPython 的其他一些重要的命令行选项 −

Sr.No.

IPython Command & Description

1

--automagic 打开自动调用魔术命令。

2

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

3

--pylab 预先加载 matplotlib 和 numpy 以便与默认 matplotlib 后端进行交互式使用。

4

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

5

--gui=options 启用与以下任意一个 GUI 事件循环集成(“glut”、“gtk”、“gtk2”、“gtk3”、“osx”、“pyglet”、“qt”、“qt4”、“qt5”、“tk”、“wx”、“gtk2”、“qt4”)。

某些 IPython 命令行选项的示例用法显示在以下表格中 −

Sr.No.

IPython Command & Description

1

ipython --matplotlib enable matplotlib integration

2

ipython --matplotlib=qt 启用带 qt4 后端的 matplotlib 集成

3

ipython --profile=myprofile 使用配置文件 foo 启动

4

ipython profile create myprofile 使用默认配置文件创建配置文件 foo

5

ipython help profile 显示 profile 子命令的帮助

6

ipython locate 打印 IPython 目录的路径

7

ipython locate profile myprofile 打印配置文件 myprofile 的目录的路径

IPython - Dynamic Object Introspection

IPython 有不同的方法可以动态获取有关 Python 对象的信息。在本章中,让我们学习如何在 IPython 中进行动态对象自省。

使用 ??? 提供有关对象具体而更详细的信息。在下文讨论的第一个示例中,创建了一个简单的整数对象 a。可以通过在输入单元格中输入 a? 来获取其信息。

dynamic object introspection

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

function and introspect

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

IPython - IO Caching

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)

Setting IPython as Default Python Environment

不同的环境变量会影响 Python 的行为。PYTHONSTARTUP 环境变量被分配给一个 Python 脚本。实际上,该脚本将在 Python 提示符出现之前执行。如果在每次新的 Python 会话启动时都要默认加载某些模块,此方法就很有用。

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

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

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

python installation directory

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

IPython - Importing Python Shell Code

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

Embedding IPython

IPython 模块的 embed() 函数使得在 Python 代码的名称空间中嵌入 IPython 成为可能。因此,你可以在默认的 Python 环境中利用 IPython 的特性,例如对象自省和 tab 补全。

ipython module

在嵌入之前存在于全局名称空间的 Python 对象将可供 IPython 使用。

python objects

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

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

ipython nameerror exception

IPython - Magic Commands

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

当 Python 语法不是最自然时,魔术命令可作为方便的功能。它们可用于在其工作流程中嵌入无效 Python 语法。

Types of Magic Commands

魔术命令有两种类型 −

  1. Line magics

  2. Cell magics

Line Magics

它们类似于命令行调用。它们以 % 字符开头。该行的其余部分是其在没有括号或引号的情况下传递的参数。行魔术可作为表达式使用,其返回值可被分配给变量。

Cell Magics

它们有一个 %% 字符前缀。与行魔术函数不同,它们可以在其调用下方的多行中操作。事实上,它们可以对其接收的输入进行任意修改,而输入甚至不必是有效的 Python 代码。它们将整个块作为单个字符串接收。

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

Built-in line magics

%autocall [mode]

此魔术函数可以自动调用函数,而无需使用括号。它需要三个可能的模式参数: 0 (off), 1 (smart) is default2 (always on)

built in line magics

%automagic

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

以下示例显示了在将 %automagic 设置为 1 时,调用了不带前导 % 的魔术函数 %pwd (显示当前工作目录)

automagic

%cd

该行魔术改变了当前目录。该命令会在 IPython 会话期间自动维护您访问的一个内部目录列表,并在变量 _dh 中。您还可以执行 ‘cd -<tab>’ 来方便地查看目录历史记录。

cd

Usage

%cd 命令可以用以下方式使用 −

  1. %cd &lt;dir&gt; − 将当前工作目录更改为 <dir>

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

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

%dhist

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

dhist

%edit

该魔术命令会调用当前操作系统(Windows 的记事本)的默认文本编辑器来编辑 Python 脚本。脚本在关闭编辑器后执行。

%env

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

Usage

%cd 命令可以用以下方式使用 −

  1. %env − 列出所有环境变量

  2. %env var − 获取变量的值

  3. %env var val − 设置变量的值

env

%gui [GUINAME]

当不带参数使用该命令时,它将启用或禁用 IPython GUI 事件循环集成。通过 GUINAME 参数,该魔术可以将默认 GUI 工具包替换为指定的一个。

Sr.No.

Command & Description

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

(requires %matplotlib 1.1)

9

%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 模块。此函数可同时用作行魔术和单元格魔术,如下所述 −

  1. line mode 中,您可以对单行进行计时。

  2. cell mode 中,第一行的语句用作设置代码,并且对单元格的主体进行计时。单元格主体可以访问设置代码中创建的任何变量。

%who

这种行魔术打印所有交互变量,并带有一些最少格式。如果给出任何参数,则仅打印类型与其中之一匹配的变量。

who

IPython Custom Line Magic function

IPython 的核心库包含 register_line_magic 装饰器。用户自定义函数使用此装饰器转换成行魔术函数。

ipython line magic function

Project Jupyter - Overview

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

Jupyter 项目由以下各种产品组成:

  1. IPykernel - 这是一个提供 Jupyter IPython 内核的包。

  2. Jupyter client - 这个包包含 Jupyter 协议的参考实现。它也是用于启动、管理和与 Jupyter 内核通信的一个客户端库。

  3. Jupyter notebook - 这个以前称为 IPython 笔记本。这是 IPython 内核和许多其他编程语言内核的一个基于网络的界面。

  4. Jupyter kernels - 内核是 Jupyter 产品的编程语言的执行环境。

下面给出 Jupyter 内核列表:

Kernel

Language

URL

IJulia

Julia

https://github.com/JuliaLang

IHaskell

Haskell

https://github.com/gibiansky

IRuby

Ruby

https://github.com/SciRuby/iruby

IJavaScript

JavaScript

https://github.com/n-riesco

IPHP

PHP

https://github.com/dawehner

IRKernel

R

http://irkernel.github.io/

  1. Qtconsole - 一个丰富基于 Qt 的控制台,用于处理 Jupyter 内核

  2. nbconvert - 以其他格式转换 Jupyter 笔记本文件

  3. JupyterLab - 笔记本、编辑器、控制台等的基于网络的集成界面

  4. nbviewer - 笔记本文件的 HTML 浏览器

Jupyter Notebook - Introduction

IPython Notebook 由 Fernando Perez 开发,作为 IPython 内核的基于 Web 的前端。为了构建面向多种语言的集成交互式计算环境,Notebook 项目被移至 Project Jupyter 下,除了 Python 之外,还针对 Juila 和 R 编程环境提供前端。

Notebook 文档包含带有 HTML 格式化文本、图形、数学方程式等内容的富文本元素。该 Notebook 还是一份可执行文件,其中包含 Python 或其他支持语言的代码块。

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

Working with Jupyter Online

如果你对 Jupyter 不熟悉,可以在本地计算机上安装之前尝试 Jupyter notebook 的功能。为此,访问浏览器中的 ` https://jupyter.org `,然后选择 ` ‘Try Jupyter with Python’ ` 选项。

try jupyter with python

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

jupyter new notebook

Installation and Getting Started

你还可以使用 pip 包管理器轻松安装 Jupyter notebook 应用程序。

pip3 install jupyter

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

c:\python36>jupyter notebook

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

jupyter notebook dashboard

请注意,仪表板在新按钮旁的浏览器右边界附近显示了一个下拉菜单,旁边带有箭头。它包含当前可用的 notebook 内核。现在,选择 Python 3,然后在一个新选项卡中打开一个新的 notebook。与 IPython 控制台中类似的输入单元格显示。

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

result out cell

Jupyter Notebook - Dashboard

Jupyter Notebook 的仪表板包含三个选项卡,如下面的屏幕截图所示:

jupyter dashboard

Files Tab

“文件”选项卡显示笔记本应用从其调用的当前目录下的文件和文件夹。当前打开的笔记本对应的行和正在运行的状态显示在最后一列修改的旁边。它还显示了 Upload 按钮,可以使用该按钮将文件上载到笔记本服务器。

Running Tab

“正在运行”选项卡显示当前正在运行哪些笔记本。

Cluster Tab

第三个选项卡“群集”由 IPython parallel 提供。IPython 的并行计算框架,是 IPython 内核的扩展版本。

从 New 下拉菜单中选择 Terminal 打开 cmd 窗口。你现在可以在此处启动 IPython 终端。

ipython terminal

Jupyter Notebook - User Interface

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

jupyter filename creation

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

jupyter notebook menubar

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

jupyter notebook toolbar

笔记具有两种模式 - Command modeEdit mode 。当某个单元格被单击时,笔记本会进入编辑模式。请注意这个铅笔符号就在内核名称旁边。

jupyter notebook editmode

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

jupyter notebook kernel indicator

File Menu

以下是在文件菜单中提供的选项 -

Sr.No.

File menu & Description

1

New notebook 选择用于启动新笔记的内核

2

Open 将用户带到仪表盘以选择要打开的笔记

3

Save as 保存当前笔记本并启动新内核

4

Rename rename current notebook

5

Save 保存当前笔记本并存储当前检查点

6

Revert 将笔记本的状态恢复到早期检查点

7

Download 以各种文件格式导出笔记本

下面显示了可用的文件格式:

file formats

Edit Menu

编辑菜单包含可以执行剪切、复制和粘贴单元格、删除选定的单元格、拆分和合并单元格、在笔记本中找到并替换、剪切/复制附件和插入图像的按钮。

View Menu

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

Insert Menu

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

Cell Menu

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

Kernel Menu

您可以从这个菜单中启动、中断、重启或者关闭内核。您还可以启动一个新的内核。

Widgets Menu

您可以从这个菜单中保存、清除、下载或者内嵌部件状态。

Help menu

此菜单显示各种预定义的键盘快捷键。您还可以按您的方便编辑快捷键。

Jupyter Notebook - Types of Cells

Jupyter Notebook 中的单元格有三种类型 − Code, MarkdownRaw

Code Cells

此单元格中的内容将作为当前内核的编程语言中的语句处理。默认内核为 Python。所以,我们可以在代码单元格中写 Python 语句。当此单元格运行时,它的结果将显示在一个输出单元格中。输出可能是文本、图片、matplotlib 图表或 HTML 表格。代码单元格具有富文本功能。

Markdown Cells

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

Raw Cells

原始单元格中的内容未由 notebook 内核评估。当通过 nbconvert 传递时,它们将按需要呈现。如果您在原始单元格中输入 LatEx,则在应用 nbconvert 后将进行渲染。

raw cells

Jupyter Notebook - Editing

虽然菜单栏和工具栏允许你在笔记本上执行各种操作,但最好能使用键盘快捷键快速执行它们。

Jupyter 笔记本有两个不同的键盘输入模式 −

  1. Command Mode − 将键盘绑定到笔记本级别操作。由带有蓝色左边缘的灰色单元格边框表示。

  2. Edit Mode − 当你正在单元格中输入时。由一个绿色的单元格边框表示。

命令模式(按 Esc 启用)

F

find and replace

1

将单元格更改为标题 1

Ctrl-Shift-F

open the command palette

2

将单元格更改为标题 2

Ctrl-Shift-P

open the command palette

3

将单元格更改为标题 3

Enter

enter edit mode

4

将单元格更改为标题 4

P

open the command palette

5

将单元格更改为标题 5

Shift-Enter

run cell, select below

6

将单元格更改为标题 6

Ctrl-Enter

run selected cells

A

insert cell above

Alt-Enter

运行单元格并插入到下面

B

insert cell below

Y

change cell to code

X

cut selected cells

M

change cell to markdown

C

copy selected cells

R

change cell to raw

V

paste cells below

K

select cell above

Z

undo cell deletion

Up

select cell above

D,D

delete selected cells

Down

select cell below

Shift-M

合并选定的单元格,或仅选择一个单元格时,将当前单元格与下面的单元格合并

J

select cell below

Shift-V

paste cells above

Shift-K

extend selected cells above

L

toggle line numbers

Shift-Up

extend selected cells above

O

切换所选单元格的输出

Shift-Down

extend selected cells below

Shift-O

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

Shift-J

extend selected cells below

I,I

interrupt the kernel

Ctrl-S

Save and Checkpoint

0,0

重新启动内核(带对话框)

S

Save and Checkpoint

Esc

close the pager

Shift-L

切换所有单元格中的行号,并保留设置

Q

close the pager

Shift-Space

scroll notebook up

Space

scroll notebook down

编辑模式(按 Enter 启用)

Tab

code completion or indent

Ctrl-Home

go to cell start

Shift-Tab

tooltip

Ctrl-Up

go to cell start

Ctrl-]

indent

Ctrl-End

go to cell end

Ctrl-[

dedent

Ctrl-Down

go to cell end

Ctrl-A

select all

Ctrl-Left

go one word left

Ctrl-Z

undo

Ctrl-Right

go one word right

Ctrl-/

comment

Ctrl-M

enter command mode

Ctrl-D

delete whole line

Ctrl-Shift-F

open the command palette

Ctrl-U

undo selection

Ctrl-Shift-P

open the command palette

Insert

toggle overwrite flag

Esc

enter command mode

Ctrl-Backspace

delete word before

Ctrl-Y

redo

Ctrl-Delete

delete word after

Alt-U

redo selection

Shift-Enter

run cell, select below

Ctrl-Shift-Minus

split cell at cursor

Ctrl-Enter

run selected cells

Down

move cursor down

Alt-Enter

运行单元格并插入到下面

Up

move cursor up

Ctrl-S

Save and Checkpoint

**

Jupyter Notebook - Markdown Cells

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

Header cell

markdown 单元格可以显示 6 种大小的标题文本,类似于 HTML 标题。通过 # 符号在 markdown 单元格中开始文本。使用与您想要标题的级别相对应的尽可能多的 # 符号。这意味着单个 # 将呈现最大的标题行,六个 # 符号呈现最小字体大小的标题。当您从单元格菜单或工具栏的运行按钮运行单元格时,将进行呈现。

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

markdown cells three levels

当单元格运行时,输出如下 −

markdown cells output

请注意,Jupyter 笔记本标记语言不支持 WYSWYG 功能。只有在运行标记单元格后才会呈现格式化效果。

Ordered Lists

若要按 HTML 的 <ol> 标签的原理呈现带序号的列表,列表中的第一项应编为 1。后续各项可以编为任意数字。运行标记单元格后,这些数字将按顺序呈现。若要显示缩进列表,请按 Tab 键,并以每个子列表中的 1 开头。

如果您为标记语言输入以下数据:

ordered lists

将显示以下列表:

ordered list output

Bullet lists

列表中的每一项都会显示一个实心圆圈,如果它以 – 符号开头,而如果列表以 * 符号开头,则会显示实心方块符号。以下示例解释了此功能 −

bullet lists

呈现的降价以如下显示 −

bullet lists output

使用 http 或 https 开头的降价文本自动呈现超链接。若要将链接附加到文本上,请将文本放在方括号 [] 中并将其放在圆括号 () 中(可选地包括悬停文本)。以下屏幕截图对此进行了说明。

including hyperlink

呈现的降价以如下显示 −

hyperlink included

Bold and Italics

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

applying bold italics

结果以如下所示 −

bold italics output

Images

若要在降价单元格中显示图片,请从编辑菜单中选择“插入图片”选项,然后浏览到需要的图片文件。降价单元格显示其语法如下 −

logo attachment

图片将在笔记本上呈现如下所示 −

jupyter logo

Table

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

table construction

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

table output

Jupyter Notebook - Cell Magic Functions

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

%%html

这个单元格魔术函数将代码单元格的内容渲染为 html 脚本。

html script

%%js or %%javascript

使用这个单元格魔术命令,你可以在 Jupyter 笔记本单元格中嵌入 javascript 代码。

javascript code
javascript code output

%%writefile

使用这个命令将代码单元格的内容写入到文件中。

write file

Jupyter Notebook - Plotting

Jupyter 笔记本的 IPython 内核可以显示输入单元格中的代码绘图。它可以与 matplotlib 库无缝协作。 %matplotlib 魔术函数的 inline 选项可以在即使未调用绘图对象 show() 函数的情况下渲染绘图单元格。 show() 函数导致图形在不带数字的 [] 中单元格的下方显示。

matplotlib library

现在,在末尾加上 plt.show() 再运行一次单元格来查看差别。

注意 %matplotlib notebook 魔术渲染交互式绘图。

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

matplotlib library toolbar

重要的是,如果你修改绘图下方的源数据,显示会动态变化,而无需绘制另一副绘图。

在上面的示例中,修改单元格中 x 和 y 的数据集,再次绘制图形,上面的图形将得到动态刷新。

modifying data underneath

Jupyter - Converting Notebooks

Jupyter 笔记本文件具有 .ipynb 扩展名。笔记本 app 会在网络浏览器中呈现笔记本。它可以通过使用文件菜单中下载作为选项导出到各种文件格式。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。要生成不需要 Internet 连接的幻灯片,只需将 Reveal.js 库放在 your_talk.slides.html 所在的同一目录中。

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

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

--to markdown

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

--to rst

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

--to script

Jupyter Notebook - IPyWidgets

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

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

from ipywidgets import widgets

一些基本的 IPyWidgets 在此处解释 −

Text input

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

Button

这个小组件类似于 HTML 按钮。当它被点击时,事件由 on_click() 方法注册,该方法调用点击事件处理程序。

IntSlider

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

Label

这个小组件对于在笔记本中显示不可编辑文本很有用。

display()

这个来自 ipywidgets 模块的函数在笔记本的输入单元格中渲染小组件对象。

Interact

这个函数根据给定的数据参数类型自动渲染一个控件。该函数的第一个参数是事件处理程序,第二个是传递给事件处理程序本身的一个值。

下面的例子显示了三个标签控件、两个文本控件和一个带“添加”标题的按钮。当点击这个按钮时,两个文本输入框中的数字之和显示在最底部的标签上。

form creation

Jupyter QtConsole - Getting Started

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

Overview

Qt 控制台是一款类似于 IPython 终端的 GUI 应用程序。然而,它提供了一些在基于文本的 IPython 中无法获取的增强功能。增强功能包括:内联图形、具有语法高亮的多分行编辑、图形化调用提示等。Qt 控制台可以用任何 Jupyter 内核,缺省为 IPython 内核。

Installation

Jupyter QtConsole 是 Project Jupyter 的一部分。Anaconda 发行版中已经包含了 QTconsole 应用程序。若要自行安装,请使用 pip 命令,如下所示:

pip3 install qtconsole

您还可以使用 conda 命令来达到此目的:

conda install qtconsole

您可以从 Anaconda 导航器启动 Jupyter 控制台。若要从命令行启动它,您应该使用以下命令,可以在 Windows 命令提示符或 Anaconda 提示符中使用:

jupyter qtonsole

您将获得一个类似于 IPython 终端的终端,开头是 In[] 提示。现在您可以执行任何 Python 表达式,就像我们在 IPython 终端或 Jupyter 笔记本中执行的一样。

jupyter qtconsole

Jupyter QtConsole - Multiline Editing

多行编辑是 IPython 终端中不可用的特性之一。为了在单一输入单元中输入多条语句,在第一行后按下 ctrl+enter 。此后,仅仅按下回车即可在同一单元中添加新行。若要停止输入新行并运行单元,再次在结尾处按下回车键。单元将运行,并且输出将显示在下一个 out[] 单元中。

multiline editing

Jupyter QtConsole - Inline Graphics

QtConsole 提供的另一个重要增强功能是能够显示内联图形,尤其适用于图表。此功能适用于 Matplotlib 和其他绘图库。

lnline graphics

Jupyter QtConsole - Save to HTML

在 File 菜单中提供将 QtConsole 输出保存为 HTML 文件的此选项。你可以选择创建带有嵌入图像的文件,或者将绘图图形作为一个外部 png 文件放在一个邻接文件夹(名为 qt_files)中。

qtconsole output html

Jupyter QtConsole - Multiple Consoles

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

  1. New Tab with New kernel − 您可用此文件菜单加载一个新的内核。

  2. New Tab with Existing kernel − 使用此选项,您可以选择除了 IPython 内核以外的其他内核。

  3. New Tab with Same Kernel − 这将创建一个在特定选项卡上加载的内核的从属内核。因此,在主选项卡上初始化的对象在从属内核中也可访问,反之亦然。

multiple consoles

Connecting to Jupyter Notebook

有一个可供与 Jupyter notebook 一起使用的 %qtconsole 魔术命令。这将调用 QtConsole 作为 notebook 前端的从属终端。因此,可以在 notebook 和 Qtconsole 终端之间共享数据。

connecting jupyter notebook

您可以看到 notebook 中的变量可在 qtconsole 窗口内访问。此外,Qtconsole 中的新变量已在 notebook 中重新使用。

请注意,两个输入单元格和输出单元格之间的编号是递增的。

Using github and nbviewer

Sharing Jupyter notebook – Using github and nbviewer

当一个 GitHub 仓库中的 Jupyter Notebook 文件带有 .ipynb 扩展名时,当它们被打开时,它们将被渲染成静态 HTML 文件。笔记本的交互特性,诸如自定义的 JavaScript 绘图,将无法在你 GitHub 中的仓库中工作。

要使用 GitHub 共享笔记本文件,请登录到 https://github.com ,创建一个公共仓库。然后使用文件上传按钮上传你的文件,如下所示:

github

这会给你一个选择来提交对仓库所做更改的机会。然后,仓库会显示如下上传的文件:

updated repository

点击上传的文件在 GitHub 查看器中查看。你可以把高亮的网址分享给别人。

inside github viewer

查看笔记本文件的另一种方法是使用 Project Jupyter 的 nbviewer 工具。打开 https://nbviewer.jupyter.org/ ,把你的仓库的文件 URL 放到文本框中,如所示。按下 Go 按钮查看笔记本。

nbviewer

这两种方法都会把笔记本文件显示为静态 HTML。为了能够在笔记本中执行代码,使用 Jupyter 项目的 Binder 应用程序打开它。

binder application

在 nbviewer 窗口中,你会看到 “在 Binder 中执行” 按钮。点击它,你会看到笔记本文件被打开,就像你从本地机器中笔记本服务器的本地仪表盘打开它一样。你可以执行诸如添加/编辑单元格、运行单元格等所有操作。

execute on binder

JupyterLab - Overview

Project Jupyter 将 JupyterLab 描述为 Jupyter 生态系统下所有产品的下一代基于 Web 的用户界面。它使你能够以一种可扩展的方式与笔记本、编辑器和终端无缝工作。

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

  1. 代码控制台可用作以交互方式运行代码的便笺本。它全面支持丰富型输出,并且可以链接到笔记本内核以记录笔记本活动。

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

  3. 笔记本单元输出可以显示到自己的选项卡中,或者与笔记本一起显示,从而实现由内核支持具有交互式控件的简单仪表板。

  4. 文稿的实时编辑会在其他阅读器(如编辑器或控制台)中反映出来。可以实时预览 Markdown、以分隔符分隔的值,或 Vega/Vega-Lite 文稿。

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

JupyterLab - Installation and Getting Started

在安装之前你可以在线试用 JupyterLab 的功能。访问 https://jupyter.org/try 并选择“试用 JupyterLab”选项。

jupyter lab

启动器标签显示当前可用的内核和控制台。你可以基于它们任何一个启动一个新的笔记本/终端。左列也有用于文件浏览器、运行内核、标签页和设置视图的标签页。

JupyterLab 通常通过 Anaconda 分发自动安装。但是,它也可以通过以下 conda 命令单独安装 −

conda install -c conda-forge jupyterlab

您还可以为此使用 pip 命令 −

pip3 install jupyterlab

要启动 JupyterLab 应用程序,最方便的方法是通过安装的 Anaconda 导航器。

anaconda navigator

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

jupyter lab

无论哪种方式,JupyterLab 应用程序的启动画面如下所示 −

launch screen

JupyterLab - Interface

若要启动一个新的笔记本,请单击所需的内核。在以上屏幕截图中,可以看到一个内核,即 Python3 内核。单击它以启动一个 Python 笔记本。请注意,它的功能类似于我们本教程中所研究的功能。

start python notebook

Menu Bar

菜单栏在窗口的顶部。您可以在其中找到的缺省菜单是:

  1. File − 与文件和目录相关的操作。

  2. Edit − 与编辑文档和其他活动相关的操作。

  3. View − 更改 JupyterLab 外观的动作。

  4. Run − 在不同活动(例如笔记本和代码控制台)中运行代码的动作。

  5. Kernel − 管理内核的动作,内核是用于运行代码的独立进程。

  6. Tabs − 对接面板中打开文档和活动的列表。

  7. Settings − 常用设置以及高级的设置编辑器。

  8. Help - JupyterLab 和内核帮助链接列表。

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

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

starting new console

请注意,输入单元格位于底部,但运行后,单元格及其相应的输出单元格将显示在控制台标签的上部。

启动器还允许您打开一个文本编辑器和一个可以调用 IPython shell 的终端。

ipython shell text editor

JupyterLab - Installing R Kernel

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

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

conda install -c r r-essentials

现在,从启动程序选项卡中,选择 R 内核以启动新的笔记本。

launcher tab r kernel

以下是具有 R 内核的 Jupyter 笔记本的屏幕截图 −

jupyter notebook r kernel