如何使用Jupyter notebook
Notebook 已迅速成为处理数据的必备工具。其已知用途包括数据清理和探索、可视化、机器学习和大数据分析。GitHub 上面也会自动提供 notebook。借助此出色的功能,你可以轻松共享工作。http://nbviewer.jupyter.org/ 也会提供 GitHub 代码库中的 notebook 或存储在其他地方的 notebook。
Notebook 运行的核心是 notebook 服务器。你通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。你在 Web 应用中编写的代码通过该服务器发送给内核。内核运行代码并将代码发送回该服务器,之后,任何输出都会返回到浏览器中。保存 notebook 时,它作为 JSON 文件(文件扩展名为 .ipynb
)写入到该服务器中。
使用 Jupyter notebook
安装 notebook
安装 Jupyter 的最简单方法是使用 Anaconda。该发行版自动附带了 Jupyter notebook。你能够在默认环境下使用 notebook。
要在 conda 环境中安装 Jupyter notebook,请使用 conda install jupyter notebook
。
也可以通过 pip 使用 pip install jupyter notebook
来获得 Jupyter notebook。
查看如何使用Anaconda了解如何使用Anaconda。
启动 notebook 服务器
要启动 notebook 服务器,请在终端或控制台中输入 jupyter notebook
。服务器会在你运行此命令的目录中启动。这意味着任何 notebook 文件都会保存在该目录中。你通常希望在 notebook 所在的目录中启动服务器。不过,你可以在文件系统中导航到 notebook 所在的位置。
运行此命令时(请自己试一下!),服务器主页会在浏览器中打开。默认情况下,notebook 服务器的运行地址是 http://localhost:8888
。如果启动其他服务器,新服务器会尝试使用端口 8888
,但由于此端口已被占用,因此新服务器会在端口 8889
上运行。之后,可以通过 http://localhost:8889
连接到新服务器。每台额外的 notebook 服务器都会像这样增大端口号。
在右侧,你可以点击“New”(新建),创建新的 notebook、文本文件、文件夹或终端。“Notebooks”下的列表显示了你已安装的内核。由于我在 Python 3 环境中运行服务器,因此列出了 Python 3 内核。
顶部的选项卡是 Files(文件)、Running(运行)和 Cluster(聚类)。Files(文件)显示当前目录中的所有文件和文件夹。点击 Running(运行)选项卡会列出所有正在运行的 notebook。可以在该选项卡中管理这些 notebook。
关闭 notebook
通过在服务器主页上选中 notebook 旁边的复选框,然后点击“Shutdown”(关闭),你可以关闭各个 notebook。但是,在这样做之前,请确保你保存了工作!否则,在你上次保存后所做的任何更改都会丢失。下次运行 notebook 时,你还需要重新运行代码。
通过在终端中按两次 Ctrl + C,可以关闭整个服务器。再次提醒,这会立即关闭所有运行中的 notebook,因此,请确保你保存了工作!
远程运行 notebook
如果你想在本地或者远程的机器上安装Jupyter Notebook,可以参考下面的两个文档。
安装:https://jupyter.org/install.html
运行:https://jupyter.readthedocs.io/en/latest/running.html#running
后台运行使用 jupyter notebook --allow-root > jupyter.log 2>&1 &
或者 nohup jupyter notebook --allow-root > jupyter.log 2>&1 &
。
用&
让命令后台运行, 并把标准输出写入 jupyter.log 中。nohup
表示no hang up, 就是不挂起, 于是这个命令执行后即使终端退出, 也不会停止运行.
Notebook 界面
Cell
新建的一个 notebook 之后,默认就会有一个 cell,也就是下图中蓝色的小框。
Cell 可以称为单元格。单元格是你编写和运行代码的地方。
工具栏
从左侧开始,工具栏上的其他控件是:
- 落伍的软盘符号,表示“保存”。请记得保存 notebook!
+
按钮用于创建新的单元格- 然后是用于剪切、复制和粘贴单元格的按钮。
- 运行、停止、重新启动内核
- 单元格类型:代码、Markdown、原始文本和标题
- 命令面板(见下文)
- 单元格工具栏,提供不同的单元格选项(例如将单元格用作幻灯片)
命令面板
小键盘符号代表命令面板。点击它会弹出一个带有搜索栏的面板,供你搜索不同的命令。这能切实帮助你加快工作速度,因为你无需使用鼠标翻查各个菜单。你只需打开命令面板,然后键入要执行的操作。
生成目录
conda install -c conda-forge jupyter_contrib_nbextensions
在 Nbexyensions 选项卡中开启 Table of Contents(2) 选项,即可在侧边栏生成目录。
快捷键
Notebook 提供了许多快捷键,我们可以使用shift + command + P
呼出命令行面板,在输入keyboard
就可以查看快捷键列表。
键入Esc
进入命令模式,即可使用这些快捷键。
Magic 关键字
Magic 关键字是可以在单元格中运行的特殊命令,能让你控制 notebook 本身或执行系统调用(例如更改目录)。例如,可以使用 %matplotlib
将 matplotlib 设置为以交互方式在 notebook 中工作。
Magic 命令的前面带有一个或两个百分号(%
或 %%
),分别对应行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。
注意:这些 Magic 关键字是特定于普通 Python 内核的关键字。如果使用其他内核,这些关键字很有可能无效。
代码计时
有时候,你可能要花些精力优化代码,让代码运行得更快。在此优化过程中,必须对代码的运行速度进行计时。可以使用 Magic 命令 timeit
测算单元格中代买运行时间和函数的运行时间。
测试整个单元格代码运行时间的时候可以添加%%timeit
|
|
|
|
测试整个某个函数代码运行时间的时候可以添加%timeit
|
|
|
|
|
|
在 notebook 中进行调试
对于 Python 内核,可以使用 Magic 命令 %pdb
开启交互式调试器。出错时,你能检查当前命名空间中的变量。
要详细了解 pdb
,请阅读此文档。要退出调试器,在提示符中输入 q
即可。
补充读物
Magic 命令还有很多,我只是介绍了你将会用得最多的一些命令。要了解更多信息,请查看此列表,它列出了所有可用的 Magic 命令。
转换 notebook
Notebook 只是扩展名为 .ipynb
的大型 JSON 文件。
|
|
由于 notebook 是 JSON 文件,因此,可以轻松将其转换为其他格式。Jupyter 附带了一个名为 nbconvert
的实用程序,可将 notebook 转换为 HTML、Markdown、幻灯片等格式。
例如,要将 notebook 转换为 HTML 文件,请在终端中使用
|
|
要将 notebook 与不使用 notebook 的其他人共享,转换为 HTML 很有用。而要在博客和其他接受 Markdown 格式化的文本编辑器中加入 notebook,Markdown 很合适。
像平常一样,要详细了解 nbconvert
,请阅读相关文档。
更好地使用
现在的技术趋势,则是彻底云端化了,例如Jupyter官方的Binder平台(介绍文 档:https://mybinder.readthedocs.io/en/latest/index.html)和Google提供的 Google Colab环境(介 绍:https://colab.research.google.com/notebooks/welcome.ipynb)。它们让Jupyter Notebook变得和石墨文档、Google Doc在线文档一样,在浏览器点开链接就能运行。
所以,现在当你用Binder打开一份GitHub上的Jupyter Notebook时,你不需要安装任何软件,直接在浏览器 打开一份代码,就能在云端运行。
比如这样一个GitHub文件。在Binder中,你只要输入其对应的GitHub Repository的名字或者URL,就能在 云端打开整个Repository,选择你需要的notebook。
另外,还有下面这些 Jupyter Notebook,可以作为实践的第一站。
第一个是Jupyter官方:https://mybinder.org/v2/gh/binder-examples/matplotlib-versions/mpl-v2.0/?filepath=matplotlib_versions_demo.ipynb
第二个是Google Research提供的Colab环境,尤其适合机器学习的实践应 用:https://colab.research.google.com/notebooks/basic_features_overview.ipynb