Jupyter notebook 是一种 Web 文档,能让你将文本、图像和代码全部组合到一个文档中。它事实上已经成为数据分析的标准环境。Jupyter notebook 源自 2011 年的 IPython 项目,之后迅速流行起来。
Jupyter notebook 是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。
Jupyter Notebook 已迅速成为处理数据的必备工具。其用途包括数据清理和探索、可视化、机器学习和大数据分析。
文学化编程
notebook 是 Donald Knuth 在 1984 年提出的文字表达化编程的一种形式。在文字表达化编程中,直接在代码旁写出叙述性文档,而不是另外编写单独的文档。用 Donald Knuth 的话来说:
让我们集中精力向人们解释我们希望计算机做什么,而不是指示计算机做什么。
归根到底,代码是写给人看到,不是写给计算机看的。notebook 恰恰提供了这种能力。你能够直接在代码旁写出叙述性文档。这不仅对阅读 notebook 的人很有用,而且对你将来回头分析代码也很有用。
说点题外话:最近,文字表达化编程这个概念已经发展成为一门完整的编程语言,即 Eve。
notebook 如何工作
Jupyter notebook 源自 Fernando Perez 发起的 IPython 项目。IPython 是一种交互式 shell,与普通的 Python shell 相似,但具有一些很好的功能(例如语法高亮显示和代码补全)。最初,notebook 的工作方式是,将来自 Web 应用(你在浏览器中看到的 notebook)的消息发送给 IPython 内核(在后台运行的 IPython 应用程序)。内核执行代码,然后将结果发送回 notebook。
核心是 notebook 的服务器。你通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。你在 Web 应用中编写的代码通过该服务器发送给内核,内核运行代码,并将结果发送回该服务器。之后,任何输出都会返回到浏览器中。保存 notebook 时,它将作为 JSON 文件(文件扩展名为 .ipynb
)写入到该服务器中。
此架构的一个优点是,内核无需运行 Python。由于 notebook 和内核分开,因此可以在两者之间发送任何语言的代码。例如,早期的两个非 Python 内核分别是 R 语言和 Julia 语言。使用 R 内核时,用 R 编写的代码将发送给执行该代码的 R 内核,这与在 Python 内核上运行 Python 代码完全一样。IPython notebook 已被改名,因为 notebook 变得与编程语言无关。新的名称 Jupyter 由 Julia、Python 和 R 组合而成。如果有兴趣,不妨看看可用内核的列表。
另一个优点是,你可以在任何地方运行 notebook 服务器,并且可通过互联网访问服务器。通常,你会在存储所有数据和 notebook 文件的自有计算机上运行服务器。但是,你也可以在远程计算机或云实例(如 Amazon 的 EC2)上设置服务器。之后,你就可以在世界上任何地方通过浏览器访问 notebook。
安装 Jupyter notebook
目前,安装 Jupyter 的最简单方法是使用 Anaconda。该发行版附带了 Jupyter notebook。你能够在默认环境下使用 notebook。
要在 conda 环境中安装 Jupyter notebook,请使用 conda install jupyter notebook。
也可以通过 pip 使用 pip install jupyter notebook 来获得 Jupyter notebook。
启动 notebook 服务器
要启动 notebook 服务器,请在终端或控制台中输入 jupyter notebook
。服务器会在你运行此命令的目录中启动。这意味着任何 notebook 文件都会保存在该目录下。你通常希望在 notebook 文件所在的目录中启动服务器,不过你也可以在文件系统中导航到 notebook 文件所在的位置。
运行此命令时,服务器主页会在浏览器中打开。默认情况下,notebook 服务器的运行地址是 http://localhost:8888
。该地址的含义是:localhost
表示你的计算机,而 8888
是服务器的通信端口。只要 notebook 服务器仍在运行,你随时都能通过在浏览器中输入 http://localhost:8888 返回到 web 页面中。
如果同时启动了另一个 notebook 服务器,新服务器会尝试使用端口 8888
,但由于此端口已被占用,因此新服务器会在端口 8889
上运行。之后,你可以通过 http://localhost:8889
连接到新服务器。每个额外的 notebook 服务器都会像这样增大端口号。
在右侧,你可以点击“New”(新建),创建新的 notebook、文本文件、文件夹或终端。“Notebooks”下的列表显示了你已安装的内核。
如果在 conda 环境中运行 Jupyter notebook 服务器,则你还能选择环境中任何其他的内核(见下图)。要创建新的 notebook,请点击你要使用的内核。
关闭 Jupyter
通过在服务器主页上选中 notebook 旁边的复选框,然后点击“Shutdown”(关闭),你就可以关闭各个 notebook。但是,在这样做之前,请确保你保存了工作!否则,在你上次保存后所做的任何更改都会丢失。下次运行 notebook 时,你还需要重新运行代码。
通过在终端中按两次 Ctrl + C,可以关闭整个服务器。再次提醒,这会立即关闭所有运行中的 notebook,因此,请确保你保存了工作!
网友评论