竹笋

首页 » 问答 » 环境 » 增强JupyterNotebook的功能
TUhjnbcbe - 2023/7/9 20:58:00

选自towarddatascience

作者:GeorgeSeif

机器之心编译

参与:魔王

你对JupyterNotebook了解多少?本文介绍了一些自定义功能,帮助你使用Jupyternotebook更高效地写代码。

JupyterNotebook是所有开发者共享工作的神器,它为共享Notebooks提供了一种便捷方式:结合文本、代码和图更快捷地将信息传达给受众。目前,JupyterNotebook已经应用于数据分析和数据科学等领域。

然而,大部分开发者仅仅了解其皮毛。开发者使用JupyterNotebook的基本功能来写Python代码、展示图。但是你们知道Jupyter中还有大量自定义功能吗?这些很酷的选项可以帮助你使用Jupyternotebook更高效地写代码、展示图。

本文将介绍强化JupyterNotebook功能的4种方法。

1.执行Shell命令

在技术或编程文本中,shell表示使用文本与计算机进行交互的方式。最流行的Unixshell是Bash(BourneAgainSHell),Bash是Linux机器上终端默认的shell。

在使用Python工作时,你会经常在写Python代码和使用shell命令之间来回切换。例如,你想使用Python读取磁盘中的某份文件,而这需要你确认文件名。通常情况下,你需要在终端输入ls,获得当前目录的所有文件和文件夹列表。但这样来回切换非常繁琐低效。

很炫酷的是,Jupyter能够执行Shell命令,你甚至无需离开浏览器。只需要在shell命令前加一个感叹号!,Jupyter会将其转换为Bash。在任一命令前加感叹号!,它们就可以在PythonJupyterNotebook中运行。

#Listingfoldercontents!lsmynotebook.ipynbstuff.txt#Gettingthecurrentdirectory!pwd/home/george/github/project_1#PrintingfromBash!echoPizzaisdelicious!Pizzaisdelicious!

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

#Gettingthecurrentdirectory.#ThevariableXnowcontains[/home/george/github/project_1]X=!pwd

2.更换主题

很多文本编辑器和编程IDE都有自定义主题。开发者最喜欢的主题之一是暗黑主题(如monaki),因为对于整天盯着屏幕的开发者而言,暗黑主题看起来比较舒适。幸运的是,Jupyter有一个插件,允许用户自行选择主题。

要想安装该插件,你只需在终端中运行以下pip命令:

pipinstalljupyterthemes

运行以下命令,可得到可用的主题列表:

jt-l

截至本文写作时,可选择的主题包括:

chesterishgrade3gruvboxdgruvboxlmonokaioceans16onedorksolarizeddsolarizedl

查看这些主题,如下图所示,我们拥有大量不同的颜色选择。

solarizedd(左),gruvboxl(中),grade3(右)。

3.Notebook扩展插件

JupyterNotebook扩展插件(nbextensions)是一些JavaScript模块,你可以使用它们强化Notebook的功能以及使用。扩展插件本质上修改了JupyterUI,以实现更稳健的功能。

我们首先通过pip安装nbextensions:

pipinstalljupyter_contrib_nbextensionsjupytercontribnbextensioninstall

安装完成后,启动Jupyter。你将看到一个新选项——NBextensions。选择它之后,你会看到大量JupyterNotebook扩展插件选项。

通过快速搜索,你可以查看这些扩展插件的功能。下面我将介绍几个最重要的插件。

TableofContents

正如其名称所描述的那样,TableofContents基于notebook中#创建的标题自动生成目录。例如,我在notebook中创建了以下标题:

#Thisisasuperbigtitle##Thisisabigtitle###Thisisamediumtitle####Thisisasmalltitle

则左侧会生成目录。双击标题,可链接至对应章节内容。当notebook规模很大,选项很多时,这个功能非常方便!

Hinterland

代码补全是大部分IDE都具备的常见功能,比如PyCharm。开发者喜欢这个功能,因为这使得他们的工作更加简单,开发者无需记住每一个命令,IDE会准备好一切。

Hinterland可在JupyterNotebook内完成代码补全。在键入过程中,你会看到一些代码补全建议。尤其是当你搜索外部库的命令时(示例如下所示)。这简直太方便了!

拆分单元格(SplitCells)

拆分单元格允许开发者并排查看2个单元格。当你有两个相关单元格时(比如描述及其对应的图示),这个功能非常方便。

4.使用Qgrid探索Dataframes

最后一站是Qgrid,该工具允许开发者在不使用复杂Pandas代码的情况下,探索和编辑数据帧。Qgrid可在Jupyternotebook中以交互的方式渲染pandas数据帧,这样你就可以执行一些直观的控制,如滚动、排序和筛选,以及双击单元格编辑数据帧。

我们首先安装Qgrid:

pipinstallqgridjupyternbextensionenable--py--sys-prefixwidgetsnbextension

要想使用Qgrid渲染数据帧,开发者只需导入Qgrid,然后将数据帧输入到show_grid函数:

importqgridqgrid_widget=qgrid.show_grid(df,show_toolbar=True)qgrid_widget

这样,你可以对数据帧执行大量交互式操作:

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

将更多参数输入show_grid函数可以执行其他交互式操作。关于Qgrid的全部功能,参见:

1
查看完整版本: 增强JupyterNotebook的功能