IPython Notebook
IPython Notebook 是一种新兴的交互式数据分析与记录工具,它定义了一种全新的计算文件格式,其中包含了代码,代码说明以及每一步的计算输出(数值或图片等),也就是说这一个文件完整记录了计算过程中的所有相关信息。此外,该文件还可以嵌入网络视频,图片,LaTeX公式等众多副文本格式,实为交互计算,记录思维,传播思想的好帮手。
IPython Notebook 既是一个交互计算平台,又是一个记录计算过程的「笔记本」。它由服务端和客户端两部分组成,其中服务端负责代码的解释与计算,而客户端负责与用户进行交互。 服务端可以运行在本机也可以运行在远程服务器,包含负责运算的 IPython kernel (与QT Console的 kernel 相同) 以及一个 HTTP/S 服务器 (Tornado)。 而客户端则是一个指向服务端地址的浏览器页面,负责接受用户的输入并负责渲染输出。
千万不要小看了这个页面,首先,它几乎涵括了 QT Console 具有的全部交互式功能,如代码高亮,自动补全,实时帮助,内嵌显示绘图结果等;其次,计算过程及结果可以方便地保存为多种格式,如默认的 JSON 格式,Python 脚本以及 PDF 等;此外,借助Markdown及MathJax,用户可以在计算过程中插入详尽细致的描述,甚至以描述为主,计算为辅,从而将它当作科技类文章写作的工具。
正是由于 IPython Notebook 的灵活易用,方便传播等特点,它现已被用于可重复数据分析,课程教学,博客写作等众多领域。 当然它还可以应用在更多更广的现实场景中,那些就等着你来探索了。 下文就将介绍如何安装及使用 IPyhton Notebook,并以实例来介绍它的强大特性。
安装 Notebook
安装方案:
- 安装某个 Python 发行套件。
- 采用系统的包管理程序安装。
- 从源代码编译安装。
推荐选用某个 Python 发行套件,比如Enthough Python Distribution (EPD)或Python(x,y)。 这些发行套件中都包含了常用的 Python 科学计算库,如 Numpy,Scipy,IPython,Matplotlib,Pandas 等,而且都是一键安装,非常方便快捷,省去了从源码安装的众多烦恼。
下面介绍在 Linux 下安装 EPD。
- 从 EPD网站下载免费版或学术版1,之后运行下载好的文件:
bash ped-7.3.2-rh5-x86_64.sh -p /path/to/your/install_dir
一路回车即可。 - 安装完成后,须将 EPD 的 bin 目录添加至环境变量 PATH 中:
PATH=/path/to/epd/bin:$PATH
export PATH - 如果不想安装套件,可以用系统自带的管理程序单独安装 IPython,比如在 Arch 下:
pacman -S ipython
除以上两种方法,还可以选择从源代码安装,但此方案比较复杂,需要考虑 IPython 的复杂依赖关系,如 Numpy,Scipy,Qt 等。 这条方案需慎重选择,因为光是 Numpy,Scipy 的安装就会让人焦头烂额
使用 Notebook
根据 IPython Notebook 服务端所在位置,可分为本地运行和远程运行两种情景。
本地运行
此种情形下,数据和计算资源均在本地机器上,需要首先在本地安装好 IPython,之后运行服务端:
ipython notebook
或直接进入 pylab 模式:
ipython notebook --pylab
如果想将 Matplotlib 生成的图片潜入网页内显示,则使用:
ipython notebook --pylab inline
上面的命令会在本机开启 IPython Notebook 服务端,并在系统默认浏览器内打开一个指向服务端的页面,该页面显示了所有保存的 Notebook。 如需新建 Notebook,可以点击New Notebook按钮,或着将本地的文件直接拖入空白处,其中该文件即可以是编写好的 Python 程序文件 (.py),也可以是之前运行过的 Notebook 文件 (.ipynb)。
在新打开的 Notebook 页面中,就可以进行各项交互式计算任务。Notebook 由一个个的执行单元组成,每个单元可以是一段 Python 代码,也可以是一段描述性文本,这些文本可以使用 Markdown 语法,也可以插入LaTeX表达式,或者直接使用 HTML。 在单元上可以方便地进行删除,复制,粘贴,剪切,插入,分割,合并等操作。
单元需要被运行才能产生实际的运算,其中代码单元内的语句被输入服务端内的 kernerl 进行运算,并从 kernel 内获得输出结果显示在单元内,文本单元则通过 Markdown 渲染器渲染成相应的网页格式展现
在进行了一系列计算操作之后,会希望将当前的工作保存,这时可以选择Save或者Download,它们都可以按 .ipynb 或 .py 格式保存 Notebook。 其中Save默认为 .ipynb 格式,如果希望将其改为 Python 可执行的 .py 格式, 可以在启动时加入--script后缀:
ipython notebook --script
保存
Save和Download的不同在于Save将文件存储在服务端所在的存储位置,而Download则是存储在浏览器所在的存储位置。因此,当服务端运行在远程服务器上时,如果希望将 Notebook 存至本地,应使用Download。
此外,还可以按网页或者 PDF 格式将当前的计算过程保存,缺陷是按这种方式进行保存下来的 Notebook 无法重新被载入运行。保存方法为点击Print View,这里会打开一个当前 Notebook 的纯网页版本,这时可以将其又键另存为网页保存,或者打印成 PDF 文件。
远程运行
上文已提到多次可以将服务端放置远程服务器运行,这样有多个好处:一是可以不受物理空间的限制,在任何可以连接到服务器的场所办公,二是在客户端无需安装任何计算相关的软件,只需一个浏览器即可,三是可以利用服务器高效庞大的计算资源,实现高性能计算。
IPython Notebook 可以方便地部署在似有服务器或流行的云计算平台 Amazon EC2、Windowns Azure 上,下面以私有服务器为例,介绍如何与远程服务器实现交互计算。
首先创建一个名为nbserver的配置文件3:
ipython profile create nbserver
使用 IPython Notebook 自定义的 .ipynb 文件可以方便地将自己的计算过程与他人共享,但是必须要求对方也装有 IPython Notebook 才能查看。为了突破这一限制,IPython 官方建立了IPython Notebook Viewer网站,帮助在线渲染 .ipynb 文件。
用 IPython Notebook 写博客
借助于 Ipython Notebook Viewer 提供的服务,只需下面一行代码,即可在博客中嵌入显示 Notebook:不足之处是需要手工设置宽度与高度以符合页面大小。
如果对嵌入式的显示方法不满,可以利用nbconvert工具将 .ipynb 文件转换成 html 或 Markdown 格式,再放入网页中,