作者 | 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)。