在介绍 Jupyter Notebook 以前,让咱们先来看一个概念:文学编程 ( Literate programming ),这是由 Donald Knuth 提出的编程方法。传统的结构化编程,人们须要按计算机的逻辑顺序来编写代码;与此相反,文学编程则可让人们按照本身的思惟逻辑来开发程序。html
简单来讲,文学编程的读者不是机器,而是人。 咱们从写出让机器读懂的代码,过渡到向人们解说如何让机器实现咱们的想法,其中除了代码,更多的是叙述性的文字、图表等内容。这么一看,这不正是数据分析人员所须要的编码风格么?不只要当好一个程序员,还得当好一个做家。那么 Jupyter Notebook 就是不可或缺的一款集编程和写做于一体的效率工具。python
也许说到 Jupyter 你会以为陌生,但想必你或多或少听过鼎鼎大名的 IPython。其实Jupyter 脱胎于 IPython 项目,IPython 顾名思义,是专一于 Python 的项目,但随着项目发展壮大,已经不只仅局限于 Python 这一种编程语言了。Jupyter 的名字就很好地释义了这一发展过程,它是 Julia、Python 以及 R 语言的组合,字形相近于木星(Jupiter),并且如今支持的语言也远超这三种了。git
如下列举了 Jupyter Notebook 的众多优势:程序员
极其适合数据分析
想象一下以下混乱的场景:你在终端中运行程序,可视化结果却显示在另外一个窗口中,包含函数和类的脚本存在其余文档中,更可恶的是你还需另外写一份说明文档来解释程序如何执行以及结果如何。此时 Jupyter Notebook 从天而降,将全部内容收归一处,你是否是顿觉灵台清明,思路更加清晰了呢?github
支持多语言
也许你习惯使用 R 语言来作数据分析,或者是想用学术界经常使用的 MATLAB 和 Mathematica,这些都不成问题,只要安装相对应的核(kernel)便可。这里列出了 Jupyter 支持的全部语言,供您参考。编程
分享便捷
支持以网页的形式分享,GitHub 中自然支持 Notebook 展现,也能够经过 nbviewer 分享你的文档。固然也支持导出成 HTML、Markdown 、PDF 等多种格式的文档。浏览器
远程运行
在任何地点均可以经过网络连接远程服务器来实现运算,这里给出一个远程运行的例子,能够体验一下 Jupyter Notebook。ruby
交互式展示
不只能够输出图片、视频、数学公式,甚至能够呈现一些互动的可视化内容,好比能够缩放的地图或者是能够旋转的三维模型。这就须要交互式插件(Interactive widgets)来支持,更多内容请参考这里。bash
对于初学者,最简单的方法是安装 Anaconda,由于它自带了 Jupyter Notebook。若是想进一步了解 Anaconda 的使用方法,可参考个人上一篇文章《致Python初学者们 - Anaconda入门使用指南》。服务器
对于有经验的同窗,天然使用命令行最为便捷。
若是在 conda 环境中,可使用以下命令安装:
conda install jupyter notebook
或者直接经过 pip 安装:
pip install jupyter notebook
更多的安装说明请参考官网。
若是使用 Anaconda,能够在其 Navigator 图形界面中点击打开 Notebook。可是最快捷的方法仍是在命令行中输入:
jupyter notebook
此时你的 Web 浏览器被自动打开,显示文件目录。经过点击右上角的 new
建立新文档。
而关闭 notebook 文档能够经过选择文件名前的复选框后,点击 Shutdown
按钮实现。若是要关闭整个服务,则在原来的终端中按 Control + C
两次。
Notebook 文档是由一系列单元(Cell)构成,主要有两种形式的单元:
代码单元:这里是你编写代码的地方,经过按 Shift + Enter
运行代码,其结果显示在本单元下方。代码单元左边有 In [1]:
这样的序列标记,方便人们查看代码的执行次序。
Markdown 单元:在这里对文本进行编辑,采用 markdown 的语法规范,能够设置文本格式、插入连接、图片甚至数学公式。一样使用 Shift + Enter
运行 markdown 单元来显示格式化的文本。
相似于 Linux 的 Vim 编辑器,在 notebook 中也有两种模式:
编辑模式:编辑文本和代码。选中单元并按 Enter
键进入编辑模式,此时单元左侧显示绿色竖线。
命令模式:用于执行键盘输入的快捷命令。经过 Esc
键进入命令模式,此时单元左侧显示蓝色竖线。
若是要使用快捷键,首先按 Esc
键进入命令模式,而后按相应的键实现对文档的操做。好比切换成代码单元(Y
)或 markdown 单元(M
),或者在本单元的下方增长一单元(B
)。查看全部快捷命令能够按H
。
尽管一开始须要花费一些学习成本,但熟练使用快捷键将大大提升工做效率。试想你在键盘上十指如飞时,若是还须要经过鼠标来操做文档,是否是很影响思考速度呢?
若是你曾作过严肃的学术研究,必定对 LaTeX 并不陌生,这简直是写科研论文的必备工具,不但能实现严格的文档排版,并且能编辑复杂的数学公式。在 Jupyter Notebook 的 markdown 单元中咱们也可使用 LaTeX 的语法来插入数学公式。
在文本行中插入数学公式,使用一对 $
符号,好比质能方程 $E = mc^2$
。若是要插入一个数学区块,则使用一对 $$
符号。好比下面公式表示 z=x/y:
$$ z = \frac{x}{y} $$
如何在 notebook 中使用 LaTeX,可进一步参考 A Primer on Using LaTeX in Jupyter Notebooks 这篇文章。
既然Jupyter Notebook 擅长展现数据分析的过程,除了经过网页形式分享外,固然也能够将其制做成幻灯片的形式。这里有一个幻灯片示例供参考,其制做风格简洁明晰。
那么如何用 Jupyter Notebook 制做幻灯片呢?首先在 notebook 的菜单栏选择 View > Cell Toolbar > Slideshow,这时在文档的每一个单元右上角显示了 Slide Type 的选项。经过设置不一样的类型,来控制幻灯片的格式。有以下5中类型:
当编写好了幻灯片形式的 notebook,如何来演示呢?这时须要使用 nbconvert
:
jupyter nbconvert notebook.ipynb --to slides --post serve
在命令行中敲入上述代码后,浏览器会自动打开相应的幻灯片。
魔术关键字(magic keywords),正如其名,是用于控制 notebook 的特殊的命令。它们运行在代码单元中,以 %
或者 %%
开头,前者控制一行,后者控制整个单元。
好比,要获得代码运行的时间,则可使用 %timeit
;若是要在文档中显示 matplotlib 包生成的图形,则使用 % matplotlib inline
;若是要作代码调试,则使用 %pdb
。但注意这些命令大可能是在Python kernel 中适用的,其余 kernel 大多不适用。有许许多多的魔术关键字可使用,更详细的清单请参考 Built-in magic commands 。
本文给出了许多扩展连接供参考,这里汇总以下,供您参考: