Jupyter notebook的使用

Jupyter notebook 是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。它已迅速成为数据分析、机器学习等领域的工作人员在进行数据清理和探索时所需的必备工具。notebook 能将文档及代码等一切相关资料集中到一处,让用户一目了然。

Jupyter notebook 简介

Jupyter notebook 源自 IPython,是一种交互式 shell,与普通的 Python shell 相似。最初,notebook 的工作方式是,将来自 Web 应用(你在浏览器中看到的 notebook)的消息发送给 IPython 内核(在后台运行的 IPython 应用程序)。内核执行代码,然后将结果发送回 notebook。IPython经过技术演进之后,将内核分离,成为现在的架构模式
Jupyter notebook架构模式
架构的核心是 notebook server。用户通过浏览器连接到该服务器。用户在 Web 应用中编写的代码通过浏览器发送给notebook server之后,notebook server将代码发送给内核,内核运行并将结果发送回notebook server。最后,输出返回给浏览器并展示给用户。保存 notebook 时,所有内容将生成一个 JSON 文件(文件扩展名为 .ipynb)写入到notebook server中。

Jupyter notebook 的安装

1. 使用 conda 安装

在 conda 环境中,执行如下命令即可安装jupyter notebook

conda install jupyter notebook

默认情况下,安装anaconda的时候,会自动将jupyter notebook集成进去

2. Jupyter notebook 的启动和关闭

在Anaconda字符终端输入jupyter-notebook,即可启动notebook server。服务器会在此命令被执行的目录中启动,任何 notebook 文件都会保存在该目录下。运行此命令时,服务器主页会在浏览器中打开。默认情况下,notebook server的访问地址是 http://localhost:8888 ,通过当前机器上所带的浏览器访问该地址就可以看到Server的主页面。如果同时启动了另一个 notebook server,新服务器会尝试使用端口8888,但由于此端口已被占用,新Server会在端口8889上运行。这样,可以通过 http://localhost:8889 连接到新服务器

在右侧,可以点击“New”,创建新的 notebook、文本文件、文件夹或终端。“Notebooks”下的列表显示了已安装的内核,这里可能是Python2/3或者是其他如Scala这样的语言。顶部的选项卡是 Files、Running和 Cluster。Files显示当前目录中的所有文件和文件夹。点击 Running选项卡会列出所有正在运行的 notebook。可以在该选项卡中管理这些 notebook。Clusters选项卡用处不多,我们可以先不理会。通过在服务器主页上选中 notebook 旁边的复选框,然后点击“Shutdown”,就可以关闭各个 notebook。

通过在终端中按 Ctrl + C(Mac及Linux上是按两次Ctrl + C),可以关闭整个服务器。这会立即关闭所有运行中的 notebook,所有未保存的内容会丢失。

notebook的基本使用

1. 工具栏

工具栏中一些常用功能,从左到右这些工具按钮分别是:
- 软盘符:保存
- +按钮:创建新的单元格
- 然后是用于剪切、复制和粘贴单元格的按钮
- 上下箭头表示向上或向下移动选中的单元格
- 运行、停止、重新启动内核
- 单元格类型:代码、Markdown、原始文本和标题
- 命令面板:小键盘符号代表命令面板。点击它会弹出一个带有搜索栏的面板,在其中可以搜索不同的命令。例如,如果想清除所有单元的输出,输入clear all cells output,搜出结果之后直接选中就会执行我们所需要的命令。

除此之外,顶部显示了notebook的标题。点击它可以进行重命名。标题右侧会注明最近一次notebook的保存时间。在“File”菜单中,可以选择多种格式进行 notebook 的下载。通常,可以下载为 HTML 文件,以便与不使用 Jupyter 的其他人共享。也可以将 notebook下载为Markdown格式或者Python文件等。

2. 常用快捷键

Jupyter有两种模式:
按Esc切换到命令模式,单元格的边框是蓝色的。这个模式下的常用快捷键(Shift-Enter可能是我们最常用的命令)
Enter : 转入编辑模式
Shift-Enter : 运行本单元,选中下个单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在其下插入新单元
Y : 单元转入代码状态
M :单元转入markdown状态
R : 单元转入raw状态
1 : 设定 1 级标题
2 : 设定 2 级标题
3 : 设定 3 级标题
4 : 设定 4 级标题
5 : 设定 5 级标题
6 : 设定 6 级标题
Up : 选中上方单元
K : 选中上方单元
Down : 选中下方单元
J : 选中下方单元
Shift-K : 扩大选中上方单元
Shift-J : 扩大选中下方单元
A : 在上方插入新单元
B : 在下方插入新单元
X : 剪切选中的单元
C : 复制选中的单元
Shift-V : 粘贴到上方单元
V : 粘贴到下方单元
Z : 恢复删除的最后一个单元
D,D : 删除选中的单元
Shift-M : 合并选中的单元
Ctrl-S : 文件存盘
S : 文件存盘
L : 转换行号
O : 转换输出
Shift-O : 转换输出滚动
Esc : 关闭页面
Q : 关闭页面
H : 显示快捷键帮助
I,I : 中断Notebook内核
0,0 : 重启Notebook内核
Shift : 忽略
Shift-Space : 向上滚动
Space : 向下滚动
编辑模式按 Enter 键切换,这模式下单元格颜色是绿的:

Tab : 代码补全或缩进
Shift-Tab : 提示
Ctrl-] : 缩进
Ctrl-[ : 解除缩进
Ctrl-A : 全选
Ctrl-Z : 复原
Ctrl-Shift-Z : 再做
Ctrl-Y : 再做
Ctrl-Home : 跳到单元开头
Ctrl-Up : 跳到单元开头
Ctrl-End : 跳到单元末尾
Ctrl-Down : 跳到单元末尾
Ctrl-Left : 跳到左边一个字首
Ctrl-Right : 跳到右边一个字首
Ctrl-Backspace : 删除前面一个字
Ctrl-Delete : 删除后面一个字
Esc : 进入命令模式
Ctrl-M : 进入命令模式
Shift-Enter : 运行本单元,选中下一单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在下面插入一单元
Ctrl-Shift-- : 分割单元
Ctrl-Shift-Subtract : 分割单元
Ctrl-S : 文件存盘
Shift : 忽略
Up : 光标上移或转入上一单元
Down :光标下移或转入下一单元

Jupyter notebook magic 关键字

Magic 关键字是可以在单元格中运行的特殊命令,能让用户控制 notebook 本身或执行系统调用(例如更改目录)。例如,在 notebook 中可以使用 %matplotlib 将 matplotlib 设置为以交互方式工作(直接在当前notebook页面打印出绘图结果)。Magic 命令的前面带有一个或两个百分号,分别对应行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。

以下举两例在notebook中常用的Magic。

1. 代码计时

Magic 命令 %timeit 测算函数的运行时间,如下:

import math

def func(n):
    sum = 0
    for i in range(0, n):
        sum += (1 + math.sqrt(10))**i - (1 - math.sqrt(10)**i)/(2**i*math.sqrt(10))
    return sum

%timeit func(10)

# 7.4 µs ± 102 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

2. 在notebook中嵌入可视化统计图

在jupyter notebook中绘制统计图时,使用 %matplotlib 将 matplotlib 设置为以交互方式(另开一个窗口绘图)工作,输入如下代码

%matplotlib
import matplotlib.pyplot as plt
import numpy as np

n = 101
X = np.arange(n)
Y1 = (1 - X / float(n))
Y2 = (1 - X / float(n))

plt.bar(X, +Y1)
plt.bar(X, -Y2)

plt.xlim(-.5, n)
plt.ylim(-1.25, 1.25)

plt.show()

执行之后,会弹出一个窗口回执一幅图形。将第一行改为%matplotlib inline,则不会弹出窗口,直接在本页面打印

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注