Jupyter Notebook神器-免费体验来自微软的Azure Notebook
我们已经进入了人工智能与大资料时代,因为Python对接AI和大资料分析的工具更容易些,进而带动了Python的热度,关于Python的相关文章,可以参考:
Python搭建开发环境-Anaconda+PyCharm的安装和入门教程
Python-lambda匿名函式,以及filter、map、reduce、apply函式
Python 科学计算库 NumPy 基本操作
Python 科学计算库 Pandas 基本操作
Python中常用的视觉化工具 Matplotlib 简单入门
在学习Python的过程中,进一步掌握Jupyter Notebook神器,体验互动式程式设计的乐趣。
Jupyter Notebook 是一个非常强大的工具,可以建立漂亮的互动式文件,制作教学材料等等。建议你马上开始使用 Jupyter Notebook,体验Jupyter Notebook 的强大功能。

1. Jupyter Notebook 是什么?
Jupyter 官网:https://jupyter.org/Jupyter Notebook(此前被称为 IPython Notebook)是一个互动式笔记本,支援执行 40 多种程式语言。
Jupyter Notebook 官方定义:
The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.
Jupyter Notebook 是一个开源的 Web 应用,它能让使用者将可执行的程式码、数学方程、视觉化内容和说明文字等内容全部组合到一个易于共享的文件中,其用途包括资料清理和变换、数值模拟、统计建模、资料视觉化、机器学习等。
随着Jupyter的流行以及开源社群的努力,现在Jupyter已经支援绝大部分的主流程式语言了。这一点,我们从它主页的横幅图片也可以看出。

Jupyter Notebook是如何工作的?
Jupyter Notebook源自Fernando Perez发起的IPython专案。IPython 是一种互动式的shell,与普通的Python shell相似,但具有一些很好的功能(如语法高亮和程式码补全)。Notebook的工作方式是将来自Web应用的讯息传送给IPython核心(服务器后台执行的IPython应用程序)。核心执行程式码,然后将结果返回给Notebook。整个架构如下图所示。

这个架构的一个优点是Notebook服务器和核心是分开,因此可以在两者之间传送任何语言的程式码。例如,早期的两个非Python核心分别是R语言和Julia语言。使用R核心时,用R编写的程式码将传送给执行该程式码的R核心,这与在IPython核心上执行Python程式码完全一样。IPython Notebook已被改名,因为Notebook变得与程式语言无关。新的名称Jupyter由Julia、Python和R组合而成。
2. 体验 Azure Notebook
先体验一下来自Microsoft 提供的线上Notebook 服务。使用Azure Notebook 需要登入才能执行Notebook,注册登入也很方便。为啥推荐Azure Notebook,因为线上访问速度比较快。
Azure Notebook URL:https://notebooks.azure.com/

下面详细演示在Azure Notebook 中建立一个新的专案、Notebook的过程。
(1)首先登入Azure Notebook,然后建立一个专案(命名为:PythonTutorial):

(2)然后,在专案中新增一个notebook:

在Create New Notebook 弹出视窗中,输入notebook档名称,如HelloWorldInPython.ipynb(字尾 .ipynb 表示 IronPython (Jupyter) Notebook),在Language一栏中选择Python 3.6,点选New按钮,建立完成。

HelloWorldInPython.ipynb 出现在专案档案列表中:

(3)执行notebook
选择并点选新建立的notebook,在编辑器(editor)中执行,上一步选择的kernel 核心会自动启用。一般来说,一个Notebook对应一个Kernel的程序。如下所示。
下方的主要区域,由被称为Cell(单元格)的部分组成。每个 notebook 由多个单元格构成,而每个单元格又可以有不同的用途。
上面的截图中看到的是一个程式码单元格(code cell),以[ ]开头。在这种型别的单元格中,可以输入任意程式码并执行。
预设情况下,notebook 是一个空的档案。修改cell 型别为 Markdown,并在cell 中输入如下标题文字:

输入标题文字:

选择Run 按钮。Azure Notebooks 将自动建立在其后建立一个新的cell,并且游标也会自动移动到一个新的单元格中。

根据绿色边框线,我们可以轻松地识别出当前工作的单元格。
在上述Code cell 中,输入如下Python 程式码,然后再次点选Run 按钮(快捷键:Shift+Enter)执行程式码。
from datetime import datetime
now = datetime.now()
msg = "Hello, Rickie! Today is %s" % now.strftime("%A, %d %B, %Y")
print(msg)

在Cell 下面,可以看到成功的输出文字。
(4)Cell(单元格)操作
高阶单元格操作,将让编写 notebook 变得更加方便。举例如下:如果想删除某个单元格,可以选择该单元格,然后依次点选Edit -> Delete Cell;如果想移动某个单元格,只需要依次点选Edit -> Move cell [up | down];如果想剪贴某个单元测,可以先点选Edit -> Cut Cell,然后在点选Edit -> Paste Cell [Above | Below];如果你的 notebook 中有很多单元格只需要执行一次,或者想一次性执行大段程式码,那么可以选择合并这些单元格。点选Edit -> Merge Cell [Above | below]。或者直接通过主工具栏上的按钮进行相关的操作。记住这些操作,它们可以帮助你节省许多时间。
最后,选择File > Close and Halt 选单项,停止server,并关闭浏览器视窗。
通过URL 可以访问指定使用者的Libraries,小编建立的Libraries 网站如下:
https://notebooks.azure.com/rickiechina

可以看到刚刚建立的专案URL:
https://notebooks.azure.com/rickiechina/projects/pythontutorial
上述专案中还有一个draw.ipynb Notebook,有兴趣也可以体验一下。

3. 其他托管的Jupyter Notebook
(1)mybinder.orgmybinder.org是Jupyter官方推荐的一个托管平台。Jupyter官方给出的几个Notebook的示例也是执行在mybinder.org提供的Notebook服务器上的。除此之外,mybinder.org还能载入Github程式码库中的Notebook档案,这点比较酷。微软的Azure Notebook也支援从Github中克隆Jupyter Notebook,下次演示。

(2)Google Colaboratory
Google Colaboratory是Google推出的Notebook托管平台,为全球开发者免费提供线上的Notebook服务,支援Python2及3,它和Github有很好的整合。
https://colab.research.google.com/
但是国内一般人访问不了。
(3)本地使用Anaconda 安装Jupyter Notebook
Jupyter官方推荐使用Anaconda来安装Jupyter Notebook。Anaconda实际上是一个软件发行版,它附带了conda、Python 和 150多个数据科学包及其依赖项,因此它的下载档案比较大(约500多MB)。应用程序conda是包和环境管理器。
具体安装过程非常简单,可以参考:
Python搭建开发环境-Anaconda+PyCharm的安装和入门教程
Jupyter Notebook安装完成之后,开启Anaconda命令列,输入jupyter notebook即可,Jupyter Notebook预设会在8888埠下执行,或者点选Jupyter Notebook 选单项。

总结
本文叙述了Jupyter Notebook的一些基本概念、名称的由来以及如何线上使用Azure Notebook。Jupyter Notebook的本质是程式语言的一种界面,它区别与常规程式以档案的形式解析或编译执行,取而代之是互动式的程式设计,提高了效率和响应速度。Jupyter Notebook以其方便的互动模式和丰富的Web检视呈现,在资料分析、资料视觉化、机器学习等领域非常受欢迎,它已经成为了资料分析和人工智能领域事实上的标准工具。
参考连结:
Jupyter Notebook
https://johnnyqian.net/blog/jupyter-notebook/