Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

转载自:https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/

Jupyter notebook, formerly known as the IPython notebook, is a flexible tool that helps you create readable analyses, as you can keep code, images, comments, formulae and plots together.

Jupyter Notebook, 集代码、图像、注释、公式、图表为一体的神器。

Jupyter名字的起源 :the name Jupyter is an indirect acronyum of the three core languages it was designed for: JUlia, PYThon, and R and is inspired by the planet Jupiter.

1. Keyboard Shortcuts  快捷键

怎么查看说明,打开一个notebook,Help > Keyboard Shortcuts

有命令模式的快捷键:

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

也有编辑模式的快捷键:

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

几个常用的:

1. Esc + F  :Find and replace on your code but not the outputs.

查找并替换代码(而不是输出)

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

2. 对于cell的一些操作

Esc + O  折叠cell输出;

Shift + J or Shift + Down:向下选中多个cell,反之亦然

选中多个cell有什么用呢?删除修改复制等不用说,可以合并呀,哈哈

Shift + M: 合并多个cell

2. Pretty Display of Variables   美化输出

主要把数据以更好的形式输出,方便观察,先来个普通的:

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

虽然能看,但是……也还行吧,能更好就尽量更好,那么

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

是不是觉得很赞,但是每次还要import interactiveShell,有点麻烦哈

没关系,在~/.ipython/profile_default/ipython_config.py  里添加:

c = get_config()

# Run all nodes interactively
c.InteractiveShell.ast_node_interactivity = "all"

我测试的时候好像有点问题,第一句话其实是不用的,但是第二句话删掉后貌似还可以,有点奇怪。

3. Easy links to documentation    查看文档的一些便捷方式

1. Help菜单

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

2. ?操作符,?后面跟着想查询的对象就可以啦,其实就是调用了docstring。

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

4. Plotting in notebooks 绘图

一般都是用matplotlib绘图,就一条命令:

%matplotlib inline

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

另外,据说%matplotlib notebook 可已创建可交互图,但是非常慢,可是我都没成功。作为替代,bokeh包可以尝试下。土豪也可以用plot.ly,能做出更漂亮的图表,但是要付费。mpld3 也是一个不错的替代。

5. Jupyter Magic Commands   神奇的命令符 %

说实话我真不知道这个用处到底多大,用%lsmagic 查看  

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

有缘人请查看文档:http://ipython.readthedocs.io/en/stable/interactive/magics.html

后面介绍几个所谓的%绝技

6. Jupyter Magic - %env: Set Environment Variables   定义环境变量

定义环境变量,而且不用重新启动notebook,一些库,比如theano,会用到环境变量

可以用%env  查看环境变量

也可以这样设置:%env OMP_NUM_THREADS=4

话说这个还是挺给力的。

7. Jupyter Magic - %run: Execute python code   直接运行文件

命令:%run

用途:可以直接运行.py 文件,或者 notebook的.ipynb文件

没什么说的,提高了集成性,有用

8. Jupyter Magic - %load: Insert the code from an external script

将python文件插入到cell中,%load E:/test.py

但是要注意,test.py中的内容会把cell里面的东西覆盖掉

所以,这个类似于一个快捷的复制粘贴吧,当然,也可以load一个URL,哈哈

9. Jupyter Magic - %store: Pass variables between notebooks. 在notebook之间共享变量

如题

两个命令: %store 变量

%store -r 变量

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

 10. Jupyter Magic - %who: List all variables of global scope.  列出所有的全局变量

如题,也可以根据类型筛选,如:%who str

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

 11. Jupyter Magic - Timing   计时

这个功能很有用,尤其是分析一段代码的性能时,有两种方式:

1. %%time  记录一个cell中代码的运行时间  Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

2. %%timeit  调用python的timeit模块,运行10万次,给出最好的三次运行时间的分析结果。

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

12. Jupyter Magic - %%writefile and %pycat: Export the contents of a cell/Show the contents of an external script

代码的保存和查看

notebook一般是用来试验,一段代码写好,测试没问题了,不用复制粘贴出去,使用命令:%%writefile filename.py 保存。

反过来,有之前的%load, %run 命令,把已经有的代码载入,或者运行,但是有些代码只想看看,就可以用命令:%pycat filename.py 查看。

13. Jupyter Magic - %prun: Show how much time your program spent in each function.  分析一条命令所涉及的函数,及总的运行时间

命令: %prun fun()

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

14. Jupyter Magic - Debugging with %pdb  调试

命令: %pdb

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

然而,这个pdb的调试我不会用……

文档:https://docs.python.org/3.5/library/pdb.html#debugger-commands  

友情提示,调试模式下,Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

15. Suppress the output of a final function.    简化输出  

就是一个分号;,作用就是不显示变量,这里变量是重点,先看官方的例子,是一个很好的使用场景

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

然后继续深入研究下

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

一目了然吧,就是不显示变量,一个分号;搞定。

16. Executing Shell Commands  运行Shell命令

一个叹号!加上命令,就可以把notebook变成cmd黑框框,也是很方便啦

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

试了下,不能用powershell,算是一个小辅助吧。

17. Using LaTeX for forumlas  使用LaTex编写公式

看上去很方便,然而我没用过,有缘人自己挖掘吧

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

18. Run code from a different kernel in a notebook 在notebook里运行其他语言

在一个notebook里运行多种语言,这个也是很给力了,至少python2和python3切换是很方便了,其他的还有bash, HTML, ruby, perl。只需要加两个百分号,比如:%%python2。

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

19. Install other kernels for Jupyter 为jupyter notebook添加其他语言的kernel

好啦,用%%可以运行其他语言,但是也要先安装啊,两种安装方法

1. easy模式,前提是安装了Anaconda

cmd窗口运行conda install -c r r-essentials 即可安装

2. 手动安装

还是以R为例,先要自己安装R

然后,在R的console中运行:

install.packages(c('repr', 'IRdisplay', 'crayon', 'pbdZMQ', 'devtools'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()  # to register the kernel in the current R installation

所以还是安装Anacoda吧……

20. Running R and Python in the same notebook. 在同一个Notebook中运行python 和R

之前提到,用%%可以在Notebook中运行不同的语言

针对Python和R,貌似有更好的解决方案,即安装rpy2,当前这之前还是要装好R的

!pip install rpy2

这样,据说可以在两种语言之间共享变量,看上去很厉害的样子,但是我还没试过

看图,貌似R绘制的图更加漂亮呢……

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

21. Writing functions in other languages  使用其他语言编写函数

用于numpy性能不够时,需要自己编写性能更好,更快的函数,那么也就不能指望python了,需要搬出祖宗级的cython或者fortran了,编写完直接用python调用。

当然也是要先安装相关的东西

!pip install cython fortran-magic 

然后就可以开干了

cython

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

fortran

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

扩展阅读:

using fortran from python

http://arogozhnikov.github.io/2015/11/29/using-fortran-from-python.html

python代码加速的一些东西

http://arogozhnikov.github.io/2015/09/08/SpeedBenchmarks.html

22. Multicursor support  编辑多行

按住Alt,选择多行,每行就都会有光标,同时编辑

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

23. Jupyter-contrib extensions 一个小宝库

比如 jupyter spell-checker ,code-formatter

可以用命令安装:

!pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master
!pip install jupyter_nbextensions_configurator
!jupyter contrib nbextension install --user
!jupyter nbextensions_configurator enable --user

也可以在Notebook中安装

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

24. Create a presentation from a Jupyter notebook.  notebook 秒变PPT

安装RISE

conda install -c damianavila82 rise

或者  pip install RISE

然后启动这个东西:

jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix

怎么用呢,以后再说。

25. The Jupyter output system

Notebook是使i用HTML展示的,cell的输出也是HTML,这样基于浏览器的话,那就可以输出视频,音频,图片了

当然首先还是需要Notebook支持的:

from IPython.display import display, Image

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

还有一个悲惨的播放视频失败案例:

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

融会贯通一下,也可以用bash命令获得文件列表

Jupyter Notebook 27绝技——27 Jupyter Notebook tips, tricks and shortcuts

26. ‘Big data’ analysis  大数据分析

python大数据处理的一些工具

ipyparallel (formerly ipython cluster)

pyspark

spark-sql magic %%sql

27. Sharing notebooks  共享notebook

最好的方式使用.ipynb,对于没有使用Jupyter的人来说,也有一些方案:

1. 导出HTML文件,File > Download as > HTML

2. 导出PDF文件,File > Download as > PDF,参考Making publication ready Python notebooks.

3. 将Notebook发布在gists 或者 github。

4. 建立自己的体系:jupyterhub,可以用来讲课或者多人协作。

5. nbviewer,将ipynb文件存到网盘,这个网站可以输入URL,呈现notebook。http://nbviewer.jupyter.org/

6. 建立blog:Create a blog using Pelican from your Jupyter notebooks.

大功告成!

未经允许,请不要转载!

未经允许,请不要转载!

未经允许,请不要转载!

上一篇:Java实战之04JavaWeb-04JSP、EL表达式、JSTL标签库


下一篇:Android Studio 活动的生命周期