九大神招,让Python里数据分析神器Jupyter,完美升华

点击上方 菜鸟学Pyhon,选择置顶或星标

第一时间关注 Python 技术干货!

 

九大神招,让Python里数据分析神器Jupyter,完美升华
Jupyter Notebook作为一款经典的交互式编辑器,在视图数据等实时展示方面有其特有的优势,但是相比pycharm、sublime等编辑工具,Jupyter Notebook在开发过程中又显得有些“笨拙”,今天给大家介绍几个方法,让Jupyter Notebook用起来更加得心应手。
 
1
插件篇
 

1).Nbextensions

Nbextensions相当于Jupyter的插件管理器,使用以下命令安装:

conda install -c conda-forge jupyter_contrib_nbextensions

安装成功后,在Home页面会多出一个Nbextensions选项卡(下图)。
九大神招,让Python里数据分析神器Jupyter,完美升华
进入Nbextensions选项卡后,发现这里罗列了大量Jupyter所支持的插件(下图),选中某个插件后,在页面下方会显示该插件的说明文档,勾选插件前面的选择框系统就会加载启用该插件。

九大神招,让Python里数据分析神器Jupyter,完美升华
有了Nbextensions,就能很轻松的对Jupyter中的其他插件进行管理。

2).Hinterland

Hinterland是jupyter中的自动补全插件,在Nbextensions中勾选该插件名称就能启用。
安装Hinterland后jupyter可以实现如IDE一般的代码自动补全显示,输入代码的头部字符后所有符合的指令都会显示出来以供选择,下图就是写代码过程中Hinterland的提示效果。
九大神招,让Python里数据分析神器Jupyter,完美升华
有了Hinterland之后,你就可以享受与其他流行的IDE一样顺滑的自动代码补全功能了。

3).Collapsible Headings

如果notebook中内容太多,在写代码的时候查看起来会非常不方便,Collapsible Headings插件实现的是一种单元格折叠的功能。对于一些当前不需要反复关注的代码,折叠起来不仅可以免除反复滚动的烦恼,还可以给整个notebook带来更加整洁的视觉体验。
Collapsible Headings的使用依赖于Markdown标签,我们以下图中的单元格为例进行演示。
九大神招,让Python里数据分析神器Jupyter,完美升华
Collapsible Headings插件启用后,在标签左侧会出现一个小的三角箭头,点击标题1左侧的箭头,会发现下面的所有内容都被折叠了起来(下图)。
九大神招,让Python里数据分析神器Jupyter,完美升华

而如果只点击标题2左侧的箭头,则只有标题2下的单元格进行了折叠(下图)。
九大神招,让Python里数据分析神器Jupyter,完美升华
Collapsible Headings所识别的标签作用域所遵循的规则与Markdown完全一致,这里不再进行详细说明。

4).Codefolding

如果说Collapsible Headings的作用是折一系列叠单元格,那Codefolding的作用就是折叠单元格中的代码。只不过Codefolding不会像Collapsible Headings一样自定义折叠区域和层级,它会自动识别处于同一层级的代码,就像pycharm一样。
Codefolding插件启用后在单元格代码的左侧会出现一些小三角箭头,下图这段代码是折叠之前的样子。
九大神招,让Python里数据分析神器Jupyter,完美升华

pie.add折叠之后是这样的:
九大神招,让Python里数据分析神器Jupyter,完美升华

5).Notify

notify也是jupyter中非常实用的一个插件,它的作用是当某个单元格的代码执行完毕后,Jupyter会向我们发送提示通知。这个功能主要适用于一些一些耗时较久的任务,这样在运行代码期间我们就可以把它放在一边去做其他工作,当代码运行完毕后Notify就会提醒我们(下图)。
九大神招,让Python里数据分析神器Jupyter,完美升华

要想Notify真正启用,除了要在Nbextensions(jupyter的插件管理器)中Enable之外,还要在juypter的工具栏中设置参数(下图),其中:
  • Disabled:notify功能不启用
  • 0:如果任务执行时间超过0秒,在任务执行完毕后给予提示
  • 5:如果任务执行时间超过5秒,在任务执行完毕后给予提示,否则不提示
 
九大神招,让Python里数据分析神器Jupyter,完美升华
目前这一功能已经完美支持Firefox、Chrome和Safari浏览器。

2
技巧篇

6).%debug

调试是写代码不可避免的一个环节,jupyter也有他特有的调试模式——%debug。当代码出现异常后,输入%debug可以直接激活调试器跳到出现错误的地方,在这里还可以查看当前代码的变量情况,下面举个例子来进行说明:
九大神招,让Python里数据分析神器Jupyter,完美升华

上面这段代码由于计算中出现分母为0的情况,所以运行时会报错,这时在下一个单元格中输入%debug指令,jupyter就会进入调试模式。
进入调试模式后会直接跳转到异常发生的位置(下图),同时会出现一个ipdb文本框,这里可以输入变量或特定指令,例如输入程序中的变量a,就会返回当前位置相关的变量值;如果输入指令quit,则会退出调试模式。

九大神招,让Python里数据分析神器Jupyter,完美升华
%debug只是jupyter众多IPython Magic命令中的一个,在juypter中可以使用%lsmagic命令查看所有Magic命令,大家可以根据需要自行选用,这里不再展开介绍。

7).InteractiveShell

我们都知道jupyter中有一个很好用的功能,当把变量名称或没有定义输出结果的语句放在单元格的最后一行,无需print语句,jupyter就会显示变量值,尤其当使用Pandas DataFrames这一数据结构时,输出的结果更加整齐漂亮。
但是这一功能也有其缺点,即默认只能显示最后一行的变量结果,例如下面这段代码,虽然我们要分别查看df的头部数据和尾部数据,但jupyter只能输出尾部数据的结果。
九大神招,让Python里数据分析神器Jupyter,完美升华
其实这个问题解决起来非常容易,只需要使用下面这两行代码修改内核选项即可。
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity=‘all’

我们再来看看修改后的运行结果:
九大神招,让Python里数据分析神器Jupyter,完美升华
这样在需要查看多个变量时,就不必再把他们放到不同的单元格中运行了。

8).简单的问号?

没错,就是一个简单的问号“?”,在jupyter中就能实现快捷文档功能,使用方法就是在你想要查看的属性或方法之前加一个?,例如我们要查看python中的str()方法,就可以执行下图中的操作,jupyter会自动弹出一个窗口返回相关信息。
九大神招,让Python里数据分析神器Jupyter,完美升华
除了查看文档之外,这个?还可以查看程序中的变量类型。我们在写代码过程中经常需要查看某个变量是何种数据类型,通常我们会使用type()方法,在jupyter中使用?同样可以实现这一功能,而且返回的信息更加完善。
例如我们想要查看上一条内容中的df变量(下图),可以看到除了会返回数据类型信息之外,还会对该dataframe数据的一些基本信息进行描述,推动右侧的滚动条可以查看更多信息。
九大神招,让Python里数据分析神器Jupyter,完美升华

9).Multicursor

如果我们想让一段代码整体缩进可以把他们全部选中然后按下Tab键,而如果要集中删除一批缩进符,就要用到Multicursor功能了。
在jupyter中使用Multicursor功能,只需要按住Alt键然后拖动鼠标就可以了。通俗来讲,Multicursor的作用就是在普通文本中进行“列操作”,这个概念解释起来比较麻烦,我们就用一个例子来进行演示:
九大神招,让Python里数据分析神器Jupyter,完美升华
(Gif动画图,多看5秒钟)
可以看到,通过Multicursor功能我们同时选中了多个行中的缩进符并进行了删除操作。


由于篇幅有限,本文仅选取了几个极具代表性和实用性的工具为大家进行了介绍。另外,除了上文中介绍的插件和技巧之外,还有大量为jupyter量身打造的第三方库(例如ipywidgets、profiling等),特别是在进行数据科学相关工作时,这些库能为我们提供极大的便利,这部分内容以后有机会再进行介绍。

近期热门:
3天2100万!周杰伦的说好不哭,20万点评Python来分析
几行Python代码,轻松获取美股阿里巴巴的交易数据

获取干货源码,阅读更多有趣的案例,也可以直接去微信公众号【菜鸟学Python】获取。
菜鸟学Python » 九大神招,让Python里数据分析神器Jupyter,完美升华