本文概述
- 什么是Jupyter Notebook?
- IPython和Jupyter Notebook的历史
- 如何安装Jupyter Notebook
- 如何使用Jupyter Notebook
- Jupyter Notebook在实践中
文章图片
作为一种Web应用程序, 你可以在其中创建和共享包含实时代码, 方程式, 可视化效果以及文本的文档, Jupyter Notebook是帮助你获得所需的数据科学技能的理想工具之一。
本教程将涵盖以下主题:
- Jupyter Notebook应用及其组件的基本概述,
- Jupyter Project的历史, 展示了它如何与IPython连接,
- 概述了三种最流行的Notebook运行方式:借助Python发行版, pip或Docker容器,
- 对第一部分介绍的组件进行实用介绍, 并提供Pandas DataFrames示例, 有关如何使Notebook文档变得神奇的解释, 以及常见问题的答案, 例如” 如何在Python 2和3之间切换” ?” , 和
- 最佳实践和技巧将帮助你使Notebook电脑成为任何数据科学项目的附加值!
什么是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是在容器中运行软件的出色平台。这些容器是独立且隔离的过程。
这听起来有点像虚拟机, 对吗?
并不是的。转到此处阅读有关它们为何与众不同的解释, 并附上一个奇妙的房子隐喻。
文章图片
如果安装了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中得到了展示:
文章图片
“ 文件” 选项卡是保存所有文件的位置, “ 运行” 选项卡可跟踪所有进程, 第三个选项卡” 群集” 由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名称, 菜单栏, 工具栏和一个空的代码单元:
文章图片
你可以立即开始为代码导入必要的库。这是最佳实践之一, 我们将在后面详细讨论。
之后, 你可以根据需要添加, 删除或编辑单元格。并且不要忘了插入说明性文字或标题和字幕来阐明你的代码!这就是使Notebook最终成为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
【Jupyter Notebook教程(权威指南)】重新启动应用程序, 这两个内核应该对你可用。非常重要:不要忘记使用以下命令来(取消)激活(不需要)内核:
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 | 设置环境变量 |
你还可以使用魔术来将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=http://www.srcmini.com/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 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创建博客。
在团队中工作时, 你实际上应该如何实际使用这些Notebook?
以下技巧将帮助你有效地在数据科学项目中使用Notebook。
有效和有效使用Jupyter Notebook的技巧
使用这些Notebook并不意味着你不需要遵循通常应采用的编码实践。
你可能已经知道演练, 但是这些原则包括以下内容:
- 尝试为你的代码提供注释和文档。他们可能对他人有很大的帮助!
- 还要考虑一致的命名方案, 代码分组, 限制行长, …
- 不要害怕在必要时进行重构。
- 不要忘记命名你的Notebook文件!
- 尝试使Notebook的单元格保持简单:不要超过单元格的宽度, 并确保不要在一个单元格中放置太多相关功能。
- 如果可能, 将包导入Notebook的第一个代码单元, 然后
- 内联显示图形。魔术命令%matplotlib内联肯定会派上用场, 以抑制最后一行上函数的输出。不要忘记添加分号来抑制输出并只返回图本身。
- 有时, 你的Notebook可能变得非常繁琐, 或者你只是想拥有更简洁的报告。在这种情况下, 你可以考虑隐藏一些代码。你已经可以通过使用诸如%run这样的魔术命令来隐藏某些代码, 就像执行整个Python脚本一样, 它位于Notebook单元中。但是, 这可能无法在你期望的范围内为你提供帮助。在这种情况下, 你始终可以查看有关可选代码可见性的本教程, 或考虑切换Notebook的代码单元。
乔纳森·惠特莫尔(Jonathan Whitmore)在他的文章中写了一些使用Notebook进行数据科学的实践, 并特别指出了一个事实, 即与团队一起处理Notebook中的数据科学问题可能会面临很大的挑战。
因此, 乔纳森(Jonathan)建议了一些最佳做法:
- 在数据科学项目中使用两种类型的Notebook, 即实验室Notebook和可交付使用的Notebook。两者之间的区别(除了显而易见的是, 你可以从Notebook的名称中推断出)是个人控制实验室Notebook, 而可交付Notebook由整个数据科学团队控制,
- 使用某种类型的版本控制(Git, Github等)。如果你的版本控制系统缺少呈现功能, 并且不要忘记提交HTML文件, 并且
- 对文档命名使用明确的规则。
本部分旨在为你提供一些最佳Notebook的简短列表, 以便你可以从这些示例中开始学习。
- Notebook还用于补充书籍, 例如《 Python数据科学手册》。你可以在这里找到Notebook。
- 由Notebook生成的有关Kaggle竞赛的报告记录在此博客中。
- 这个matplotlib教程是一个很好的例子, 说明Notebook可以如何很好地用作教授其他人的话题, 例如科学Python。
- 最后, 确保还检查了” 数据科学中的预处理的重要性” 和从Notebook生成的机器学习流水线教程系列。
你会发现许多人定期撰写并用有趣的Notebook撰写清单。不要错过这个有趣的IPythonNotebook画廊或KDnuggets这篇文章。
推荐阅读
- Python Django Web开发详细教程
- 使用Scikit-learn支持向量机
- 在Python中处理分类数据
- 简化Python中的情感分析
- 在Python中使用LSTM进行股票市场预测
- Python中的马尔可夫链(入门教程)
- Python读取和编辑PDF和Word文档
- 在Windows上设置Python进行机器学习
- 用Python存储和访问大量图像的三种方法