前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >九大神招,让Python里数据分析神器Jupyter,完美升华

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

作者头像
龙哥
发布2019-10-10 12:11:33
1.6K0
发布2019-10-10 12:11:33
举报
文章被收录于专栏:Python绿色通道Python绿色通道

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

1

插件篇

1).Nbextensions

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

代码语言:javascript
复制
conda install -c conda-forge jupyter_contrib_nbextensions

安装成功后,在Home页面会多出一个Nbextensions选项卡(下图)。

进入Nbextensions选项卡后,发现这里罗列了大量Jupyter所支持的插件(下图),选中某个插件后,在页面下方会显示该插件的说明文档,勾选插件前面的选择框系统就会加载启用该插件。

有了Nbextensions,就能很轻松的对Jupyter中的其他插件进行管理。

2).Hinterland

Hinterland是jupyter中的自动补全插件,在Nbextensions中勾选该插件名称就能启用。

安装Hinterland后jupyter可以实现如IDE一般的代码自动补全显示,输入代码的头部字符后所有符合的指令都会显示出来以供选择,下图就是写代码过程中Hinterland的提示效果。

有了Hinterland之后,你就可以享受与其他流行的IDE一样顺滑的自动代码补全功能了。

3).Collapsible Headings

如果notebook中内容太多,在写代码的时候查看起来会非常不方便,Collapsible Headings插件实现的是一种单元格折叠的功能。对于一些当前不需要反复关注的代码,折叠起来不仅可以免除反复滚动的烦恼,还可以给整个notebook带来更加整洁的视觉体验。

Collapsible Headings的使用依赖于Markdown标签,我们以下图中的单元格为例进行演示。

Collapsible Headings插件启用后,在标签左侧会出现一个小的三角箭头,点击标题1左侧的箭头,会发现下面的所有内容都被折叠了起来(下图)。

而如果只点击标题2左侧的箭头,则只有标题2下的单元格进行了折叠(下图)。

Collapsible Headings所识别的标签作用域所遵循的规则与Markdown完全一致,这里不再进行详细说明。

4).Codefolding

如果说Collapsible Headings的作用是折一系列叠单元格,那Codefolding的作用就是折叠单元格中的代码。只不过Codefolding不会像Collapsible Headings一样自定义折叠区域和层级,它会自动识别处于同一层级的代码,就像pycharm一样。

Codefolding插件启用后在单元格代码的左侧会出现一些小三角箭头,下图这段代码是折叠之前的样子。

pie.add折叠之后是这样的:

5).Notify

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

要想Notify真正启用,除了要在Nbextensions(jupyter的插件管理器)中Enable之外,还要在juypter的工具栏中设置参数(下图),其中:

  • Disabled:notify功能不启用
  • 0:如果任务执行时间超过0秒,在任务执行完毕后给予提示
  • 5:如果任务执行时间超过5秒,在任务执行完毕后给予提示,否则不提示

目前这一功能已经完美支持Firefox、Chrome和Safari浏览器。

2

技巧篇

6).%debug

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

上面这段代码由于计算中出现分母为0的情况,所以运行时会报错,这时在下一个单元格中输入%debug指令,jupyter就会进入调试模式。

进入调试模式后会直接跳转到异常发生的位置(下图),同时会出现一个ipdb文本框,这里可以输入变量或特定指令,例如输入程序中的变量a,就会返回当前位置相关的变量值;如果输入指令quit,则会退出调试模式。

%debug只是jupyter众多IPython Magic命令中的一个,在juypter中可以使用%lsmagic命令查看所有Magic命令,大家可以根据需要自行选用,这里不再展开介绍。

7).InteractiveShell

我们都知道jupyter中有一个很好用的功能,当把变量名称或没有定义输出结果的语句放在单元格的最后一行,无需print语句,jupyter就会显示变量值,尤其当使用Pandas DataFrames这一数据结构时,输出的结果更加整齐漂亮。

但是这一功能也有其缺点,即默认只能显示最后一行的变量结果,例如下面这段代码,虽然我们要分别查看df的头部数据和尾部数据,但jupyter只能输出尾部数据的结果。

其实这个问题解决起来非常容易,只需要使用下面这两行代码修改内核选项即可。

代码语言:javascript
复制
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity='all'

我们再来看看修改后的运行结果:

这样在需要查看多个变量时,就不必再把他们放到不同的单元格中运行了。

8).简单的问号?

没错,就是一个简单的问号“?”,在jupyter中就能实现快捷文档功能,使用方法就是在你想要查看的属性或方法之前加一个?,例如我们要查看python中的str()方法,就可以执行下图中的操作,jupyter会自动弹出一个窗口返回相关信息。

除了查看文档之外,这个?还可以查看程序中的变量类型。我们在写代码过程中经常需要查看某个变量是何种数据类型,通常我们会使用type()方法,在jupyter中使用?同样可以实现这一功能,而且返回的信息更加完善。

例如我们想要查看上一条内容中的df变量(下图),可以看到除了会返回数据类型信息之外,还会对该dataframe数据的一些基本信息进行描述,推动右侧的滚动条可以查看更多信息。

9).Multicursor

如果我们想让一段代码整体缩进可以把他们全部选中然后按下Tab键,而如果要集中删除一批缩进符,就要用到Multicursor功能了。

在jupyter中使用Multicursor功能,只需要按住Alt键然后拖动鼠标就可以了。通俗来讲,Multicursor的作用就是在普通文本中进行“列操作”,这个概念解释起来比较麻烦,我们就用一个例子来进行演示:

(Gif动画图,多看5秒钟)

可以看到,通过Multicursor功能我们同时选中了多个行中的缩进符并进行了删除操作。


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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python绿色通道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1).Nbextensions
  • Nbextensions相当于Jupyter的插件管理器,使用以下命令安装:
  • 2).Hinterland
  • 3).Collapsible Headings
  • 4).Codefolding
  • 5).Notify
  • 6).%debug
    • 7).InteractiveShell
      • 8).简单的问号?
        • 9).Multicursor
        相关产品与服务
        图数据库 KonisGraph
        图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档