神刀安全网

[译]27个Jupyter Notebook小提示与技巧

Jupyter Notebook

Jupyter notebook, 前身是IPython notebook, 它是一个非常灵活的工具,有助于帮助你构建很多可读的分析,你可以在里面同时保留代码,图片,评论,公式和绘制的图像。

[译]27个Jupyter Notebook小提示与技巧
interface

Jupyter具有非常强的可扩展性,支持很多编程语言,并且易于部署到你的个人电脑和几乎所有的服务器上 — 你只需要使用ssh或http接入即可。最重要的是,它完全免费。

Jupyter默认设置使用Python kernel,正因此以前叫做IPython notebook. Jupyter notebook源自于Jupyter项目, Jupyter这个名字是它被设计所支持三个核心编程语言的缩写词:JUlia,PYThon, 和 R, 启发自木星这个词:Jupiter.

接下来的内容将向你展示27个让Jupyter用的更加舒心的建议与技巧。

1. Keyboard Shortcuts

每一个进阶用户都知道,键盘快捷键将会为我们节省许多时间。Jupyter在顶部的菜单里保留了许多快捷键:Help > keyboard Shortcuts. 每次更新Jupyter时,都值得再次进行查看,因为新的快捷键总是不断被添加进来。

另一个查看快捷键的方式是使用命令面板:Cmd + Shift + P(或者Linux和Windows上 Ctrl + Shift + P)。这个对话框将会帮助你通过名称运行任何命令 — 这非常有用,尤其当你不知道一个命令的快捷键或者你想要执行的命令没有快捷键时。这个功能非常类似与Mac上的Spotlight搜索,一旦你开始使用这个功能,你就会发现没有它的日子该怎么办!

[译]27个Jupyter Notebook小提示与技巧
interface

这里是一些我喜欢的快捷键:

  • Esc + F查找和替换你的代码,但不包括代码的输出内容。
  • Esc + o打开代码块输出。
  • 选择多个cell。
    Shift + JShift + Down向下选中下一个cell. 你可以通过Shift + KShift + Up向上选中cell。

    • 一旦cell被选中,接着你可以进行批量删除/复制/剪切/粘贴.当你需要移动一部分notebook时,这非常有用。
    • 你也可以执行Shift + M对多个cell进行合并。

      [译]27个Jupyter Notebook小提示与技巧
      interface

2. Pretty Display of Varibles

这部分内容可能很多人都知道。如果对带有一个变量或是未复制语句的cell执行操作,Jupyter将会打印该变量而无需一个输出语句。这非常有用,尤其是使用Pandas DataFrames进行处理时,因为输出将会被整齐地格式化为一个表格。

接下来的内容可能没那么人知道:你可以选择修改ast_note_iteractivelykernal选项来使得Jupyter为每一行的变量或语句执行这个操作,以便你可以立即看到多条语句一起输出。

[译]27个Jupyter Notebook小提示与技巧
interface

如果你想要所有的Jupyter实例(Notebook和Console)都设置该选项,只需创建~/.ipython/profile_default/ipython_config.py文件并写入一下内容:

c = get_config() # Run all nodes interactively c.InteractiveShell.ast_node_interactivity = "all"

3. Easy links to documentation

Help菜单你可以找到一些常用库文档的连接,包括NumPy, Pandas, SciPy 和 Matplotlib.

同时别忘了在一个库,方法或变量前加上?,你可以获得一个快速的语法说明。

[译]27个Jupyter Notebook小提示与技巧
interface

4. Plotting in notebooks

在notebook中生成绘图有许多选项:

  • matplotlib, 使用%matplotlib inline进行激活。
  • %matplotlib notebook提供了一些交互性,不过可能会有点慢,因为渲染由服务器端完成。
  • mpld3为matplotlib代码提供了另一个渲染器(使用d3)。非常漂亮,不过尚未完整。
  • bokeh是构建交互性绘图的一个更好的选择。
  • plot.ly也可以生成漂亮的绘图,不过是付费服务。
[译]27个Jupyter Notebook小提示与技巧
interface

5. Jupyter Magic Commands

上面的%matplotlib inline就是一个所谓的Jupyter Magic(Jupyter魔法)命令。

[译]27个Jupyter Notebook小提示与技巧
interface

推荐阅读the documentation for all Jupyter magic commands,你会发现这非常有用。下面是一些我所喜爱的魔法命令:

6. Jupyter Magic – %env:Set Environment Variables

你可以管理notebook的环境变量而无需重启jupyter server. 一些库(比如theano)使用环境变量来控制行为,%env是最方便的一个途径。

[译]27个Jupyter Notebook小提示与技巧
interface

7. Jupyter Magic – %run:Excute python code

%run可以从.py文件执行Python代码. 更少的人知道的是它也可以执行其他的Jupyter notebook,这也非常有用。

[译]27个Jupyter Notebook小提示与技巧
%run

注意使用%run并不等同于导入一个Python模块.

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

这将会使用外部脚本来代替cell的内容。你可以使用本地机器上的文件也可以使用一个URL.

[译]27个Jupyter Notebook小提示与技巧
%load

9. Jupyter Magic – %store:Pass variables between notebooks

%store命令可以让你在两个不同的notebook间传递变量。

10. Jupyter Magic – %who:List all variables of global scope.

不带参数的%who命令将会列出全局范围内存在的所有变量。如果传入参数,比如str,将会列出指定类型的所有变量。

[译]27个Jupyter Notebook小提示与技巧
%who

11. Jupyter Magic – Timing

对于计时有两个十分有用的魔法命令:%%time%timeit. 如果你有些代码运行地十分缓慢,而你想确定是否问题出在这里,这两个命令将会非常方便。

  • %%time将会给出cell的代码运行一次所花费的时间。
[译]27个Jupyter Notebook小提示与技巧
%time

  • %timeit使用Python的timeit模块,它将会执行一个语句100,000次(默认情况下),然后给出运行最快3次的平均值。
[译]27个Jupyter Notebook小提示与技巧
%timeit

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

使用%%writefile魔法保存cell的内容到一个外部文件。%pycat则刚好相反,并且会向你展示高亮后的外部文件。

[译]27个Jupyter Notebook小提示与技巧
%writefile & %pycat

13. Jupyter Magic – %prun:Show how much time your program spent in each function

使用%prun statement_name将会产生一个有序表格来展示在该语句中所调用的每个内部函数调用的次数,每次调用的时间与该函数累计运行的时间。

[译]27个Jupyter Notebook小提示与技巧
%prun

14. Jupyter Magic – Debugging with %pdb

Jupyter有一个自己的python调试器接口(pdb),这使得我们能够进入函数内部看看到底发生了什么。

你可以在这里查看pdb的命令列表

15. Suppress the output of a final function

有时候你可能会想要抑制最后一行函数的输出,比如当我们绘制图像的时候。为此,你只需加上一个分号即可。

[译]27个Jupyter Notebook小提示与技巧
interface

16. Executing Shell Commands

在notebook中执行shell命令非常容易,你可以像下面这样列出当前目录下的文件:

!ls
[译]27个Jupyter Notebook小提示与技巧
interface

或是检查或管理包.

17. Using LaTeX for formulas

当你在markdown cell中书写LaTeX时,它会被MathJax渲染成一个公式。

$$ P(A /mid B) = /frac{P(B /mid A) /, P(A)}{P(B)} $$

会被渲染成为:

$$ P(A /mid B) = /frac{P(B /mid A) /, P(A)}{P(B)} $$

markdown是notebook中十分重要的一部分,别忘了使用它来传达你的想法!

18. Run code from a different kernel in a notebooks

如果想要的话,你可以将多个kernel的代码组合到一个notebook中。

在每个cell的开头使用相关的魔法命令来声明你想使用的kernel:

  • %%bash
  • %%HTML
  • %%python2
  • %%python3
  • %%ruby
  • %%perl
[译]27个Jupyter Notebook小提示与技巧
interface

19. Install other kernels for Jupyter

Jupyter其中的一个重要特色就是能够运行不同语言,你只需安装相关的kernel即可。比如,下面的例子是如何安装 R kernel.

  • 快捷选择:使用anaconda安装R kernel

如果你使用anaconda安装你的环境,这会相当简单。你只需要在terminal中运行下面的命令:

conda install -c r r-essentials
  • 不那么快捷的方式:手动安装R kernel

如果你不是使用anaconda, 这个过程可能稍显复杂。首先你需要从CRAN安装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

20. Running R and Python in the same notebook

对于此最好的解决方案是安装rpy2(需要一个可以工作的R版本), 通过pip可以很容易安装:

pip install rpy2

你可以同时使用这两种语言,甚至在它们之间传递变量:

一个很好的示例Revolutions Blog

21. Writing functions in other languages

有时候numpy的速度仍旧不够快,我们需要自己写一些更快的代码。

原则上,你可以以动态链接库的方式编译函数,然后用python进行包装。

不过如果有人能够帮你完成这部分烦人的工作是不是非常棒呢?

你可以用cython或fortran写函数并直接从Python代码进行调用。

首先你需要安装:

!pip install cython fortran-magic

个人来说我更喜欢使用fortran, 我发现它对数值统计函数十分方便。更多用法上的细节可以在这里找到.

也有一些其他方式可以加速你的Python代码。更多示例可以在这里找到/

22. Multicursor support

Jupyter支持多光标操作,与Sublime Text类似。按住Alt进行点击和拖拽鼠标即可。

23. Jupyter-contrib extensions

Jupyter-contrib extensions 是一系列能够给Jupyter带来许多功能的扩展,比如jupyter spell-checkercode-formatter.

[译]27个Jupyter Notebook小提示与技巧
interface

24. Create a presentation from a Jupyter notebook

Damian Avila的 RISE允许你从已有的一个notebook创建一个powerpoint风格的报告。

你可以通过conda安装RISE:

conda install -c damianavila82 rise

或通过pip:

pip install RISE

然后执行下面的代码安装并启用扩展:

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

25. The Jupyter output system

notebook以HTML的方式进行展示,cell的输出也可以是HTML,所以事实上你可以返回任何东西:视频/音频/图像。

下面的例子我扫描了

26. ‘Big data’ analysis

对于大规模数据样本的查询/处理也有一些解决方案:

27. Sharing notebooks

分享notebook最简单的方式是直接使用notebook文件(.ipynb).不过对于那些不使用Jupyter的人来说,你也可以这么做:

  • 使用菜单项File > Download as > HTML将notebook转换成HTML。

  • 使用gist或github分享notebook,它们都会对notebook进行渲染展示。

    • 如果你上传notebook到一个github仓库,你可以使用十分便利的mybinder服务来允许第三者半小时的交互性身份接入你的仓库。

原文地址:27 Jupyter Notebook tips, tricks and shortcuts

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » [译]27个Jupyter Notebook小提示与技巧

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址