全文共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学习与发展的干货
编译组:王玲、赵璇
领取专属 10元无门槛券
私享最新 技术干货