1.4 使用Jupyter Notebook
1.4.1 认识Jupyter Notebook
Jupyter Notebook主要用于数据分析,以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。如果在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于及时说明和解释。
提示:访问https://jupyter.org/try,可以在线试用Jupyter Notebook。
Jupyter Notebook组成部分如下。
(1)网页应用:基于网页形式,结合了编写说明文档、数学公式、交互计算和其他富媒体形式的工具。
(2)文档:Jupyter Notebook中所有交互计算、编写说明文档、数学公式、图片以及其他富媒体形式的输入和输出,都是以文档的形式体现的。这些文档可以保存为扩展名为.ipynb的JSON格式文件,不仅便于版本控制,也方便与他人共享。此外,文档还可以导出为HTML、LaTeX、PDF等格式。
Jupyter Notebook的主要特点如下。
➢ 编程时具有语法高亮、缩进、Tab补全的功能。
➢ 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
➢ 以富媒体格式展示计算结果。富媒体格式包括HTML、LaTeX、PNG、SVG等。
➢ 针对代码编写说明文档或语句时,支持Markdown语法。
➢ 支持使用LaTeX编写数学性说明。
1.4.2 安装Jupyter Notebook
安装Jupyter Notebook之前,必须先安装Python(3.3版本及以上,或2.7版本)。
1.使用Anaconda安装
最简单的途径是通过安装Anaconda来解决Jupyter Notebook的安装问题,因为Anaconda已经自动安装了Jupter Notebook及其他工具,以及Python中超过180个科学包及其依赖项。
如果安装的是Miniconda,或者其他原因导致的没有自动安装Jupter Notebook,那么在终端中输入以下命令安装:
conda install jupyter notebook
2.使用pip命令安装
首先,在终端命令行中把pip升级到最新版本:
pip install --upgrade pip
然后,安装Jupyter Notebook:
pip install jupyter
1.4.3 启动Jupyter Notebook
打开命令行窗口,在终端中输入以下命令:
jupyter notebook
执行该命令之后,将在终端中显示一系列Notebook的服务器信息,同时浏览器将会自动启动Jupyter Notebook。
注意:之后在Jupyter Notebook中的所有操作,都必须保持终端不要关闭。因为一旦关闭终端,就会断开与本地服务器的连接,将无法在Jupyter Notebook中进行其他操作。
浏览器地址栏中默认会显示:http://localhost:8888。其中,"localhost"指的是本机,"8888"则是端口号。
(1)如果同时启动多个Jupyter Notebook,由于默认端口"8888"被占用,因此,地址栏中的数字将从"8888"起,每多启动一个Jupyter Notebook数字就加1,如"8889"和"8890"等。
(2)如果想自定义端口号启动Jupyter Notebook,可以在终端中输入以下命令:
jupyter notebook --port <port_number>
其中,<port_number>是自定义端口号,直接以数字的形式写在命令中,数字两边不加尖括号<>。如jupyter notebook --port 9999,即在端口号为9999的服务器启动Jupyter Notebook。
(3)如果只想启动Jupyter Notebook的服务器,但不打算立刻进入主页面,那么无须立刻启动浏览器。在终端中输入如下命令。
jupyter notebook --no-browser
此时,将会在终端显示启动的服务器信息,并在服务器启动之后,显示打开浏览器页面的链接。当需要启动浏览器页面时,只需要复制链接,并粘贴在浏览器的地址栏中,按Enter键即可转到Jupyter Notebook页面。
(4)如果安装了Anaconda,可以在开始菜单中选择Anaconda3→Jupyter Notebook快捷菜单快速启动。
当执行完启动命令之后,浏览器将会进入Notebook的主页面,如图1.20所示。
图1.20 Notebook的主页面
如果想修改主页面内的文件夹,可以在终端中执行cd命令,切换到指定文件夹,然后再输入jupyter notebook命令,启动Notebook。
1.4.4 在Jupyter Notebook中编写代码
在Notebook的主页面可以看到有3个Tab页面:Files、Running和Clusters。简单说明如下:
1.Files
Files页面是用于管理和创建文件相关的类目。对于现有的文件,可以通过勾选文件的方式,对选中文件进行复制、重命名、移动、下载、查看、编辑和删除的操作。
同时,也可以根据需要,在New下拉列表中选择想要创建文件的环境。例如,创建"ipynb"格式的笔记本、"txt"格式的文档、终端或文件夹。
2.Running
Running页面主要展示的是当前正在运行的终端和"ipynb"格式的笔记本。若想要关闭已经打开的终端和"ipynb"格式的笔记本,仅仅关闭其页面是无法彻底退出程序的,还需要在Running页面单击其对应的"Shutdown"。
3.Clusters
Clusters类目现在已由IPython parallel对接,且由于现阶段使用频率较低,在此不做详细说明,想要了解更多可以访问IPython parallel的官方网站。
下面重点介绍如何在Files页面编写代码。
在主页面单击New按钮,从弹出的下拉菜单中选择Python 3,新建Untitled.ipynb文件,如图1.21所示。
图1.21展示的是Notebook的基本结构和功能。
(1)第一行为标题行,显示文件名称,以及时间和操作状态。
(2)第二行为菜单栏,从左到右分别为:File(文件)、Edit(编辑)、View(视图)、Insert(插入)、Cell(单元格)、Kernel(内核)、Widgets(组件)、Help(帮助)。菜单栏涵盖了笔记本的所有功能,即便是工具栏的功能,也都可以在菜单栏的类目里找到。然而,并不是所有功能都是常用的,如Widgets。
(3)第三行为工具栏,从左到右分别为:保存、添加单元格、删除单元格、复制单元格、粘贴单元格、上移单元格、下移单元格、运行代码、中断内核(停止运行)、重启内核、重启内核并运行整个代码、单元格状态、打开命令配置。
Kernel主要是对内核的操作,如中断、重启、连接、关闭、切换内核等,由于在创建Notebook时已经选择了内核,因此,切换内核的操作便于在使用Notebook时,可以方便切换到想要的内核环境中去。由于其他的功能相对比较常规,根据提示简单尝试使用Notebook的功能已经非常便捷,因此不再做详细讲解。
单元格的状态包括Code、Markdown、Heading、Raw NBconvert。其中,最常用的是前两个,分别是代码状态,Markdown编写状态。Jupyter Notebook已经取消了Heading状态,即标题单元格。取而代之的是Markdown的一级至六级标题。而Raw NBconvert目前极少用到。
下面在单元格中输入如下代码块,然后运行代码,绘制两条曲线,效果如图1.22所示。
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 10, 100) plt.plot(x, np.sin(x)) plt.plot(x, np.cos(x)) plt.show()
图1.21 新建Untitled.ipynb文件
图1.22 编写并运行代码