来源 | 「Practical Python Data Visualization A Fast Track Approach To Learning Data Visualization With Python」
作者 | Ashwin Pajankar
译者 | Liangchu
校对 | gongyouliu
编辑 | auroral-L
全文共3360字,预计阅读时间15分钟。
第二章 探索Jupyter Notebook
Jupyter Notebook概览
设置Jupyter Notebook
在Jupyter Notebook中运行代码
总结
在第一章中,我们熟悉了Python,并学习了如何用Python编写一个简单程序。此外,我们还了解了如何在交互模式和脚本模式下使用Python。在本章中,我们将学习Jupyter Notebook。我们在第一章中知道交互模式能够提供Python语句的即时反馈。在本书的所有演示中,我们使用的几乎都是Python的交互模式。但是,我们将使用另一个更好的Jupyter工具代替Python内置的交互式模式和解释器。整章的内容都和这个主题息息相关。你将在本章中了解以下主题:
• Jupyter Notebook概览
• 设置Jupyter Notebook
• 在Jupyter Notebook中运行代码
在学习完本章之后,你应该就能熟练地使用Jupyter Notebook进行Python编程了。
在第一章中,你学习了运行Python语句的各种方法。我们在脚本和解释器的交互模式下运行Python语句。使用交互模式的主要优点是即时反馈,然而这种模式的主要缺点是:如果输入语句出错,然后执行了错误的语句,则必须重写整个语句,这样才能重新运行;而且也很难将它保存为一个程序。如果想将在解释器上运行的语句保存,你可以在文件菜单选项下找到该操作选项。但是所有语句及其输出都将以.py为扩展名的纯文本格式保存。至于图形输出,它将单独显示,而不会与语句一起保存。
由于带解释器的交互模式存在这些限制性,我们将使用更好的工具——Jupyter Notebook,在web浏览器中交互运行Python语句。Jupyter是一个服务器程序,它可以在web浏览器中创建交互式notebooks。(notebook为Jupyter Notebook建立的文件的称呼,后文以中文“笔记本”代替)
Jupyter笔记本是一种基于web的笔记本,它被用于包括Python、Octave、Julia和R在内的各种语言的交互编程。它在研究领域工作人员中广受欢迎。Jupyter笔记本可以在单个文件中包含代码、可视化、输出和富文本。与Python自己的交互对话框相比,Jupyter Notebook的优势在于:用户可以编辑代码并即时得到新的输出,而这在Python交互模式下是不可能的;另一个优点是,代码、富文本和代码的输出(可以是图形或富文本格式)都存放在磁盘上的同一个文件中。我们可以通过互联网或使用便携式存储设备保存和共享这些笔记本。有许多线上服务可以帮我们在云服务器上存储和执行Jupyter Notebook脚本。
在任何计算机上我们都可以通过在命令提示符中运行下面的命令轻而易举地安装Jupyter Notebook服务器程序:
pip3 install jupyter
接下来让我们学习如何用Jupyter Notebook编写和运行Python语句吧!在操作系统命令提示符下运行以下命令启动Jupyter Notebook服务器进程:
jupyter notebook
一旦启动了Jupyter Notebook服务器进程,命令提示符窗口就会显示服务器日志,如图(2-1)所示:
它会在操作系统的默认浏览器中启动网页。如果浏览器窗口已经打开了,则会在该浏览器窗口的新选项卡上启动该页。另一种打开页面的方法(以防意外关闭了此浏览器窗口)是在浏览器中访问http://localhost:8888/,这样将显示类似于图(2-2)所示的页面:
可以在服务器日志中找到口令(也就是密码)。下面是一个带口令的服务器日志示例:
To access the notebook, open this file in a browser:
file:///C:/Users/Ashwin/AppData/Roaming/jupyter/runtime/nbserver-8420-open.html
Or copy and paste one of these URLs:
http://localhost:8888/?token=e4a4fab0d8c22cd01b6530d5daced19d32d7e0c3a56f925c
or http://127.0.0.1:8888/?token=e4a4fab0d8c22cd01b6530d5da ced19d32d7e0c3a56f925c
我们可以在这个日志中看到几个URL链接。它们指的是相同的页面(localhost和127.0.0.1是相同的主机,即本地主机)。我们可以在浏览器选项卡的地址栏中直接复制和粘贴这些URL,打开JupyterNotebook主页;我们也可以访问如前所述的http://localhost:8888/,然后将口令粘贴到网页中(示例中是e4a4fab0d8c22cd01b6530d5daced19d32d7e0c3a56f925c)并登录,这两种操作都会让我们进入同一个主页。
注意:Jupyter Notebook服务器的每个实例都有自己的口令,所以你自己登陆Jupyter Notebook的时候,使用的口令和示例给出的口令是不相同的,即口令仅对该服务器进程有效。
按照上面介绍的方法操作后,你将在浏览器窗口中看到一个主页选项卡,如图(2-3)所示:
从图中可以看到该网页本身有三个选项卡:文件(Files)、运行(Running)和聚类(Clusters)。选项卡Files显示在命令提示符下启动Jupyer Notebook服务器主目录中的文件和目录。该例中,我已在我的Raspberry Pi的lxterminal里执行了jupyter notebook命令,当前工作目录是pi user/home/pi的主目录,所以我们可以在上图(2-3)的屏幕截图中看到我的RPi计算机的主目录中的所有文件和目录。
在右上角,有退出(Quit)和注销(Logout)按钮。如果单击Logout按钮,它将从当前会话中注销。要再次登录,则需要重新输入带有嵌入口令的口令或URL。如果单击Quit,则会停止在命令提示符下运行的Jupyter Notebook服务器进程,并显示如图(2-4)所示消息框:
这种情况下如果要再次启动它,我们需要在命令提示符下再次执行jupyter notebook命令。
在右上角的Quit和Logout按钮下方,有一个小的刷新按钮,单击它刷新主页。旁边是新建(New)按钮,单击后,将显示一个如图(2-5)所示的下拉菜单:
可以看到下拉菜单分为两部分:笔记本(Notebook)和其他(Other)。在本例中,你可以选择创建Octave和Python 3笔记本。倘若你的计算机安装了更多Jupyter Notebook支持的编程语言,这些语言也将在此处显示。我们也可以创建文本文件和文件夹。我们可以通过单击终端(Terminal)在web浏览器中打开命令提示符。如图(2-6)是在单独的web浏览器选项卡中运行lxterminal的屏幕截图:
从下拉菜单中选择Python 3将创建一个新的Python 3笔记本,如图(2-7)所示:
如果通过单击浏览器中的选项卡返回了主页,然后单击运行(Running)选项卡,则可以看到与终端和Python 3笔记本对应的条目,如图(2-8)所示:
上面已经新建了一个Python 3笔记本,现在再次转到Python 3 Untitled1选项卡,在文本域(亦称单元格)键入以下语句:
print("Hello, World!\n");
点击运行(Run)。Jupyter将以Python 3语句的形式执行这部分代码,并在单元格的正下方显示结果,如图(2-9)所示:
可以看到,在执行之后,它会自动在输出结果下面创建了一个新单元格,光标也在这个新单元格里。现在看一下菜单栏和编程单元格上方的图标:我们可以通过单击软盘图标来保存文件;我们可以通过单击+图标在当前单元格之后添加一个新的空白单元格;接下来的三个图标分别用于剪切、复制和粘贴;上下箭头分别控制上下移动当前单元格的位置;下一个选项是运行单元格,也是我们上面执行代码所点击的图标;接下来的三个图标用于中断内核、重新启动内核、重新启动内核并重新运行笔记本中的所有单元格,在它旁边是一个下拉菜单,允许我们选择单元格的类型。如图(2-10)是单击下拉菜单的屏幕截图:
选择代码(Code)选项时,该单元格将被视为Python 3代码单元格。选择标记(Markdown)选项时,它将被视为Markdown格式的单元格。Markdown是一种可以创建富文本输出的标记语言,例如,任何以#为前缀的内容都会被视为标题,任何##为前缀的内容都被视为副标题,依此类推。只需在标记单元格中键入以下内容并执行:
# Heading 1
## Heading 2
在Python 3演示中,我们主要使用标记单元格作为标题,你也可以自己进一步研究它,https://jupyternotebook.readthedocs.io/en/stable/examples/Notebook/Working%20With%20Markdown%20Cells.html上会有更多关于它的信息。上述演示的输出如图(2-11)所示:
如果要给文件重命名,可以通过单击顶部的名称以实现。单击后,将显示一个用于重命名的模式框,如图(2-12)所示:
然后你就可以给它重命名了。如果我们在命令提示符下浏览启动Jupyter Notebook的磁盘路径下的文件,就会找到扩展名为ipynb的文件,它代表IPython Notebook。
同样,我们可以使用Jupyter Notebook与其他支持Jupyter的编程语言进行交互编程。我们将主要使用这种笔记本格式来存储交互式会话的代码片段,因为它所有内容都保存在一个文件中,所以可以很容易实现共享。
我们可以清除某个单元格或整个笔记本的输出。在菜单栏上,选择单元格(Cell)。在下拉菜单上,Current Outputs和All Output具有清除单元格输出的清除(Clear)选项。如图(2-13)是可选选项的屏幕截图:
Jupyter Notebook最显著的优点之一是:如果有语法错误或者就是单纯想更改代码,你就可以编辑已经执行过的单元格。Jupyter Notebook就像一个在web浏览器中运行的IDE,并在同一个窗口中产生输出。这种交互性以及将代码、富文本和输出保存在同一个文件中的能力使Jupyter Notebook在世界范围内非常流行。运行Python程序的内核来源于IPython项目。如上所述,我们也可以将它用于其他编程语言。我也用它来运行GNU Octave程序。
注意:要获取有关Jupyter Notebook和IPython的更多信息,请访问以下URL:
https://jupyter.org/
https://ipython.org/
本章中,我们在各种平台上安装了Jupyter Notebook,然后我们探讨了如何在Jupyter Notebook中运行简单的Python语句。通过Jupyter Notebook,我们知道可以将代码和代码的输出存储在一个文件中,而这个文件可以在互联网上轻松地共享。
在下一章中,我们将使用Python和流行的数据可视化库leather在Jupyter Notebook中运行,来处理简单的可视化任务。