原文出处: 鱼心fishstar 在数据分析的道路上,你一定曾有过为新发现而激动不已的时刻,此时你急于将自己的发现告诉大家,却遇到了这样的问题:如何将我的分析过程清晰地表述出来呢? 为了能与同行们有效沟通,你需要重现整个分析过程,并将说明文字、代码、图表、公式、结论都整合在一个文档中。显然传统的文本编辑工具并不能满足这一需求,所以这儿隆重推荐一款神器 Jupyter Notebook,不仅能在文档中执行代码,还能以网页形式分享。 下图简单展示了Jupyter Notebook 文档的样式,更多示例可在 nbviewer 中找到。
本文将按如下内容来展开:
一、Jupyter Notebook 介绍文学编程在介绍 Jupyter Notebook 之前,让我们先来看一个概念:文学编程 ( Literate programming ),这是由 Donald Knuth 提出的编程方法。传统的结构化编程,人们需要按计算机的逻辑顺序来编写代码;与此相反,文学编程则可以让人们按照自己的思维逻辑来开发程序。 简单来说,文学编程的读者不是机器,而是人。 我们从写出让机器读懂的代码,过渡到向人们解说如何让机器实现我们的想法,其中除了代码,更多的是叙述性的文字、图表等内容。这么一看,这不正是数据分析人员所需要的编码风格么?不仅要当好一个程序员,还得当好一个作家。那么 Jupyter Notebook 就是不可或缺的一款集编程和写作于一体的效率工具。 历史传承也许说到 Jupyter 你会觉得陌生,但想必你或多或少听过鼎鼎大名的 IPython。其实Jupyter 脱胎于 IPython 项目,IPython 顾名思义,是专注于 Python 的项目,但随着项目发展壮大,已经不仅仅局限于 Python 这一种编程语言了。Jupyter 的名字就很好地释义了这一发展过程,它是 Julia、Python 以及 R 语言的组合,字形相近于木星(Jupiter),而且现在支持的语言也远超这三种了。 优点以下列举了 Jupyter Notebook 的众多优点:
二、Jupyter Notebook 使用入门安装对于初学者,最简单的方法是安装 Anaconda,因为它自带了 Jupyter Notebook。如果想进一步了解 Anaconda 的使用方法,可参考我的上一篇文章《致Python初学者们 – Anaconda入门使用指南》。 对于有经验的同学,自然使用命令行最为便捷。 如果在 conda 环境中,可以使用如下命令安装:
或者直接通过 pip 安装:
更多的安装说明请参考官网。 运行如果使用 Anaconda,可以在其 Navigator 图形界面中点击打开 Notebook。但是最快捷的方法还是在命令行中输入:
此时你的 Web 浏览器被自动打开,显示文件目录。通过点击右上角的
而关闭 notebook 文档可以通过选择文件名前的复选框后,点击
界面Notebook 文档是由一系列单元(Cell)构成,主要有两种形式的单元:
类似于 Linux 的 Vim 编辑器,在 notebook 中也有两种模式:
如果要使用快捷键,首先按 尽管一开始需要花费一些学习成本,但熟练使用快捷键将大大提高工作效率。试想你在键盘上十指如飞时,如果还需要通过鼠标来操作文档,是不是很影响思考速度呢? 三、Jupyter Notebook 进阶功能数学公式编辑如果你曾做过严肃的学术研究,一定对 LaTeX 并不陌生,这简直是写科研论文的必备工具,不但能实现严格的文档排版,而且能编辑复杂的数学公式。在 Jupyter Notebook 的 markdown 单元中我们也可以使用 LaTeX 的语法来插入数学公式。 在文本行中插入数学公式,使用一对
如何在 notebook 中使用 LaTeX,可进一步参考 A Primer on Using LaTeX in Jupyter Notebooks 这篇文章。 幻灯片制作既然Jupyter Notebook 擅长展示数据分析的过程,除了通过网页形式分享外,当然也可以将其制作成幻灯片的形式。这里有一个幻灯片示例供参考,其制作风格简洁明晰。 那么如何用 Jupyter Notebook 制作幻灯片呢?首先在 notebook 的菜单栏选择 View > Cell Toolbar > Slideshow,这时在文档的每个单元右上角显示了 Slide Type 的选项。通过设置不同的类型,来控制幻灯片的格式。有如下5中类型:
当编写好了幻灯片形式的 notebook,如何来演示呢?这时需要使用
在命令行中敲入上述代码后,浏览器会自动打开相应的幻灯片。 魔术关键字魔术关键字(magic keywords),正如其名,是用于控制 notebook 的特殊的命令。它们运行在代码单元中,以 比如,要得到代码运行的时间,则可以使用 相关资源汇总本文给出了许多扩展链接供参考,这里汇总如下,供您参考:
|
|