美文网首页Pythonpython程序员
[译]27个Jupyter Notebook小提示与技巧

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

作者: liuchengxu | 来源:发表于2016-10-16 07:27 被阅读13834次

    图片链接已失效,欢迎前往我的博客查看最新版本

    Jupyter Notebook

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

    %run运行python或jupyter notebook

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

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

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

    %load加载外部脚本

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

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

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

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

    %who查看全局变量

    11. Jupyter Magic - Timing

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

    • %%time将会给出cell的代码运行一次所花费的时间。
    %time
    • %timeit使用Python的timeit模块,它将会执行一个语句100,000次(默认情况下),然后给出运行最快3次的平均值。
    %timeit

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

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

    %writefile & %pycat

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

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

    %prun

    14. Jupyter Magic - Debugging with %pdb

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

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

    15. Suppress the output of a final function

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

    取消输出取消输出

    16. Executing Shell Commands

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

    !ls
    
    shell命令shell命令

    或是检查或管理包.

    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
    运行多种类型的kernel运行多种类型的kernel

    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.

    插件扩展插件扩展

    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服务来允许第三者半小时的交互性身份接入你的仓库。

    [译者]
    useful links: https://github.com/dunovank/jupyter-themes
    原文地址:27 Jupyter Notebook tips, tricks and shortcuts

    相关文章

      网友评论

      • Vector_07:楼主,你的blog现在是不是不能进行comment?有一些疑问
        liuchengxu:@简书_小助手 你把基于 pelican 的 blog 搭建好就知道了,对于 pelican, 很多主题都有代码块高亮的效果。你可以尝试换个主题,如果想要自定义效果,就自己更改相关的 css.
        Vector_07:@simple_the_best 那就在这里提及issue吧!就是这篇blog,你代码中的高亮是怎么做的?例如这块「 IPython.core.interactiveshell 」(你在blog中find一下)我的上面没有显示。
        liuchengxu:没有评论功能。有问题的话可以通过其他途径进行交流,比如邮件,GitHub issue.

      本文标题:[译]27个Jupyter Notebook小提示与技巧

      本文链接:https://www.haomeiwen.com/subject/dumoyttx.html