4 个有效提升 Jupyter Notebooks 效果的非凡技巧

2020-02-21 09:51:51 浏览数 (1)

原标题 | 4 Awesome Tips for Enhancing Jupyter Notebooks

作者 | George Seif

链接 | https://towardsdatascience.com/4-awesome-tips-for-enhancing-jupyter-notebooks-4d8905f926c5

编译 | CONFIDANT、邺调

对于所有希望分享自己工作成果的开发人员来说,Jupyter Notebooks是一个非常棒的工具。它们提供了一种简单的方式来共享笔记本——文本、代码和图形的组合,旨在增强我们向观众传达信息的方式。它们广泛应用于数据分析和数据科学等领域。

然而,我们中的大多数人仅仅只是抓住了Jupyter Notebooks的皮毛。我们使用编写Python代码和显示图形的基本特性。但是你知道Jupyter有很多可以增强它的功能的可定制的特性吗?很酷的选择,可以让你的笔记本写的更有效率和演示更有效。

这里有4个非凡的技巧来提升Jupyter Notebooks的效果!

1)执行Shell命令

技术/编程环境中的shell是一种与计算机进行文本交互(使用文本)的方式。最流行的Unix shell是Bash(Bourne同样是shell)。Bash是在任何Linux机器上使用终端时都会找到的默认shell。

在使用Python时,在编写Python代码和使用shell之间来回切换是很常见的。例如,您可能希望使用Python从磁盘读取某个文件,因此需要检查确切的名称。你通常只需进入你的终端,输入ls就可以得到当前目录下所有文件和文件夹的列表。来回走动会很乏味而且效率很低

真正酷的是Jupyter能够执行shell命令,而无需离开浏览器。你只要多加一个感叹号就行了!在shell命令和Jupyter将其解释为Bash之前。在命令行工作的任何命令都可以在Python Juoyter笔记本中使用,只要在命令前加上“ ! ”就可以了。

代码语言:javascript复制
# Listing folder contents
>>> !ls
mynotebook.ipynb stuff.txt
# Getting the current directory
>>> !pwd
/home/george/github/project_1
# Printing from Bash 
>>> !echo "Pizza is delicious!"
Pizza is delicious!

我们还可以将shell命令的输出分配给Python变量,如下所示。

代码语言:javascript复制
# Getting the current directory. 
# The variable "X" now contains ["/home/george/github/project_1"]
X = !pwd

2) 更换主题

许多文本编辑器和编程IDE都有可定制的主题。阿蒙最喜欢的一个发展是黑暗的主题,如莫纳基,因为它更舒适的眼睛时,你看一整天的屏幕。幸运的是,Jupyter有一个允许选择主题的插件。

要安装插件,只需在终端中运行pip命令:

代码语言:javascript复制
pip install jupyterthemes

您可以列出可用的主题,如下所示:

代码语言:javascript复制
jt -l

在撰写本文时,可以使用以下主题:

代码语言:javascript复制
chesterish
grade3
gruvboxd
gruvboxl
monokai
oceans16
onedork
solarizedd
solarizedl

看看下面的几个。有很多不错的颜色选择!

solarizedd(顶部)| gruvboxl(中间)| grade3(底部)

3) 笔记本扩展

Jupyter笔记本扩展-nbextensions是JavaScript模块,可以用来增强笔记本的功能和使用。这些扩展基本上修改了Jupyter UI以获得更健壮的功能。 我们将首先通过pip安装nbextensions:

代码语言:javascript复制
pip install jupyter_contrib_nbextensions 
jupyter contrib nbextension install

安装完成后,启动Jupyter。您将看到一个名为NBextensions的新选项卡。一旦你选择它,你会看到许多Jupyter笔记本扩展选项!

你可以查找这些扩展的大部分,看看它们在Google快速搜索中的作用。下面我重点介绍了一些最有用的。

(1) 目录

如其名称所述,目录根据笔记本中的标签创建的标题自动生成笔记本的目录。例如,我在下面的示例图像中创建的标题是:

代码语言:javascript复制
# This is a super big title
## This is a big title
### This is a medium title
#### This is a small title

目录在左边生成得很好。表中的每个标题都有一个链接,双击该链接可将您带到该部分。当你的笔记本开始变大,并且你有很多分区时,这是非常方便的!

(2) Hinterland(上述选项卡下,自动补全)

代码完成是大多数ide中非常常见的特性,尤其是Python的PyCharm。开发人员喜欢它,因为它使他们的工作变得如此简单,不必记住每个命令,因为他们知道他们的IDE会为他们清理东西。

Hinterland允许在Jupyter笔记本中自动完成代码。当你打字时,建议摆在你面前。当您从外部库中搜索命令时,这是最值得注意的,如下面的示例所示。超级方便!

(3) 拆分单元格

拆分单元格允许您并排查看两个单元格。当你有两个相关的单元格时,这是非常方便的,比如一个描述和它所指的可视化。

4) 使用Qgrid探索数据帧

我们的最后一站是Qgrid-一个允许您在没有任何复杂Pandas代码的情况下浏览和编辑数据帧的工具。

Qgrid以交互方式呈现Jupyter笔记本中的pandas数据帧。通过这种呈现,您可以获得诸如滚动、排序和过滤之类的直观控件,还可以通过双击所需的单元格编辑数据帧。

让我们从安装Qgrid开始:

代码语言:javascript复制
pip install qgrid
jupyter nbextension enable --py --sys-prefix widgetsnbextension

要使用Qgrid呈现数据帧,只需导入它,然后将数据帧传递给show_grid函数,如下所示:

代码语言:javascript复制
import qgrid
qgrid_widget = qgrid.show_grid(df, show_toolbar=True)
qgrid_widget

这样做将显示带有许多交互选项的数据帧:

  • 添加和删除行
  • 筛选行
  • 编辑单元格

还可以通过向show_grid函数传递更多参数来启用多个交互选项。您可以在GitHub官方页面上阅读有关Qgrid全部功能的更多详细信息(https://github.com/quantopian/qgrid)。

总结

增强Jupyter笔记本的4个妙招已经介绍完了。如果你想获取更多实用技巧,别担心!有更多的Jupyter小部件和扩展可供使用。Jupyter笔记本的官方文档是一个很好的入门文档,推荐感兴趣的朋友们阅读(https://jupyter.org/documentation)。

0 人点赞