Jupyter notebook, 前身是 IPython notebook, 它是一个非常灵活的工具,有助于帮助你构建很多可读的分析,你可以在里面同时保留代码,图片,评论,公式和绘制的图像。 Jupyter具有非常强的可扩展性,支持很多编程语言,并且易于部署到你的个人电脑和几乎所有的服务器上 -- 你只需要使用ssh或http接入即可。最重要的是,它完全免费。 Jupyter默认设置使用 Python kernel,正因此以前叫做 IPython notebook. Jupyter notebook 源自于 Jupyter 项目, Jupyter这个名字是它被设计所支持三个核心编程语言的缩写词:JUlia,PYThon, 和 R, 启发自木星这个词:Jupiter. 接下来的内容将向你展示27个让 Jupyter 用的更加舒心的建议与技巧。 1. Keyboard Shortcuts每一个进阶用户都知道,键盘快捷键将会为我们节省许多时间。Jupyter在顶部的菜单里保留了许多快捷键: 另一个查看快捷键的方式是使用命令面板: 这里是一些我喜欢的快捷键:
In [17]:
line1 = "this is from line 1" line2 = "this is from line 2" line1 line2 Out[17]:
'this is from line 2' In [18]:
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all" In [19]:
line1 line2 Out[19]:
'this is from line 1' Out[19]:
'this is from line 2' 如果你想要所有的Jupyter实例(Notebook和Console)都设置该选项,只需创建 c = get_config() # Run all nodes interactively c.InteractiveShell.ast_node_interactivity = "all" In [20]:
sum() 4. Plotting in notebooks在 notebook 中生成绘图有许多选项:
In [21]:
%lsmagic Out[21]:
Available line magics: %alias %alias_magic %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %popd %pprint %precision %profile %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode Available cell magics: %%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile Automagic is ON, % prefix IS NOT needed for line magics. 推荐阅读the documentation for all Jupyter magic commands,你会发现这非常有用。下面是一些我所喜爱的魔法命令: 6. Jupyter Magic - %env:Set Environment Variables你可以管理notebook的环境变量而无需重启jupyter server. 一些库(比如theano)使用环境变量来控制行为,%env是最方便的一个途径。 In [22]:
# 单独运行 %env 会列出所有环境变量 # 带参数的话则会设置该变量 比如 OMP_NUM_THREADS=4 %env OMP_NUM_THREADS=4 env: OMP_NUM_THREADS=4 In [23]:
# this will execute and show the output from # all code cells of the specified notebook %run ./LinearRegression.ipynb Coefficients: [ 938.23786125] Residual sum of squares: 2548.07 Variance score: 0.47 In [24]:
%who FormatCode Image InteractiveShell datasets diabetes diabetes_X diabetes_X_test diabetes_X_train diabetes_y_test diabetes_y_train display line1 line2 linear_model name names np numpy os plt regr time x In [25]:
%%time import time for _ in range(1000): time.sleep(0.01)# sleep for 0.01 seconds CPU times: user 196 ms, sys: 21.4 ms, total: 217 ms Wall time: 11.6 s
In [26]:
import numpy %timeit numpy.random.normal(size=100) The slowest run took 46.45 times longer than the fastest. This could mean that an intermediate result is being cached. 100000 loops, best of 3: 6.26 μs per loop In [27]:
%prun print('hello') hello 14. Jupyter Magic - Debugging with %pdbJupyter有一个自己的python调试器接口( 你可以在这里查看pdb的命令列表 In [28]:
%matplotlib inline from matplotlib import pyplot as plt import numpy x = numpy.linspace(0, 1, 1000)**1.5 In [29]:
# Here you get the output of the function plt.hist(x) Out[29]:
(array([ 216., 126., 106., 95., 87., 81., 77., 73., 71., 68.]), array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ]), ) In [30]:
# By adding a semicolon at the end, the output is suppressed. plt.hist(x); In [31]:
!ls JupyterNotebookTips.ipynb LinearRegression.ipynb JupyterNotebookTips.ipynb-meta LinearRegression.ipynb-meta 或是检查或管理包. In [32]:
!pip list | grep pandas pandas (0.18.1) 17. Using LaTeX for formulas当你在 markdown cell 中书写LaTeX时,它会被 MathJax 渲染成一个公式。(译者:下文中介绍的Jupyter插件中有个插件关于LaTeX,提供了更多LaTeX功能)
会被渲染成为: markdown 是 notebook 中十分重要的一部分,别忘了使用它来传达你的想法! In [33]:
%%bash for i in {1..5} do echo "$i" done 1 2 3 4 5 19. Install other kernels for JupyterJupyter 其中的一个重要特色就是能够运行不同语言,你只需安装相关的 kernel 即可。比如,下面的例子是如何安装 R kernel.
如果你使用 anaconda 安装你的环境,这会相当简单。你只需要在 terminal 中运行下面的命令:
如果你不是使用 anaconda, 这个过程可能稍显复杂。如果你还没有安装的话, 你需要从 CRAN安装。(译者: 也可使用 安装 R 完毕后,打开 R console 并运行如下命令:
20. Running R and Python in the same notebook对于此最好的解决方案是安装 rpy2(需要安装一个可以工作的 R ), 通过 pip 可以很容易安装:
你可以同时使用这两种语言,甚至在它们之间传递变量: 一个很好的示例 Revolutions Blog 21. Writing functions in other languages有时候 numpy 的速度仍旧不够快,我们需要自己写一些更快的代码。 原则上,你可以以动态链接库的方式编译函数,然后用 python 进行包装。 不过如果有人能够帮你完成这部分烦人的工作是不是非常棒呢? 你可以用 cython 或 fortran 写函数并直接从 Python 代码进行调用。 首先你需要安装:
个人来说我更喜欢使用 fortran, 我发现它对数值统计函数十分方便。更多用法上的细节可以在这里找到. 也有一些其他方式可以加速你的Python代码。更多示例可以在这里找到/ 23. Jupyter-contrib extensionsJupyter-contrib extensions 是一系列能够给 Jupyter 带来许多功能的扩展,比如 译者:使用conda安装是最方便的,更多安装与使用信息可以看Jupyter-contrib extensions. 启用插件可以使用jupyter_nbextensions_configurator , 通过打开
24. Create a presentation from a Jupyter notebookDamian 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 In [34]:
import os from IPython.display import display, Image names = [f for f in os.listdir('../images/') if f.endswith('.png')] for name in names[:5]: display(Image('../images/' + name, width=100)) 26. 'Big data' analysis对于大规模数据样本的查询/处理也有一些解决方案:
27. Sharing notebooks分享 notebook 最简单的方式是直接使用 notebook 文件(.ipynb).不过对于那些不使用 Jupyter 的人来说,你也可以这么做:
|
|