用Jupyter Notebooks隐藏优势打开新世界大门

全文共2402字,预计学习时长5分钟

Netflix的数据科学家和工程师处理数据的重要方式之一是通过Jupyter Notebooks。Notebooks能够充分利用协作的、可扩展、可伸缩和可再生的数据科学。

对于我们大多数人来说,Jupyter Notebooks是处理快速原型设计和探索性分析的实际平台。然而,Jupyter Notebooks的用处远不止如此。Jupyter有许多隐藏的功能没有得到充分的开发。让我们试着探索一下Jupyter Notebooks的潜在特性,从而利用这些特性提高工作效率。

目录

1. 执行Shell命令

2. Jupyter 主题

3. Notebook 扩展插件

4. Jupyter 小部件

5. Qgrid

6. 幻灯片

7. 嵌入URL、PDF和Youtube视频

1. 执行Shell命令

Notebook 是一个新的shell

Shell是一种与计算机进行文本交互的方法。在Unix shell中,Bash(Bourne Again SHell)最受大家欢迎。

Bash是大多数现代发行的Unix系统以及大多数为Windows提供类Unix系统工具的工具包中的默认shell。

现在,当我们使用任何Python解释器时,我们需要定期在shell和IDLE之间切换,以便在我们需要时能够使用命令行工具。

然而,Jupyter Notebook通过添加一个额外的命令,使我们能够轻松地从Notebook中执行shell命令!在执行命令之前,只要通过在命令行前面加上字符,命令行上工作的任何命令都可以在IPython中使用。

In [1]: !ls

example.jpeg list tmp

In [2]: !pwd

/home/Parul/Desktop/Hello World Folder'

In [3]: !echo "Hello World"

Hello World

我们甚至可以通过以下方式在shell中进行值的来回传递:

In [4]: files= !ls

In [5]: print(files)

['example.jpeg', 'list', 'tmp']

In [6]: directory = !pwd

In [7]: print(directory)

['/Users/Parul/Desktop/Hello World Folder']

In [8]: type(directory)

In [8]: type(directory)

注意,返回的数据类型不是成列的。

2. Jupyter 主题

将Jupyter Notebooks主题化

如果你感觉Jupyter Notebooks的白色背景很无趣,那么主题就很适合你。主题还能增强代码的表示。

安装:

pip install jupyterthemes

可用主题列表:

jt –l

目前,可用的主题有chesterish, grade3, gruvboxd, gruvboxl monokai, oceans16, onedork, solarizedd ,solarizedl。

# selecting a particular theme

jt -t

# reverting to original Theme

jt -r

· 每次改变主题时,你必须重启Jupyter Notebooks才能看到效果。

· 同样的命令也可以在Jupyter Notebooks中通过在命令之前加上“!”来执行。

3. Notebook 扩展插件

扩展可能性

Notebook扩展插件能让你摆脱使用Jupyter Notebook的一般方式。 Notebook扩展插件(或nbextensions)是JavaScript模块,你可以在Notebook的前端中加载大多数视图。 这些扩展插件改变了用户体验和接口。

安装

通过conda安装

conda install -c conda-forge

jupyter_nbextensions_configurator

或通过PIP 安装

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install

#incase you get permission errors on MacOS,

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install –user

现在启动一个Jupyter Notebook,你应该可以看到一个带有许多选项的NBextensions Tab。点击你想要的NBextensions Tab,你将见证奇迹的发生。

为了防止你找不到选项卡,从下图中你可以看到另一个nbextension位于菜单Edit下。

接下来我们一起讨论一些实用的扩展插件。

1. Hinterland

Hinterland为代码单元中的每个按键启用代码自动完成菜单,而不是仅使用选项卡调用它。 这使得Jupyter Notebook拥有与其他流行的IDE(如PyCharm)一样的自动完成功能。

2. Snippets

此扩展插件为Notebook工具栏添加了一个下拉菜单,允许将代码片段单元格轻松插入当前Notebook中。

3. Split Cells Notebook

此扩展插件将Notebook的单元格分开,再将它们相邻放置。

4. Table of Contents

此扩展插件可以收集所有正在运行的标题,并将其显示在浮动窗口中,作为侧边栏或导航菜单。 此扩展插件可拖动、可调整大小、可折叠、可停靠。

5. Collapsible Headings

Collapsible Headings允许notebook具有由标题分隔的可折叠部分。如果notebook中有很多不干净的代码,你可以简单地将其折叠,以避免反复滚动这些代码。

6. Autopep8

Autopep8使用户仅通过单击即可重新格式化/美化代码单元格的内容。如果你厌倦了通过反复按空格键来格式化代码,那么autopep8就是你的救星。

4. Jupyter 小部件

使notebooks 交互

小部件(Widgets)指在浏览器中具有代表性的多变的python对象,通常作为滑块、文本框等控件。小部件可用于为notebook构建交互式GUI。

安装

# pip

pip install ipywidgets

jupyter nbextension enable --py widgetsnbextension

# Conda

conda install -c conda-forge ipywidgets

#Installing ipywidgets with conda automatically enables the extension

下面我们将介绍一些小部件。你可以访问它们的Github存储库了解详情。

交互

交互功能(ipywidgets.interact)自动创建用户界面(UI)控件,用于交互式地探索代码和数据。这是开始使用IPython小部件的最简单方法。

# Start with some imports!

from ipywidgets import interactimport ipywidgets as widgets

1. 基础小部件

def f(x):

return x

# Generate a slider

interact(f, x=10,);

# Booleans generate check-boxes

interact(f, x=True);

# Strings generate text areas

interact(f, x='Hi there!');

2. 高级小部件

下面列出了一些有用的高级小部件:

· 播放小部件(Play Widget)

播放小部件可用于通过以特定速度迭代整数序列来执行动画。 下面滑块的值链接到播放器。

play = widgets.Play(

#interval=10,

value=50,

min=0,

max=100,

step=1,

description="Press play",

disabled=False

)

slider = widgets.IntSlider()

widgets.jslink((play, 'value'), (slider, 'value'))

widgets.HBox([play, slider])

· 日期选择控件

日期选择控件可在Chrome和IE Edge中使用,但目前无法在Firefox或Safari中使用,因为后者不支持HTML日期输入栏。

widgets.DatePicker(

description='Pick a Date',

disabled=False

)

· 颜色选择控件

widgets.ColorPicker(

concise=False,

description='Pick a color',

value='blue',

disabled=False

)

· 标签页部件

tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']

children = [widgets.Text(description=name) for name in tab_contents]

tab = widgets.Tab()

tab.children = children

for i in range(len(children)):

tab.set_title(i, str(i))

tab

5. Qgrid

使数据帧直观

Qgrid也是一个Jupyter Notebook小部件,但主要用于数据帧。Qgrid通过使用SlickGrid在Jupyter Notebook中呈现pandas数据帧。这使你能够使用直观的滚动、排序和筛选控件来探索数据帧,你也可以通过双击单元格来编辑数据帧。

安装

通过PIP 安装

pip install qgrid

jupyter nbextension enable --py --sys-prefix qgrid

# only required if you have not enabled the ipywidgets nbextension yet

jupyter nbextension enable --py --sys-prefix widgetsnbextension

通过Conda 安装

# only required if you have not added conda-forge to your channels yet

conda config --add channels conda-forge

conda install qgrid

6. 幻灯片

交互式代码是最好的

Notebook是教学和编写可解释代码的有效工具。然而,当我们想要呈现我们的作品时,我们要么展示整个Notebook(包括所有代码),要么利用powerpoint辅助展示。这种情况再也不会发生了。现在Jupyter Notebook可以轻松转换为幻灯片,我们可以随手选择要显示的内容以及要隐藏在Notebook中的内容。

有两种可以将Notebook转换成幻灯片的方法:

1. Jupyter Notebook的内置幻灯片选项

打开一个新的Notebook, 依次点击 视图 → 单元工具栏→ 幻灯片放映,你可以在每个单元格顶部的浅灰色处自定义幻灯片。

现在转到Notebook所在的目录并输入以下代码:

jupyter nbconvert *.ipynb --to slides --post serve

# insert your notebook name instead of *.ipynb

幻灯片在端口8000显示。此外,目录中将生成.html文件,你也可以从此文件中访问幻灯片。

应用主题背景的幻灯片看起来会更加优美。 让我们将主题'onedork'应用到notebook中,并将其转换为幻灯片。

这些幻灯片有一个缺点,即你可以看到代码,但不能编辑它。RISE插件能解决这个问题。

2. 使用RISE插件

RISE是Reveal.js — Jupyter/IPython Slideshow Extension的缩写。它利用reveal.js来运行幻灯片。 这非常实用,因为它还能够在不必退出幻灯片的情况下运行代码。

安装

1 — 使用Conda 安装(推荐)

conda install -c damianavila82 rise

2 — 使用PIP 安装(不推荐)

pip install RISE

在适当的位置安装JS和CSS的另外两个步骤:

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

#enable the nbextension:jupyter-nbextension enable rise --py --sys-prefix

现在让我们使用RISE进行交互式幻灯片放映。我们将重新打开之前创建的Jupyter notebook。现在我们注意到一个新的扩展插件,上面写着“输入/退出RISE幻灯片放映”。

7. 嵌入URL、PDF和Youtube视频

在此将其放映

如果可以使用IPython的显示模块将URL、pdf和视频轻松地嵌入Jupyter notebook中,那么为什么只使用链接呢?

URLs

#Note that http urls will not be displayed. Only https are allowed inside the Iframe

from IPython.display import IFrameIFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)

PDFs

from IPython.display import IFrameIFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)

Youtube 视频

from IPython.display import YouTubeVideo

YouTubeVideo('mJeNghZXtMo', width=800, height=300)

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货

编译组:王玲、赵璇

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190109B0KJUX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券