2

Jupyter Notebook 快速入门

 2 years ago
source link: https://sineatos.github.io/tools/develop/jupyter/jupyter-notebook-tutorial/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Jupyter Notebook 快速入门

May 30, 2018科研, 工具

方法一:使用pip进行安装:

pip install jupyter

方法二:安装Anaconda即可

运行jupyter notebook,只需要在终端上输入:

jupyter notebook

运行完上述命令以后会出现类似下面的输出:

[I 20:06:36.367 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
[I 20:06:36.813 NotebookApp] Serving notebooks from local directory: /home/your_username
[I 20:06:36.813 NotebookApp] 0 active kernels
[I 20:06:36.813 NotebookApp] The IPython Notebook is running at: http://localhost:8888/
[I 20:06:36.813 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

根据输出的位置打开浏览器输入http://localhost:8888/,看到jupyter的主界面:

http://img1.tuicool.com/N7Fb6z3.jpg!web

如果想新建一个notebook,只需要点击New,选择你希望启动的notebook类型即可。当然不同的语言notebook需要安装不同的内核才能使用,默认是Python。点击新建一个Python3的notebook:

http://img1.tuicool.com/RJz26fj.jpg!web

notebook界面由以下部分组成:

  1. notebook 的名称
  2. 主工具栏,提供了保存、导出、重载notebook,以及重启内核等选项
  3. notebook主要区域,包含了notebook的内容编辑区

如果想要详细了解有 notebook或一些库的具体话题,可以使用菜单栏右侧的帮助(help)。

下方的主要区域,由被称为单元格的部分组成。每个notebook 由多个单元格构成,而每个单元格又可以有不同的用途。

下方截图中看到的是一个代码单元格(code cell),以[ ] 开头。在这种类型的单元格中,可以输入任意代码并执行。例如,输入1 + 2并按下Shift + Enter。之后,单元格中的代码就会被计算,光标也会被移动动一个新的单元格中。你会得到如下结果:

http://img0.tuicool.com/BbyiM3a.jpg!web

根据绿色边框线,我们可以轻松地识别出当前工作的单元格。接下来,我们在第二个单元格中输入些其他代码,例如:

for i in range(5):
    print(i)

对上面的代码求值时,你会得到:

http://img0.tuicool.com/meQZFn7.jpg!web

和前一个示例一样,代码被计算之后,马上就会显示结果。你应该注意到了,这次没有出现类似Out[2] 这样的文字。这是因为我们将结果打印出来了,没有返回任何的值。

notebook有一个非常有趣的特性,就是可以修改之前的单元格,对其重新计算,这样就可以更新整个文档了。试着把光标移回第一个单元格,并将1 + 2修改成2 + 3,然后按下Shift + Enter 重新计算该单元格(只是该格,不会影响后面的格子)。你会发现结果马上就更新成了 5。如果你不想重新运行整个脚本,只想用不同的参数测试某个程式的话,这个特性显得尤其强大。不过,你也可以重新计算整个notebook,只要点击Cell -> Run all即可。

其他单元格

现在我们已经知道了如何输入代码,为什么不尝试着让这个notebook 更加漂亮、内容更丰富?为此,我们需要使用其他类型的单元格,即Header单元格和Markdown单元格。

首先,我们在顶部添加一个notebook的标题。选中第一个单元格,然后点击Insert单元格above ->Insert(在上方插入单元格)。你会发现,文档的顶部马上就出现了一个新的单元格。点击在快捷键栏中的单元格类型,将其变成一个标题单元格(heading cell)

http://img1.tuicool.com/fayuIjY.jpg!web

选中下拉选项中的Heading。然后会出现一个弹出消息,告诉你如何创建不同层级的标题,这样你就有了一个不同类型的cell:

http://img0.tuicool.com/uaQbqiV.jpg!web

这个单元格以#标记开头,意味着这是一个一级标题。如果需要子标题,可以使用以下标记表示(改变单元格类型时弹出消息中有解释):

# : 一级标题
## : 二级标题
### : 三级标题
...

#之后写下文档的标题,然后计算该单元格。你会发现一个样式非常好看的标题。作为示例和练习,我还添加了其他几个标题单元格:

http://img1.tuicool.com/32yQJnz.jpg!web

添加好标题之后,我们在编写一些解释,介绍每个代码单元格中的情况。为此,我们要在相应的地方插入单元格,然后将其类型变成Markdown。然后,计算新的单元格。就这样,你的解释文本就漂亮地渲染出来了!

http://img0.tuicool.com/YVjqqqR.jpg!web

最后,你可以重命名该notebook,点击Fiel->Rename ,然后输入新的名称。这样,新的名称将会出现在窗口的左上角,在Jupyter的标志旁边。

单元格操作

高级单元格操作,将让编写notebook变得更加方便。举例如下:

  1. 如果想删除某个单元格,可以选择该单元格,然后依次点击Edit->Delete Cell
  2. 如果想移动某个单元格,只需要依次点击Edit->Move cell [up | down]
  3. 如果想剪贴某个单元测,可以先点击Edit->Cut Cell,然后在点击Edit ->Paste Cell [Above | Below]
  4. 如果你的notebook中有很多单元格只需要执行一次,或者想一次性执行大段代码,那么可以选择合并这些单元格。点击Edit -> Merge Cell [Above | below]

记住这些操作,它们可以帮助你节省许多时间。

Markdown 单元格高级用法

我们再来看看Markdown单元格。虽然它的类型是markdown,但是这类单元格也接受HTML 代码。这样,你就可以在单元格类实现更加丰富的样式,添加图片,等等。例如,如果想在notebook 中添加Jupyter的logo,将其大小设置为100px x 100px,并且放置在单元格左侧,可以这样编写:

<img src="http://blog.jupyter.org/content/images/2015/02/jupyter-sq-text.png"
style="width:100px;height:100px;float:left">

计算该单元格之后,会出现这样的结果:

https://www.packtpub.com/sites/default/files/new_blog_images/Extra_Blogs/Jupyter_01_00.png

另外,markdown 单元格还支持 LaTex 语法。例如:

$$\int_0^{+\infty} x^2 dx$$

计算上述单元格,将获得下面的 LaTex 方程式:

https://www.packtpub.com/sites/default/files/new_blog_images/Extra_Blogs/Jupyter_01_10.png

notebook 还有一个强大的特性,就是其导出功能。可以将 notebook 导出为多种格式: - HTML - Markdown - ReST - PDF(通过 LaTeX) - Raw Python

导出 PDF 功能,可以让你不用写LaTex 即可创建漂亮的PDF文档。你还可以将notebook 作为网页发布在你的网站上。甚至,你可以导出为ReST格式,作为软件库的文档。

Matplotlib 集成

如果你用Python绘制过图形,那你肯定知道matplotlib。Matplotlib是一个用于创建漂亮图形的python 库,结合Jupyter notebook使用时体验更佳。

要想在Jupyter notebook中使用matplotlib,需要告诉Jupyter获取matplotlib 生成的所有图形,并将其嵌入notebook中。为此,需要计算:

%matplotlib inline

运行这个指令可能要花个几秒钟,但是在notebook 中需要执行一次即可。接下来,我们来绘制一个图形,看看具体的集成效果:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(20)
y = x**2

plt.plot(x, y)

上面的代码将绘制方程式 y=x^2 。计算单元格后,会得到如下图形:

https://www.packtpub.com/sites/default/files/new_blog_images/Extra_Blogs/Jupyter_01_11.png

我们看到,绘制出的图形直接添加在了notebook 中,就在代码的下面。我们可以之后修改代码,重新计算,这时图形也会动态更新。这是每个数据科学家都想要的一个特性:将代码和图片放在同一个文件中,清楚地看出每段代码的效果。

非本地内核

我们可以非常容易地在一台电脑上启动Jupyter,而且支持多人通过网络连接同一个Jupyter 实例。在上一篇文章中,你有没有注意启动Jupyter时出现过这样一段话:

The IPython Notebook is running at: http://localhost:8888/

这意味着,你的notebook是本地运行的,可以在浏览器上打开http://localhost:8888/,从而访问 notebook。你也可以修改下配置,让该notebook可以被公开访问。这样,任何知道notebook 地址的人都可以连接到notebook进行远程修改。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK