个性化阅读
专注于IT技术分析

Jupyter Notebook教程:权威指南

本文概述

Jupyter Notebook教程:权威指南

作为一种Web应用程序, 你可以在其中创建和共享包含实时代码, 方程式, 可视化效果以及文本的文档, Jupyter Notebook是帮助你获得所需的数据科学技能的理想工具之一。

本教程将涵盖以下主题:

  • Jupyter Notebook应用及其组件的基本概述,
  • Jupyter Project的历史, 展示了它如何与IPython连接,
  • 概述了三种最流行的Notebook运行方式:借助Python发行版, pip或Docker容器,
  • 对第一部分介绍的组件进行实用介绍, 并提供Pandas DataFrames示例, 有关如何使Notebook文档变得神奇的解释, 以及常见问题的答案, 例如”如何在Python 2和3之间切换” ?”, 和
  • 最佳实践和技巧将帮助你使Notebook电脑成为任何数据科学项目的附加值!

(要在Python中练习pandas数据框, 请在Pandas基础上尝试此课程。)

什么是Jupyter Notebook?

在这种情况下, “Notebook”或”Notebook文档”表示同时包含代码和富文本元素(例如图形, 链接, 等式)的文档。由于代码和文本元素的混合, 这些文档是理想的位置汇总分析说明及其结果, 以及可以执行它们以实时执行数据分析。

Jupyter Notebook应用程序将生成这些文档。

我们将稍作讨论。

现在, 你应该知道” Jupyter”是一个松散的缩写, 意思是Jul​​ia, Python和R。这些编程语言是Jupyter应用程序的第一个目标语言, 但是如今, Notebook技术还支持许多其他语言。

在那里, 你可以找到:Jupyter Notebook。

正如你所看到的, 一方面, 整个环境的主要组件是Notebook本身和应用程序。另一方面, 你还拥有一个Notebook内核和一个Notebook仪表板。

让我们更详细地看一下这些组件。

什么是Jupyter Notebook应用程序?

作为服务器客户端应用程序, Jupyter Notebook App允许你通过Web浏览器编辑和运行Notebook。该应用程序可以在无法访问Internet的PC上执行, 也可以安装在远程服务器上, 你可以在其中通过Internet访问它。

它的两个主要组件是内核和仪表板。

内核是运行并检查用户代码的程序。 Jupyter Notebook应用程序具有用于Python代码的内核, 但也有可用于其他编程语言的内核。

该应用程序的仪表板不仅可以显示已创建的Notebook文档并可以重新打开, 还可以用于管理内核:你可以运行哪些内核, 并在必要时关闭它们。

IPython和Jupyter Notebook的历史

要完全了解Jupyter Notebook是什么以及它提供的功能, 你需要了解它的起源。

让我们简短地备份到1980年代后期。 Guido Van Rossum开始在荷兰国家数学和计算机科学研究院从事Python研究。

等等, 也许那太过分了。

让我们去二十年后的2001年下半年。 FernandoPérez开始开发IPython。

在2005年, Robert Kern和FernandoPérez都尝试构建Notebook系统。不幸的是, 该原型从未完全可用。

快进了两年:IPython团队一直在努力, 在2007年, 他们又制定了另一种尝试来实现Notebook型系统。到2010年10月, 已经有了一个网络Notebook的原型, 并在2011年夏季合并了该原型, 并于2011年12月21日以0.12的版本发布。随后的几年中, 该团队获得了奖项, 例如Advancement于2013年3月23日获得费尔南多·佩雷斯(FernandoPérez)的免费软件和乔尔特生产力奖(Jolt Productivity Award), 并获得了阿尔弗雷德·P·斯隆基金会(Alfred P. Sloan Foundations)的资助。

最后, 在2014年, Jupyter项目是IPython的一个衍生项目。 IPython现在是Python后端的名称, 也称为内核。最近, 下一代Jupyter Notebook已引入社区。它叫做JupyterLab。

毕竟, 你可能想知道这种Notebook创意的起源或对创作者的影响。

通过对这些Notebook的历史进行简要研究, 可以发现FernandoPérez和Robert Kern在开发SageNotebook的同时正在开发Notebook。由于SageNotebook的布局基于GoogleNotebook的布局, 因此你还可以得出结论, 谷歌在那时也曾经具有Notebook功能。

对于Notebook的想法, 似乎费尔南多·佩雷斯以及SageNotebook的创建者之一威廉·斯坦因已经确认他们是MathematicaNotebook和Maple工作表的狂热用户。 MathematicaNotebook由Theodore Gray于1988年创建为前端或GUI。

包含普通文本和计算和/或图形的Notebook概念绝对不是什么新鲜事物。

此外, 开发人员彼此之间保持着密切的联系, 与此同时, 其他尝试在IPython的GUI上也失败了, 并且使用了” AJAX” =网络应用程序, 这不需要用户每次执行某项操作时都刷新整个页面, 威廉·斯坦(William Stein)团队开始开发SageNotebook的另外两个动机。

如果你想了解更多详细信息, 请查看FernandoPérez和William Stein的有关Notebook历史的个人资料。另外, 你可以在此处阅读有关从IPython到Jupyter Notebook的历史和演变的更多信息。

如何安装Jupyter Notebook

使用Anaconda Python发行版运行Jupyter Notebook

此处的要求之一是Python(Python 3.3或更高版本或Python 2.7)。一般建议你使用Anaconda发行版安装Python和Notebook应用程序。

Anaconda的优点是你可以访问720多个软件包, 这些软件包可以轻松地通过Anaconda的conda, 软件包, 依赖项和环境管理器进行安装。你可以在此处按照Mac或Windows上安装Anaconda的说明进行操作。

不清楚吗?你可以随时在此处阅读Jupyter安装说明。

以Python方式运行Jupyter Notebook:Pip

如果你不想安装Anaconda, 则只需确保你具有最新版本的pip。如果你已安装Python, 则通常已经安装了它。

你需要做的是升级pip:


# On Windows
python -m pip install -U pip setuptools
# On OS X or Linux
pip install -U pip setuptools

一旦有了点, 就可以跑步


# Python2
pip install jupyter
# Python 3
pip3 install jupyter

如果你需要有关在Python中安装软件包的更多信息, 可以转到此页面。

在Docker容器中运行Jupyter Notebook

Docker是在容器中运行软件的出色平台。这些容器是独立且隔离的过程。

这听起来有点像虚拟机, 对吗?

并不是的。转到此处阅读有关它们为何与众不同的解释, 并附上一个奇妙的房子隐喻。

Jupyter Notebook教程-Docker

如果安装了Docker Toolbox, 则可以轻松地开始使用Docker:它包含启动和运行容器所需的所有工具。按照安装说明进行操作, 选择” Docker QuickStart Terminal”, 并指示还安装Kitematic Visual Management工具(如果尚未安装)或任何其他虚拟化平台。

通过Docker快速入门终端进行安装可能会花费一些时间, 但是接下来就可以了。使用命令docker run来运行Docker”映像”。你可以将这些映像视为预打包的软件捆绑包, 在运行它们时可以从Docker Hub自动下载它们。

提示:浏览Docker Image Library, 以找到数千种最受欢迎​​的软件工具。你还将找到可以在Docker容器中运行的其他Notebook, 例如Data ScienceNotebook, R Notebook等。

要在Docker容器中运行正式的Jupyter Notebook映像, 请在Docker Quickstart Terminal中输入以下命令:


docker run --rm -it -p 8888:8888 -v "$(pwd):/notebooks" jupyter/notebook 

提示:如果要下载其他映像, 例如上面提到的Data Science Notebook, 则只需用在Docker映像库中找到的存储库名称替换” Jupyter / notebook”位, 例如” Jupyter” / datascience-notebook”。

最新的Jupyter HTML Notebook图像将被下载并启动, 或者你可以打开该应用程序。继续阅读以了解如何做到这一点!

如何使用Jupyter Notebook

现在你已经知道要使用什么, 并且已经安装了它, 现在该开始真正了!

Jupyter Notebook入门

运行以下命令以打开应用程序:


jupyter notebook

然后, 你将在Web浏览器中的以下地址打开应用程序:http:// localhost:8888。这在下面的gif中得到了展示:

Jupyter Notebook应用概述

“文件”选项卡是保存所有文件的位置, “运行”选项卡可跟踪所有进程, 第三个选项卡”群集”由IPython并行(IPython的并行计算框架)提供。它允许你控制许多单独的引擎, 它们是IPython内核的扩展版本。

你可能要先制作一个新Notebook。

你可以通过单击”文件”选项卡中的”新建按钮”轻松完成此操作。你会看到可以选择创建常规文本文件, 文件夹和终端。最后, 你还将看到制作Python 3Notebook的选项。

请注意, 最后一个选项将取决于你安装的Python版本。另外, 如果应用程序将python [conda root]和python [default]显示为内核名称而不是Python 3, 则可以尝试执行conda remove _nb_ext_conf或阅读下面的Github问题并进行必要的调整。

让我们首先从常规文本文件开始。当它打开时, 你会看到它看起来像其他任何文本编辑器一样。你可以切换行号或/和标题, 可以指示你正在编写的编程语言, 还可以进行查找和替换。此外, 你可以保存, 重命名或下载文件或制作新文件。

你还可以制作文件夹以将所有文档整理在一起。只需按下初始菜单中的”新建”按钮时出现的”文件夹”选项, 新文件夹便会出现在你的概述中。你最好立即重命名该文件夹, 因为该文件夹将显示为名称为”无标题的文件夹”的文件夹。

第三, 终端在那里支持基于浏览器的交互式终端会话。它的工作原理与你的终端或cmd应用程序一样!将python输入终端, 按ENTER键, 一切就好了。

提示:如果你需要纯IPython终端, 则可以在终端或Cmd中键入” ipython”。例如, 当你想获得比运行Notebook应用程序时终端中显示的错误消息更清晰的错误消息时, 这可能会派上用场。

如果要在Notebook上启动, 请返回主菜单, 然后在”Notebook”类别中单击” Python 3″选项。

你将立即看到Notebook名称, 菜单栏, 工具栏和一个空的代码单元:

Jupyter界面概述

你可以立即开始为代码导入必要的库。这是最佳实践之一, 我们将在后面详细讨论。

之后, 你可以根据需要添加, 删除或编辑单元格。并且不要忘了插入说明性文字或标题和字幕来阐明你的代码!这就是使Notebook最终成为Notebook的原因。

Jupyter Notebook教程:权威指南

提示:如果要在代码单元中插入LaTex, 只需将LaTeX数学放入$$内, 如下所示:


$$c = \sqrt{a^2 + b^2}$$

你还可以选择显示LaTex输出:


from IPython.display import display, Math, Latex
display(Math(r'\sqrt{a^2 + b^2}')) 

你不确定整个Notebook的外观吗?跳到最后一部分, 找到最棒的!

在Jupyter Notebooks中的Python 2和3之间切换

到目前为止, 使用Notebook电脑非常简单。

但是, 如果你不只是想使用Python 3或2, 该怎么办?如果要在两者之间进行更改怎么办?

幸运的是, 内核可以为你解决这个问题!你可以轻松创建一个新的conda环境以使用不同的Notebook内核:


# Python 2.7
conda create -n py27 python=2.7 ipykernel
# Python 3.5
conda create -n py35 python=3.5 ipykernel

重新启动应用程序, 这两个内核应该对你可用。非常重要:不要忘记使用以下命令来(取消)激活(不需要)内核:


source activate py27
source deactivate

如果你需要更多信息, 请查看此页面。

你还可以手动注册内核, 例如:


conda create -n py27 python=2.7
source activate py27
conda install notebook ipykernel
ipython kernel install --user

要配置Python 3.5环境, 可以使用相同的命令, 但将py27替换为py35, 将版本号替换为3.5。

另外, 如果你使用的是Python 3, 并且想要设置Python 2内核, 也可以执行以下操作:


python2 -m pip install ipykernel
python2 -m ipykernel install --user

在Jupyter Notebook中运行R

正如第一部分中对内核的解释所建议的那样, 你还可以在Notebook中运行除Python外的其他语言!

如果要在Jupyter Notebook中使用R但不在Docker容器中运行R, 则可以运行以下命令在当前环境中安装R Essentials:


conda install -c r r-essentials

这些”必需”包括软件包dplyr, shiny, ggplot2, tidyr, caret和nnet。如果你不想在当前环境中安装Essentials, 则可以使用以下命令为R Essentials创建一个新环境:


conda create -n my-r-env -c r r-essentials 

打开Notebook应用程序, 以使用通常的命令开始使用R。

如果现在要安装其他R软件包来详细说明数据科学项目, 则可以通过运行来构建Conda R软件包, 例如:


conda skeleton cran ldavis
conda build r-ldavis/

或者, 你可以通过install.packages或devtools :: install_github(来自GitHub)从R内部安装软件包。你只需要确保将新包添加到Jupyter使用的正确R库中即可:


install.packages("ldavis", "/home/user/anaconda3/lib/R/library")

请注意, 你还可以安装IRKernel(R的内核)以在Notebook中使用R。你可以在此处按照安装说明进行操作。

请注意, 你的Notebook中还具有运行诸如Julia, SAS等语言的内核。请转至此处以获取可用内核的完整列表。此列表还包含指向相应页面的链接, 这些页面具有安装指南以帮助你入门。

提示:如果你仍然不确定如何使用这些不同的内核, 或者你想自己尝试使用不同的内核, 请转至此页面, 在那里你可以尝试使用Apache Toree(Scala), Ruby, 朱莉娅, …

使你的Jupyter Notebook神奇

如果你想通过IPython内核充分利用Notebook电脑, 则应考虑学习所谓的”魔术命令”。另外, 请考虑为Notebook增加更多的交互性, 以使其成为其他人的交互式仪表板, 这是你的考虑之一!

Notebook电脑的内置命令

有一些预定义的”魔术功能”可以使你的作品更具交互性。

要查看解释器中可用的魔术命令, 只需运行以下命令:


%lsmagic

提示:常规的Python help()函数仍然有效, 你可以使用魔术命令%quickref来显示IPython的快速参考表。

你会看到一大堆它们出现。你可能会看到一些掌握的魔术命令, 例如%save, %clear或%debug, 但其他命令则不太直接。

如果你正在寻找有关magics命令或函数的更多信息, 则始终可以使用?, 如下所示:


# Retrieving documentation on the alias_magic command
?%alias_magic

# Retrieving information on the range() function
?range

请注意, 如果要启动单行表达式以使用magics命令运行, 则可以使用%来执行此操作。对于多行表达式, 请使用&&。下面的示例说明了两者之间的区别:


%time x = range(100)
%%timeit x = range(100)
    max(x)

换句话说, 魔术命令是面向行的或面向单元的。在第一种情况下, 命令以%字符作为前缀, 它们的工作方式如下:它们作为其余部分的行作为参数。当你不仅要传递行, 还要传递随后的行时, 你需要使用面向单元的魔术:然后, 命令必须以%%作为前缀。

除了%time和%timeit魔术外, 还有一些其他魔术命令肯定会派上用场:

%pdb Debug
%prun 做一场表演
%writefile 将单元格的内容保存到外部文件
%pycat 显示外部文件语法突出显示的内容
%who 列出全局范围内的所有变量
%store 在Notebook之间传递变量
%load 从外部脚本插入代码
%run 执行Python代码
%env 设置环境变量

请注意, 这只是方便的魔术命令的简短列表。你可以通过%lsmagic发现更多内容。

你还可以使用魔术来将Notebook中的语言与IPython内核混合, 而无需设置额外的内核:存在用于运行R代码的Rmagics, 用于RDBMS的SQL或关系数据库管理系统访问, 以及用于与cython进行交互工作的cythonmagic, …还有更多!

要利用这些魔力, 首先必须安装必要的软件包:


pip install ipython-sql
pip install cython
pip install rpy2

提示:如果要安装软件包, 还可以通过在Notebook计算机内部放置!来将这些命令作为shell命令执行。在命令前面, 就像这样:


# Check, manage and install packages
!pip list
!pip install ipython-sql

# Check the files in your working directory
!ls

只有在成功安装之后, 你才能加载魔术并开始使用它们:


%load_ext sql
%load_ext cython
%load_ext rpy2.ipython

让我们用一个小例子来说明魔术是如何工作的:


# Hide warnings if there are any
import warnings
warnings.filterwarnings('ignore')

# Load in the r magic
%load_ext rpy2.ipython

# We need ggplot2
%R require(ggplot2)

# Load in the pandas library
import pandas as pd

# Make a pandas DataFrame
df = pd.DataFrame({'Alphabet': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'], 'A': [4, 3, 5, 2, 1, 7, 7, 5, 9], 'B': [0, 4, 3, 6, 7, 10, 11, 9, 13], 'C': [1, 2, 3, 1, 2, 3, 1, 2, 3]})

# Take the name of input variable df and assign it to an R variable of the same name
%%R -i df

# Plot the DataFrame df
ggplot(data=df) + geom_point(aes(x=A, y=B, color=C))

但是, 这仅仅是一个开始, 并不是几乎所有你可以使用R魔术所做的事情。你还可以将变量从Python推送到R, 然后将其再次拉到Python。在此处阅读文档(带有易于访问的示例!)。

交互式Notebook作为仪表板:小部件

魔术命令已经做了很多工作, 以使Notebook的工作流程令人满意, 但是你还可以采取其他步骤, 通过向其添加小部件, 使Notebook成为其他人的交互式场所!

要将小部件添加到Notebook, 你需要从ipywidgets导入小部件:


from ipywidgets import widgets

这足以开始!你可能现在想考虑要添加的窗口小部件类型。小部件的基本类型是文本输入, 按钮和基于输入的小部件。

请参见下面的文本输入小部件示例:

交互式Jupyter笔记本小部件

该示例摘自有关在Jupyter中构建交互式仪表板的精彩教程, 你可以在此页面上找到该教程。

分享你的Jupyter Notebook

在实践中, 你可能希望与同事或朋友共享Notebook, 以向他们展示你最近的工作或作为未来雇主的数据科学产品组合。但是, Notebook文档是JSON文档, 其中包含文本, 源代码, 富媒体输出和元数据。文档的每个部分都存储在一个单元格中。

理想情况下, 你不想四处共享JSON文件。

这就是为什么你想找到并使用其他方式与他人共享Notebook文档的原因。

创建Notebook时, 你会在菜单栏中看到一个”文件”按钮。单击此按钮时, 你会看到Jupyter允许你选择以HTML, PDF, Markdown或reStructuredText或Python脚本或Notebook文件的形式下载你的Notebook。

你可以使用nbconvert命令将Notebook文档文件转换为其他静态格式, 例如HTML, PDF, LaTex, Markdown, reStructuredText等。但是, 如果你还没有导入, 请不要忘记先导入它!

然后, 你可以输入以下命令来转换Notebook:


jupyter nbconvert --to html Untitled4.ipynb

使用nbconvert, 你可以确保可以非交互式地计算整个Notebook, 将其保存到位或保存为其他多种格式。你可以执行此操作的事实使Notebook电脑成为ETL和报告功能强大的工具。为了进行报告, 你只需确保每隔几天, 几周或几个月安排一次Notebook的运行;对于ETL管道, 你可以结合使用某些类型的调度来使用Notebook中的magic命令。

除了这些选项, 你还可以考虑以下内容:

  • 你可以从Notebook文档创建, 列出和加载GitHub Gists。你可以在这里找到更多信息。要点是共享你的工作的一种方式, 因为你可以共享单个文件, 文件的一部分或完整的应用程序。
  • 使用jupyterhub, 你可以生成, 管理和代理单用户Jupyter Notebook服务器的多个实例。换句话说, 这是一个用于在具有多个用户的服务器上托管Notebook的平台。这使其成为向学生, 公司数据科学小组或科研小组的Notebook电脑提供Notebook的理想资源。
  • 利用活页夹和tmpnb获得临时环境来重现Notebook的执行情况。
  • 你可以使用nbviewer将Notebook呈现为静态网页。
  • 要将Notebook变成幻灯片放映, 可以将其设置为nbpresent和RISE。
  • 如果要将Notebook显示为交互式仪表板, 则jupyter_dashboards将派上用场。
  • 使用Pelican插件从Notebook创建博客。

Jupyter Notebook在实践中

当你独自一个人从事数据科学项目时, 所有这些都非常有趣。但是大多数时候, 你并不孤单。你可能有一些朋友在看你的代码, 或者你需要同事为你的Notebook做出贡献。

在团队中工作时, 你实际上应该如何实际使用这些Notebook?

以下技巧将帮助你有效地在数据科学项目中使用Notebook。

有效和有效使用Jupyter Notebook的技巧

使用这些Notebook并不意味着你不需要遵循通常应采用的编码实践。

你可能已经知道演练, 但是这些原则包括以下内容:

  • 尝试为你的代码提供注释和文档。他们可能对他人有很大的帮助!
  • 还要考虑一致的命名方案, 代码分组, 限制行长, …
  • 不要害怕在必要时进行重构。

除了这些通用的编程最佳实践, 你还可以考虑以下提示, 以使Notebook成为其他用户学习的最佳来源:

  • 不要忘记命名你的Notebook文件!
  • 尝试使Notebook的单元格保持简单:不要超过单元格的宽度, 并确保不要在一个单元格中放置太多相关功能。
  • 如果可能, 将包导入Notebook的第一个代码单元, 然后
  • 内联显示图形。魔术命令%matplotlib内联肯定会派上用场, 以抑制最后一行上函数的输出。不要忘记添加分号来抑制输出并只返回图本身。
  • 有时, 你的Notebook可能变得非常繁琐, 或者你只是想拥有更简洁的报告。在这种情况下, 你可以考虑隐藏一些代码。你已经可以通过使用诸如%run这样的魔术命令来隐藏某些代码, 就像执行整个Python脚本一样, 它位于Notebook单元中。但是, 这可能无法在你期望的范围内为你提供帮助。在这种情况下, 你始终可以查看有关可选代码可见性的本教程, 或考虑切换Notebook的代码单元。

适用于数据科学团队的Jupyter Notebook:最佳实践

乔纳森·惠特莫尔(Jonathan Whitmore)在他的文章中写了一些使用Notebook进行数据科学的实践, 并特别指出了一个事实, 即与团队一起处理Notebook中的数据科学问题可能会面临很大的挑战。

因此, 乔纳森(Jonathan)建议了一些最佳做法:

  • 在数据科学项目中使用两种类型的Notebook, 即实验室Notebook和可交付使用的Notebook。两者之间的区别(除了显而易见的是, 你可以从Notebook的名称中推断出)是个人控制实验室Notebook, 而可交付Notebook由整个数据科学团队控制,
  • 使用某种类型的版本控制(Git, Github等)。如果你的版本控制系统缺少呈现功能, 并且不要忘记提交HTML文件, 并且
  • 对文档命名使用明确的规则。

向最好的Notebook学习

本部分旨在为你提供一些最佳Notebook的简短列表, 以便你可以从这些示例中开始学习。

  • Notebook还用于补充书籍, 例如《 Python数据科学手册》。你可以在这里找到Notebook。
  • 由Notebook生成的有关Kaggle竞赛的报告记录在此博客中。
  • 这个matplotlib教程是一个很好的例子, 说明Notebook可以如何很好地用作教授其他人的话题, 例如科学Python。
  • 最后, 确保还检查了”数据科学中的预处理的重要性”和从Notebook生成的机器学习流水线教程系列。

请注意, 此列表绝对不是穷举。那里还有更多Notebook!

你会发现许多人定期撰写并用有趣的Notebook撰写清单。不要错过这个有趣的IPythonNotebook画廊或KDnuggets这篇文章。

赞(0)
未经允许不得转载:srcmini » Jupyter Notebook教程:权威指南

评论 抢沙发

评论前必须登录!