Jupyter notebook入门教程(上)

本文将分上下两部分简单介绍Jupyter notebook的入门教程,英文原文出处:

Getting started with the Jupyter notebook(part 1)

Jupyter notebook(又称IPython notebook)是一个交互式的笔记本,支持运行超过40种编程语言。本文中,我们将介绍Jupyter notebook的主要特点,了解为什么它能成为人们创造优美的可交互式文档和教育资源的一个强大工具。

在使用这个notebook之前,你需要先进行安装。你可以在Jupyter website上找到完整的安装步骤。

(译者注:推荐使用Anaconda,自带了Numpy、Scipy、Matplotlib等多种python开发包和Jupyter notebook)

安装完毕后,在Linux终端运行下列命令:

jupyter notebook
  • 1

然后,你将看到类似下面显示的语句:

[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).
  • 1
  • 2
  • 3
  • 4
  • 5

Jupyter的主窗口显示的路径一般是你启动notebook时位于的路径下(通常在你的用户目录下)。主界面如下所示:

这里写图片描述

若要创建一个新的notebook,只需鼠标左击New,在下拉选项中选择一个你想启动的notebook类型即可。

这里写图片描述

因为我只安装了Python内核,所以启动Python notebook来进行演示,打开新的标签,得到了一个空的notebook界面。

这里写图片描述

你可以看到notebook由以下部分组成:

  • notebook名字

  • 主工具栏,包括保存notebook、导出、重载、重启内核等

  • 快捷键

  • notebook主要部分,notebook编辑区

花时间熟悉菜单,了解其中的选项。如果你想了解一些特殊模块、notebook或者一些库,可以点击菜单栏右侧的Help按钮。

在主区域(编辑区),你可以看到一个个单元(cell)。每个notebook都由许多cell组成,每个cell有不同的功能。

首先,第一个cell如下图所示,以“In[ ]”开头表示这是一个代码单元。在代码单元里,你可以输入任何代码并执行。例如,键盘输入1+2,然后按“Shift+Enter”,代码将被运行,并显示结果。同时,切换到新的cell中。

这里写图片描述

绿色的轮廓线所在的cell,就是当前工作单元。接下来,我们在第二个cell中,敲击下列代码:

for i in range(5):
    print(i)
  • 1
  • 2

按“Shift+Enter”运行该单元,得到:

这里写图片描述

跟之前一样,代码被执行,结果也正确显示处理。但是你可能注意到这次没有Out[2],这是因为我们打印了结果,却没有返回值。

notebook一个非常有趣的特性是可以返回之前的cell,修改并重新运行,以此来跟新整个文档。例如,现在我们回到第一个cell中,将输入1+2改成2+3,重新按“Shift+Enter”运行该单元,结果被立即更新成5。当你想使用不同参数调试方程又不想运行整个脚本的时候,这条特性非常有用。然而,你也可以通过菜单栏Cell->Run all来重新运行整个notebook。

现在我们已经知道了如何输入代码,那为什么不尝试获得一个更加优美,解释性更强的notebook呢?这可以通过使用其他类型的cells来获得,例如Header和Markdown单元。

首先,我们在notebook的顶部添加一个标题。做法是,选择第一个cell,点击Insert->Insert cell above,则在这个cell上面会添加一个新的单元。但是这个新cell默认是code类型,我们可以通过cell type菜单选择Heading或Markdown替换之前的code类型,这样就可以添加标题了。

这里写图片描述

你可以选择Heading,然后弹出信息会告诉你如何创建不同级别的标题,这样你就有了与code不同类型的cell。

这里写图片描述

这个cell以#开头,表示一级标题。如果你想列子标题的话,参考下面的方法:

# : First level title
## : Second level title
### : Third level title
...
  • 1
  • 2
  • 3
  • 4

标题写在#后面,然后重新运行cell,你会发现该单元添加了标题,非常生动可读,示例如下:

这里写图片描述

添加标题之后,我们要对每个代码类型的cell做相应的解释。为此,我们在相应的位置添加cell,将其类型改为Markdown,然后重新运行cell,这样就能让解释文本丰富起来了。

这里写图片描述

最后,你可以将新建的notebook重命名,点击File->Rename,然后输入新的名称即可。这样更改后的名字就会出现在窗口的左上角,位于Jupyter图标的右侧。

单元操作

当你在编辑notebook时,你希望使用更多高级的cell操作。幸运的是,notebook允许你使用非常丰富的cell操作。你可以删除一个cell,先选中cell,点击Edit->Delete cell。你也可以移动一个cell的位置,点击Edit-> 
Move cell [up | down]。你也可以剪切、粘贴cell,点击Edit->Cut Cell then Edit -> Paste Cell …,选择需要的粘贴形式。如果有许多cells,而你只想执行一次,或者你想一次性执行大量代码,你就可以合并多个cells,点击Edit->Merge cell [above|below]。编辑notebook时,记住这些操作,会节约你很多时间。

Markdown单元高级用法

让我们再深入地探讨下markdown单元类型,即便它的类型是markdown,它同时也支持HTML代码。你可以在你的cell中创建更高级的样式,比如添加图片等等。举个例子来说,如果你想在notebook中添加Jupyter的图标,尺寸为100x100,并且放置在cell左侧,可以这样编写:

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

运行该单元,效果如下:

这里写图片描述

除此之外,markdown还支持LaTex语法。你可以在markdown cell中按照LaTex语法规则写下方程式,然后直接运行,就可以看到结果。例如运行下面方程式:

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

运行后就得到了LaTex方程式:

这里写图片描述

导出功能

notebook另一个强大的功能就是导出功能。你可以把你的notebook(例如是个图解代码课程)导出为如下多种形式:

  • HTML

  • Markdown

  • ReST

  • PDF(Through LaTex)

  • Raw Python

如果导出成PDF格式,你甚至可以不使用LaTex就创建了一个漂亮的文档。或者,你可以将你的notebook保存为HTML格式,发布到个人网站上。你还可以导出成ReST格式,作为软件库的文档。

Matplotlib集成

如果你用Python画过图,应该知道matplotlib。Matplotlib是用来画图的Python库。与Jupyter notebook结合使用时,效果更好。下面,让我们来看看如何在Jupyter notebook中使用matplotlib。

为了在Jupyter notebook中使用matplotlib,你需要告诉Jupyter获取所有matplotlib生成的图形,并把它们全部嵌入到notebook中。为此,只需输入以下命令:

%matplotlib inline
  • 1

这条语句执行可能耗费几秒钟,但是只需要你打开notebook时执行一次就好。让我们作个图,看看是怎么集成的:

import matplotlib.pyplot as plt
import numpy as np

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

plt.plot(x, y)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这段简单代码将绘出y=x2y=x2对应的二次曲线。运行这个cell,结果如下所示:

这里写图片描述

我们可以看到,图直接嵌入到notebook中,就在代码下面。修改代码,重新运行,图形将自动同步更新。对于每个想要把代码和图形放在同一个文件中的数据科学家来说,这是一个很好的特性,这样可以清楚知道每段代码究竟干了什么。同时,在文档中添加一些文字型描述也有很大的作用。

非本地内核

Jupyter notebook非常容易从本地电脑上启动,也允许多个人通过网络连接到同一个Jupyter实例。你是否注意到,在上一部分的教程中,启动Jupyter时出现了下面这条语句:

IPython Notebook运行在:http://localhost:8888/

这条语句表示你的notebook是本地运行,可以在浏览器中输入地址http://localhost:8888/,打开你的notebook。通过修改配置,可以让notebook面向公开访问。这样,任何人如果知道这个notebook地址,就通过浏览器可以远程访问并修改notebook。

结语

通过这两个部分的入门教程,我们知道了Jupyter notebook是一个非常强大的工具,允许使用者为数据分析、教育、文件等任何你可以想到的内容创建漂亮的交互式文档。不要犹豫,探索它更多的功能和可能性。如果你有任何问题或者想感谢开发者们,请给他们反馈。

本文转载自https://blog.csdn.net/red_stone1/article/details/72858962

展开阅读全文

Jupyter Notebook的主题编码问题

02-10

最近因为jupyter notebook的白色原装界面太难看了,特别是字体。然后,就install nJupyter themes; 一切都OK,themes也下载下来了,进行 jt -l 也是没问题的,正常n显示出了已经有的各个主题了。n最后,进行 jt -t 主题名 启用时,报错了。无法切换主题:nn(C:\Users\Administrator\Anaconda3) C:\Users\Administrator>jt -lnAvailable Themes:n chesterishn grade3n gruvboxdn gruvboxln monokain oceans16n onedorkn solarizeddn solarizedlnn(C:\Users\Administrator\Anaconda3) C:\Users\Administrator>jt -t grade3nTraceback (most recent call last):n File "c:\users\administrator\anaconda3\lib\runpy.py", line 193, in _run_module_as_mainn "__main__", mod_spec)n File "c:\users\administrator\anaconda3\lib\runpy.py", line 85, in _run_coden exec(code, run_globals)n File "C:\Users\Administrator\Anaconda3\Scripts\jt.exe\__main__.py", line 9, in n File "c:\users\administrator\anaconda3\lib\site-packages\jupyterthemes\__init__.py", line 307, in mainn dfonts=args.defaultfonts)n File "c:\users\administrator\anaconda3\lib\site-packages\jupyterthemes\__init__.py", line 103, in install_themen style_css = stylefx.less_to_css(style_less)n File "c:\users\administrator\anaconda3\lib\site-packages\jupyterthemes\stylefx.py", line 63, in less_to_cssn style_css = lesscpy.compile(tempfile)n File "c:\users\administrator\anaconda3\lib\site-packages\lesscpy\__init__.py", line 18, in compilen p.parse(file=file)n File "c:\users\administrator\anaconda3\lib\site-packages\lesscpy\lessc\parser.py", line 154, in parsen file, lexer=self.lex, debug=debuglevel)n File "c:\users\administrator\anaconda3\lib\site-packages\ply\yacc.py", line 331, in parsen return self.parseopt_notrack(input, lexer, debug, tracking, tokenfunc)n File "c:\users\administrator\anaconda3\lib\site-packages\ply\yacc.py", line 1024, in parseopt_notrackn lexer.input(input)n File "c:\users\administrator\anaconda3\lib\site-packages\lesscpy\lessc\lexer.py", line 475, in inputn self.lexer.input(f.read())nUnicodeDecodeError: 'gbk' codec can't decode byte 0x8b in position 44256: illegal multibyte sequencen 问答

没有更多推荐了,返回首页