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的功能要不止这些,如果有兴趣可以继续拓展,当时对于日常工作使用的话,这些基本就够了。

原文发布于微信公众号 - 智能算法(AI_Algorithm)

原文发表时间:2017-11-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏烙馅饼喽的技术分享

我的CMS开发记-4 介绍一下DotNetNuke的系统执行流程

       有朋友说应该写个大致结构出来。想想也有道理,那么我就来介绍一下Dotnetnuke的执行流程。基本上我这个就是照搬他的 基本思路     一个站点...

3488
来自专栏Golang语言社区

Golang语言--开发游戏服务器需要了解的知识

我们以linux环境为列给大家讲解: 1 熟悉网络编程 网络编程主要是涉及到服务器与客户端间的通信,游戏开发中多数采用长链接的形式;短...

39312
来自专栏蓝天

Linux中系统整体性能监控工具详细介绍

 mpstat: mpstat 不但能查看所有CPU的平均信息,还能查看指定CPU的信息。

1162
来自专栏开发 & 算法杂谈

并行化的动态数据竞争验证和检测方法

之前系列提到的动态数据竞争验证和检测方法是结合了验证和检测两部分。这篇文章主要介绍一下并行化的动态数据竞争验证和检测方法。

2334
来自专栏前端知识分享

第214天:Angular 基础概念

  + https://github.com/angular/angular.js/releases

1223
来自专栏Hadoop数据仓库

将MySQL去重操作优化到极致之三弹连发(二):多线程并行执行

        上一篇已经将单条查重语句调整到最优,但该语句是以单线程方式执行。能否利用多处理器,让去重操作多线程并行执行,从而进一步提高速度呢?比如我的实验环...

2027
来自专栏H2Cloud

C++执行内存memcpy的效率测试

在进行memcpy操作时,虽然是内存操作,但是仍然是耗一点点CPU的,今天测试了一下单线程中执行memcpy的效率,这个结果对于配置TCP epoll中的wor...

4514
来自专栏数据和云

如何提高Linux下块设备IO的整体性能?

编辑手记:本文主要讲解Linux IO调度层的三种模式:cfp、deadline和noop,并给出各自的优化和适用场景建议。 作者简介: ? 邹立巍 Linux...

6914
来自专栏用户画像

4.2.4 文件系统实现

线性列表就是把文件名组织成一个线性表,查找的时候依次与线性表中每个表项进行比较。若把文件名按序排列使用折半查找法 可以降低平均的查找时间,但是建立新文件时会增加...

802

控制MongoDB中的集合分布

分片标记(Shard tagging)是MongoDB 2.2.0版中的一项新功能。通过对集合进行标记使其被强制写入到本地数据中心,也可以用来将某个集合固定到一...

2356

扫码关注云+社区

领取腾讯云代金券