最近开始学习 Python,发现一个非常有用的 Python 交互式编辑器 Jupyter Notebook,非常容易上手。
一、什么是 jupyter1.1 简介jupyter notebook 是一种 Web 应用,能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中。它可以直接在代码旁写出叙述性文档,而不是另外编写单独的文档。也就是它可以能将代码、文档等这一切集中到一处,让用户一目了然。
Jupyter 这个名字是它要服务的三种语言的缩写:Julia,PYThon 和 R,这个名字与“木星(jupiter)”谐音。Jupyter Notebook 已迅速成为数据分析,机器学习的必备工具。因为它可以让数据分析师集中精力向用户解释整个分析过程。我们可以通过 Jupyter notebook 写出了我们的学习笔记。但是 jupyter 远远不止支持上面的三种语言,目前能够使用的语言他基本上都能支持,包括 C、C++、C#,java、Go 等等。
jupyter notebook 和 ipython 其实都是来自同一个产品族,它的前身叫做 ipython notebook ,至于后面为什么更名这不得而知,这也就是为什么很多文章总是默认将 ipython 就说成是 ipython notebook 的原因了。但是既然已经更名了,我们还是区别对待 ipython 和 jupyter notebook。
1.2 jupyter 的作用前面说了一大堆,也不清楚jupyter到底有啥好的啊,到底有一些什么功能呢?
在介绍 Jupyter Notebook 的功能之前,让我们先来看一个概念:文学编程 ( Literate programming ),这是由 Donald Knuth 提出的编程方法。传统的结构化编程,人们需要按计算机的逻辑顺序来编写代码;与此相反,文学编程则可以让人们按照自己的思维逻辑来开发程序。
简单来说,文学编程的读者不是机器,而是人。我们从写出让机器读懂的代码,过渡到向人们解说如何让机器实现我们的想法,其中除了代码,更多的是叙述性的文字、图表等内容。这么一看,这不正是数据分析人员所需要的编码风格么?不仅要当好一个程序员,还得当好一个作家。那么 Jupyter Notebook 就是不可或缺的一款集编程和写作于一体的效率工具。
以下列举了 Jupyter Notebook 的众多优点:
极其适合数据分析,想象一下如下混乱的场景:你在终端中运行程序,可视化结果却显示在另一个窗口中,包含函数和类的脚本存在其他文档中,更可恶的是你还需另外写一份说明文档来解释程序如何执行以及结果如何。此时 Jupyter Notebook 从天而降,将所有内容收归一处,你是不是顿觉灵台清明,思路更加清晰了呢?支持多语言,也许你习惯使用 R 语言来做数据分析,或者是想用学术界常用的 MATLAB 和 Mathematica,这些都不成问题,只要安装相对应的核(kernel)即可。这里列出了 Jupyter 支持的所有语言,供您参考。分享便捷,支持以网页的形式分享,GitHub 中天然支持 Notebook 展示,也可以通过 nbviewer 分享你的文档。当然也支持导出成 HTML、Markdown 、PDF 等多种格式的文档。远程运行,在任何地点都可以通过网络链接远程服务器来实现运算交互式展现,不仅可以输出图片、视频、数学公式,甚至可以呈现一些互动的可视化内容,比如可以缩放的地图或者是可以旋转的三维模型。这就需要交互式插件(Interactive widgets)来支持,更多内容请参考这里。常见的一些 jupyter 高级应用如:数学公式编辑、幻灯片制作、魔术关键字
1.3 安装与运行使用 pip 安装
可以使用Python的包管理器 pip 来安装 Jupyter。如果已经安装了Python 3:
pip install jupyter # 直接安装,默认从 https://pypi.python.org/simple 官网上下载安装,由于服务器在国外,所以下载安装速度较慢
python -m pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple # 使用国内镜像源安装,下载安装速度较快
运行
成功安装 Jupyter Notebook 后,在Terminal (Mac / Linux)或Command Prompt(Windows)中运行以下命令就可打开 Jupyter Notebook
jupyter notebook
执行上面命令之后, Jupyter Notebook 将在你的默认浏览器中打开,网址为:http://localhost:8888/tree
二、界面详解2.1 主面板(Notebook Dashboard)打开 Notebook,可以看到主面板。在菜单栏中有Files(文件)、Running(运行)、Clusters(集群)、三个选项。
Files:基本上列出了所有的文件,Running:显示你当前已经打开的终端和Notebooks,Clusters :由 IPython parallel 包提供,用于并行计算。用到最多的是 Files,我们可以在这里完成 notebook 的新建、重命名、复制等操作。Files 界面的左上角有个过滤器,用于快速选择指定类型的文件。
在 Running 中,可以看到正在运行的 notebook,我们可以选择结束正在运行的程序。
要打开一个新的 Jupyter Notebook,请单击页面右侧的“New”选项卡。在这里,你有四个选项可供选择:
Python 3:创建一个支持 Python 3 解释器的 notebook 文件,就可以打开一个新的页面,进入Python编程环境。Text File (文本文件):创建一个空白的文档,输入你喜欢的任何字母,单词和数字。基本上是一个文本编辑器。你也可以选择一种语言(支持非常多的语言),然后用该语言来写一个脚本。你还可以查找和替换文件中的单词。Folder (文件夹):创建文件夹Terminal (终端):与你的 Mac 电脑或 Linux 电脑上的终端完全相同(或者 Windows 上的 cmd ),让你在Web浏览器中使用终端会话。2.2 编辑界面从“New”选项中选择 "Python 3" 选项,进入编辑界面。你会看到如下的截图:
一个 notebook 的编辑界面主要由四部分组成:名称、菜单栏、工具条以及单元(Cell),如下图所示:
在这里,我们可以修改notebook的名字,直接点击当前名称,弹出对话框进行修改:
在下拉菜单中(如上所示),你有四个选项:
代码(Code):这是你输入代码的地方Markdown :这是你输入文本的地方。你可以在运行代码后添加结论,添加注释等。原生 NBConvert(Raw NBConvert) :这是一个命令行工具,可将你的笔记本转换为另一种格式(如 HTML)标题(Heading) :你可以将标题添加到单独的小节并使你的 Notebook 看起来干净整洁。这个选项现在已经集成到 Markdown 选项中。添加一个“##”,以确保在你之后输入的内容将被视为标题。2.3 菜单栏选项全解说菜单栏中有 File、Edit、View、Insert、Cell、Kernel、Widgets、Help 等功能,下面逐一介绍。
FileEditViewInsertCellKernelwidgetsHelp2.4 工具条工具条中的功能基本上在菜单中都可以实现,这里是为了能更快捷的操作,将一些常用按钮放了出来。下图是对各按钮的解释。
2.5 单元(Cell)在单元中我们可以编辑文字、编写代码、绘制图片等等。
两种模式与快捷键对于 Notebook 中的单元,有两种模式:命令模式(Command Mode)与编辑模式(Edit Mode),在不同模式下我们可以进行不同的操作。
编辑模式(Edit Mode):在编辑模式下,右上角出现一只铅笔的图标,单元左侧边框线呈现出绿色,点Esc键或运行单元格(ctrl-enter)切换回命令模式。命令模式(Command Mode):在命令模式下,铅笔图标消失,单元左侧边框线呈现蓝色,按Enter键或者双击cell变为编辑状态。命令模式下的快捷键编辑模式下的快捷键Cell 的四种功能¶Cell 有四种功能:Code、Markdown、Raw NBConvert、Heading,这四种功能可以互相切换。Code 用于写代码,Markdown 用于文本编辑,Raw NBConvert 中的文字或代码等都不会被运行,Heading 是用于设置标题的,这个功能已经包含在 Markdown 中了。四种功能的切换可以使用快捷键或者工具条。
Code 用于写代码,三类提示符及含义如下:
Markdown 用于编辑文本,给出常用的 Markdown 用法:
三、魔法函数使用魔法函数可以简单的实现一些单纯 python 要很麻烦才能实现的功能。
一些常用魔法函数的示例:
注意这些命令是在 Python kernel 中适用的,其他 kernel 不一定适用。