Jupyter notebook使用指南
一、Jupyter介绍
Jupyter Notebook是以web交互式的编程接口,是IPython notebook的升级版本。主要是针对python,另外支持运行 40 多种编程语言。Jupyter可以在个人机器开发,也可以连接到集群中使用分布式计算引擎spark等以及数据库(mysql/hive/hdfs)。
Jupyter相对于其他python编程工具来说,除了通常的新建、删除、更改、下载编程文件外,还支持在线编程运算可帮助持续开发,特别在企业中有些项目需要持续很长时间的开发,每天下班后关闭jupyter,只要服务器的kernel不关闭,jupyter会保存好开发时的数据缓存和可视化结果,第二天继续开发,而不用又从头再运行,再配合支持markdown的功能,使得jupyternotebook方便记录开发过程和教学。下面对特征工程的教程就是利用了在jupyternotebook中使用markdown生成的,并且支持对文章的内容字体高亮。
二、jupyter安装
Jupyter有多种方式进行安装,一种比较直接的方式是直接下载安装anaconda,里面有自带的jupyter notebook。
第二种是使用pip来安装,pip install jupyter。
另外如果是想在独立的python环境中使用jupyter的话,在linux系统中使用virtualenv构建虚拟环境,如果在windows下已经安装了anaconda,可以使用conda创建特制python环境,conda create --name your_env_name python=2.7。
启动方式可以直接在anaconda找到jupyter notebook启动
或在终端直接输入jupyternotebook调用,不过需要注意的是jupyter会根据当前启动路径当做开发路径,如果你想在D:\xxxx\目录下进行开发,需要先进入到路径下,再调用jupyternotebook。
三、jupyter使用
3.1 启动jupyter notebook
进入jupyter界面如下:
红色部分Python2就是新建一个notebook,另外Terminals Unavailable是启动终端,这里linux和windows系统略有不同,由于windows下不支持类似linux的tty(控制终端),因此无法使用,Linux下启动效果如下:
Jupyter能够下载文件,上传文件,但是无法在两个文件夹之间进行复制和移动,一种方式是把文件先下载下来,然后在另外文件夹中上传,比较麻烦,如果配合jupyter中的终端就很方便移动,复制和打包文件了。
3.2 jupyter的使用功能
jupyter的基本单元是编程cell组成,也就是我们看到的In[ ]:
Jupyter有三种类型的cells:code cells,markdown cells,raw cells,常用的是code cells和 markdown cells类型。
Cells状态分为命令模式和编辑模式,Enter进入编辑模式,ESC进入命令模式,命令模式和编辑模式下支持很多操作快捷键,非常好用。
常用命令模式快捷键:
y: 单元进入代码状态
m: 转入markdown状态
r:转入raw状态
a: 上方插入新单元
b:下方插入新单元
x:剪切选中单元
c: 复制选中单元
shift-v:粘贴到上方单元
v:粘贴到下方单元
d,d(连续按两次d):删除选中单元
z:恢复最后删除单元
ctrl+Enter:运行本单元,两种模式都适用
shift+Enter:运行本单元,并跳到下个单元,两种模式都适用
alt+Enter:运行本单元,并在下方插入新单元,两种模式都适用
常用编辑模式快捷键:
Tab:代码补齐或缩进
Shift+Tab:调用方法提示,非常有用,在调用包中函数时,对于函数中的使用说明和相关参数配置,按两次shift+Tab可获取详细的方法提示。
Ctrl+]:缩进
Ctrl+[ : 解除缩进
Ctrl+A: 全选
Ctrl+Backspace:删除光标前面本行所有的内容
Ctrl+Delete:删除光标后本行所有的内容
Shift+Home:往前选取本行所有内容
Shift+End:往后选取本行所有内容;
3.2.1 Markdown
Jupyter提供的markdown是一个非常实用的功能,有了markdown可以将写代码和内容编辑非常好的结合,特别代码内容说明,markdown是一种纯文本标记语言,满足标题,公式,字体加粗,颜色甚至流程图和表格的内容编辑;例如,下图中是使用markdown编写的,能够生成我们想要的公式和字体颜色。
一些简单的用法如下,编辑好之后使用ctrl+enter运行结果:
更多内容可以了解markdown相关教程。(公众号回复markdown或者进QQ群:319571120即可免费下载)
3.2.2 Code Cells
Code模式下,除了一般的python代码编辑外,jupyter还支持一些其他的编程语言,如R,Julia,bash等。不过需要使用magic单元。Magic单元分为两种,一种是line magics,另外一种cell magics。Line magic是通过在前面加%,表示magic只在本行有效。
Cell magics:通过在前面加%%,表示在整个cell单元有效。比如下图中使用%%bash,产生了linux下的shell环境(window下不支持,不过可以使用%%cmd),这样就可以运行pwd和ls命令了。
其中一些比较常用的magic:
%matplotline inline在jupyter内打印图片;
%load:将本地py文件代码导入进来,例如 %load test.py
%run:运行本地代码,利用这个magic,我们可以把一些头文件,基本设置,共同函数写在不同的notebook内,用的时候运行一下就可以了。
例如下面,将公共的函数写在common_import.ipynb中,一些导入函数的配置文件存在utils.ipynb中,需要的时候使用%run直接运行一下,就可以把公共函数和环境配置好了。
这样可以将代码写成不同的模块,而不是全部写进一个notebook。%time:统计代码运行的时间,当然还有更多有趣的一些magic属性来方便我们的工作。
四、拓展功能
上面已经将jupyternotebook的基本功能和用法都涉及,但是直接工作的话感觉还是缺一点东西,类似下图这样能够生成notebook的内容目录和点击快速定位的功能。
当在notebook中编写了大量代码的时候,如果想要快速的定位到代码块或者给编辑内容的各级标题生成标题号,可以使用jupyter中的延伸功能模块,Jupyter Notebook extensions来完成这部分工作,Jupyter Notebook extensions可以通过conda安装,调用conda install -c conda-forge jupyter_contrib_nbextensions,如果conda安装不成功的话,可以尝试使用pip安装,不过需要两步工作:
1. pip install jupyter_contrib_nbextension
2. jupyter contrib nbextension install --user
安装完成后重新打开jupyter会发现多了Nbextensions项
点击Nbextensions后能够看到下图的界面:
通过勾选Table of Contents(2),能够生成notebook的浏览目录,如果希望在顶部生成目录的话,还需要点击Table ofContents下勾选下图中的项。
最终的效果如下:
至此jupyter的安装,常用用法和技巧就基本讲完了,当然jupyter的功能要不止这些,如果有兴趣可以继续拓展,当时对于日常工作使用的话,这些基本就够了。
(如需更好的了解相关知识,欢迎加入智能算法QQ讨论群:319571120,或者在“智能算法”公众号发送“QQ群”,自动加入)