Jupyter notebook

Jupyter notebook

Jupyter notebook是 Web 文档,能让你将文本、图像和代码全部组合到一个文档中。它已经成为数据分析的标准环境。notebook 源自 2011 年的 IPython 项目,之后迅速流行起来。在本课程的第二节课中,你将获得使用 notebook 进行分析工作的经验。

即如何使用Jupyternotebook。notebook 是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。


Notebook 已迅速成为处理数据的必备工具。其已知用途包括数据清理和探索、可视化、机器学习和大数据分析。我为我的个人博客创建了一个 notebook 示例,它展示了 notebook 的许多特点。这项工作通常在终端中完成,也即使用普通的 Python shell 或 IPython 完成。可视化在单独的窗口中进行,而文字资料以及各种函数和类脚本包含在独立的文档中。但是,notebook 能将这一切集中到一处,让用户一目了然。

GitHub 上面也会自动提供 notebook。借助此出色的功能,你可以轻松共享工作。http://nbviewer.jupyter.org/也会提供 GitHub 代码库中的 notebook 或存储在其他地方的 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。当前架构与之相似,具体见下图。



Jupyter notebook_第1张图片


中心点是 notebook 服务器。你通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。你在 Web 应用中编写的代码通过该服务器发送给内核。内核运行代码并将代码发送回该服务器,之后,任何输出都会返回到浏览器中。保存 notebook 时,它作为 JSON 文件(文件扩展名为.ipynb)写入到该服务器中。

此架构的一个优点是,内核无需运行 Python。由于 notebook 和内核分开,因此可以在两者之间发送任何语言的代码。例如,早期的两个非 Python 内核分别用于R语言和Julia语言。使用 R 内核时,用 R 编写的代码将发送给执行该代码的 R 内核,这与在 Python 内核上运行 Python 代码完全一样。IPython notebook 已被改名,因为 notebook 变得与编程语言无关。新的名称JupyterJulia、Python 和R组合而成。如果有兴趣,不妨看看可用内核的列表。

另一个优点是,可以在任何地方运行服务器,并且可通过互联网访问服务器。通常,你会在存储所有数据和 notebook 文件的自有计算机上运行服务器。但是,你也可以在远程计算机或云实例(如 Amazon 的 EC2)上设置服务器。之后,可以在全球任何地方通过浏览器访问 notebook。



启动 notebook 服务器

要启动 notebook 服务器,请在终端或控制台中输入jupyter notebook。服务器会在你运行此命令的目录中启动。这意味着任何 notebook 文件都会保存在该目录中。你通常希望在 notebook 所在的目录中启动服务器。不过,你可以在文件系统中导航到 notebook 所在的位置。

运行此命令时(请自己试一下!),服务器主页会在浏览器中打开。默认情况下,notebook 服务器的运行地址是http://localhost:8888。如果你不熟悉该地址,其含义是:localhost表示你的计算机,而8888是服务器的通信端口。只要服务器仍在运行,你随时都能通过在浏览器中输入http://localhost:8888返回到服务器。

如果启动其他服务器,新服务器会尝试使用端口8888,但由于此端口已被占用,因此新服务器会在端口8889上运行。之后,可以通过http://localhost:8889连接到新服务器。每台额外的 notebook 服务器都会像这样增大端口号。

你可能感兴趣的:(Jupyter notebook)