游戏本之家

查看: 70|回复: 10

增强Jupyter Notebook的功能,这里有四个妙招

[复制链接]
edelweiss_cxk 该用户已被删除
发表于 2019-11-8 16:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
"\u003Cdiv\u003E\u003Cp\u003E选自toward data science\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E作者:George Seif\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E机器之心编译\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E参与:魔王\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Cp\u003E你对 Jupyter Notebook 了解多少?本文介绍了一些自定义功能,帮助你使用 Jupyter notebook 更高效地写代码。\u003C\u002Fp\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003EJupyter Notebook 是所有开发者共享工作的神器,它为共享 Notebooks 提供了一种便捷方式:结合文本、代码和图更快捷地将信息传达给受众。目前,Jupyter Notebook 已经应用于数据分析和数据科学等领域。\u003C\u002Fp\u003E\u003Cp\u003E然而,大部分开发者仅仅了解其皮毛。开发者使用 Jupyter Notebook 的基本功能来写 Python 代码、展示图。但是你们知道 Jupyter 中还有大量自定义功能吗?这些很酷的选项可以帮助你使用 Jupyter notebook 更高效地写代码、展示图。\u003C\u002Fp\u003E\u003Cp\u003E本文将介绍强化 Jupyter Notebook 功能的 4 种方法。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E1. 执行 Shell 命令\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E在技术或编程文本中,shell 表示使用文本与计算机进行交互的方式。最流行的 Unix shell 是 Bash(Bourne Again SHell),Bash 是 Linux 机器上终端默认的 shell。\u003C\u002Fp\u003E\u003Cp\u003E在使用 Python 工作时,你会经常在写 Python 代码和使用 shell 命令之间来回切换。例如,你想使用 Python 读取磁盘中的某份文件,而这需要你确认文件名。通常情况下,你需要在终端输入 ls,获得当前目录的所有文件和文件夹列表。但这样来回切换非常繁琐低效。\u003C\u002Fp\u003E\u003Cp\u003E很炫酷的是,Jupyter 能够执行 Shell 命令,你甚至无需离开浏览器。只需要在 shell 命令前加一个感叹号!,Jupyter 会将其转换为 Bash。在任一命令前加感叹号!,它们就可以在 Python Jupyter Notebook 中运行。\u003C\u002Fp\u003E\u003Cpre\u003E# Listing folder contents\u003Cbr\u003E>>> !ls\u003Cbr\u003Emynotebook.ipynb stuff.txt# Getting the current directory\u003Cbr\u003E>>> !pwd\u003Cbr\u003E\u002Fhome\u002Fgeorge\u002Fgithub\u002Fproject_1# Printing from Bash \u003Cbr\u003E>>> !echo \"Pizza is delicious!\"\u003Cbr\u003EPizza is delicious!\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E我们还可以将 shell 命令的输出分配给 Python 变量,如下所示:\u003C\u002Fp\u003E\u003Cpre\u003E# Getting the current directory. \u003Cbr\u003E# The variable \"X\" now contains [\"\u002Fhome\u002Fgeorge\u002Fgithub\u002Fproject_1\"]\u003Cbr\u003EX = !pwd\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E\u003Cstrong\u003E2. 更换主题\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F074fd10e773b4d528c66b3ef206561ae\" img_width=\"1080\" img_height=\"608\" alt=\"增强Jupyter Notebook的功能,这里有四个妙招\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E很多文本编辑器和编程 IDE 都有自定义主题。开发者最喜欢的主题之一是暗黑主题(如 monaki),因为对于整天盯着屏幕的开发者而言,暗黑主题看起来比较舒适。幸运的是,Jupyter 有一个插件,允许用户自行选择主题。\u003C\u002Fp\u003E\u003Cp\u003E要想安装该插件,你只需在终端中运行以下 pip 命令:\u003C\u002Fp\u003E\u003Cpre\u003Epip install jupyterthemes\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E运行以下命令,可得到可用的主题列表:\u003C\u002Fp\u003E\u003Cpre\u003Ejt -l\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E截至本文写作时,可选择的主题包括:\u003C\u002Fp\u003E\u003Cpre\u003Echesterish\u003Cbr\u003Egrade3\u003Cbr\u003Egruvboxd\u003Cbr\u003Egruvboxl\u003Cbr\u003Emonokai\u003Cbr\u003Eoceans16\u003Cbr\u003Eonedork\u003Cbr\u003Esolarizedd\u003Cbr\u003Esolarizedl\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E查看这些主题,如下图所示,我们拥有大量不同的颜色选择。\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F41d2b7a1e4c246329ebf4bdf20dc08ec\" img_width=\"1080\" img_height=\"206\" alt=\"增强Jupyter Notebook的功能,这里有四个妙招\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cem\u003Esolarizedd(左),gruvboxl(中),grade3(右)。\u003C\u002Fem\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003E3. Notebook 扩展插件\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003EJupyter Notebook 扩展插件(nbextensions)是一些 JavaScript 模块,你可以使用它们强化 Notebook 的功能以及使用。扩展插件本质上修改了 Jupyter UI,以实现更稳健的功能。\u003C\u002Fp\u003E\u003Cp\u003E我们首先通过 pip 安装 nbextensions:\u003C\u002Fp\u003E\u003Cpre\u003Epip install jupyter_contrib_nbextensions \u003Cbr\u003Ejupyter contrib nbextension install\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E安装完成后,启动 Jupyter。你将看到一个新选项——NBextensions。选择它之后,你会看到大量 Jupyter Notebook 扩展插件选项。\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F274014a8e3ae45f2808a244811b4b58c\" img_width=\"1080\" img_height=\"955\" alt=\"增强Jupyter Notebook的功能,这里有四个妙招\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E通过快速搜索,你可以查看这些扩展插件的功能。下面我将介绍几个最重要的插件。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cstrong\u003ETable of Contents\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E正如其名称所描述的那样,Table of Contents 基于 notebook 中 # 创建的标题自动生成目录。例如,我在 notebook 中创建了以下标题:\u003C\u002Fp\u003E\u003Cpre\u003E# This is a super big title\u003Cbr\u003E## This is a big title\u003Cbr\u003E### This is a medium title\u003Cbr\u003E#### This is a small title\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E则左侧会生成目录。双击标题,可链接至对应章节内容。当 notebook 规模很大,选项很多时,这个功能非常方便!\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp9.pstatp.com\u002Flarge\u002Fpgc-image\u002F8d4a60ede9f34403be0e90065f9cae5d\" img_width=\"1080\" img_height=\"464\" alt=\"增强Jupyter Notebook的功能,这里有四个妙招\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cstrong\u003EHinterland\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E代码补全是大部分 IDE 都具备的常见功能,比如 PyCharm。开发者喜欢这个功能,因为这使得他们的工作更加简单,开发者无需记住每一个命令,IDE 会准备好一切。\u003C\u002Fp\u003E\u003Cp\u003EHinterland 可在 Jupyter Notebook 内完成代码补全。在键入过程中,你会看到一些代码补全建议。尤其是当你搜索外部库的命令时(示例如下所示)。这简直太方便了!\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp9.pstatp.com\u002Flarge\u002Fpgc-image\u002F108750e85a274d76b02c5717c9f86ff7\" img_width=\"698\" img_height=\"318\" alt=\"增强Jupyter Notebook的功能,这里有四个妙招\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cstrong\u003E拆分单元格(Split Cells)\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E拆分单元格允许开发者并排查看 2 个单元格。当你有两个相关单元格时(比如描述及其对应的图示),这个功能非常方便。\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F4e28ca31adc243159267feb466689eb1\" img_width=\"639\" img_height=\"338\" alt=\"增强Jupyter Notebook的功能,这里有四个妙招\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E\u003Cstrong\u003E4. 使用 Qgrid 探索 Dataframes\u003C\u002Fstrong\u003E\u003C\u002Fp\u003E\u003Cp\u003E最后一站是 Qgrid,该工具允许开发者在不使用复杂 Pandas 代码的情况下,探索和编辑数据帧。Qgrid 可在 Jupyter notebook 中以交互的方式渲染 pandas 数据帧,这样你就可以执行一些直观的控制,如滚动、排序和筛选,以及双击单元格编辑数据帧。\u003C\u002Fp\u003E\u003Cp\u003E我们首先安装 Qgrid:\u003C\u002Fp\u003E\u003Cpre\u003Epip install qgrid\u003Cbr\u003Ejupyter nbextension enable --py --sys-prefix widgetsnbextension\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E要想使用 Qgrid 渲染数据帧,开发者只需导入 Qgrid,然后将数据帧输入到 show_grid 函数:\u003C\u002Fp\u003E\u003Cpre\u003Eimport qgrid\u003Cbr\u003Eqgrid_widget = qgrid.show_grid(df, show_toolbar=True)\u003Cbr\u003Eqgrid_widget\u003Cbr\u003E\u003C\u002Fpre\u003E\u003Cp\u003E这样,你可以对数据帧执行大量交互式操作:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E添加和删除行;\u003C\u002Fli\u003E\u003Cli\u003E筛选行;\u003C\u002Fli\u003E\u003Cli\u003E编辑单元格。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E将更多参数输入 show_grid 函数可以执行其他交互式操作。关于 Qgrid 的全部功能,参见:https:\u002F\u002Fgithub.com\u002Fquantopian\u002Fqgrid。\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Ff94eb2b345094a54b4a0a177d6ddbc85\" img_width=\"640\" img_height=\"339\" alt=\"增强Jupyter Notebook的功能,这里有四个妙招\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E以上就是强化 Jupyter Notebook 功能的 4 种方法。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cem\u003E原文链接:https:\u002F\u002Ftowardsdatascience.com\u002F4-awesome-tips-for-enhancing-jupyter-notebooks-4d8905f926c5\u003C\u002Fem\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E"'.slice(6, -6),      groupId: '6739770134224699908
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
最期盼的就是jupyter能简单实现多用户功能!局域网都可以登陆进行开发
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
交互模式下运行C++怎样弄?
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
转发了
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
转发了
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
转发了
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
转发了
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
转发了
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
转发了
回复 支持 反对

使用道具 举报

发表于 2019-11-8 16:10 | 显示全部楼层
转发了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

发布主题 快速回复 返回列表

QQ|小黑屋|游戏本之家 ( 冀ICP备12015144号 )

GMT+8, 2019-11-19 00:38 , Processed in 1.232402 second(s), 54 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表