本文来源:王的机器 

Jupyter Notebook使用大全_python

本文有 6437 字,40 截屏建议阅读 35 分钟 在公众号对话框回复 JNB 获取完整 Jupyter Notebook

 

0引言

 

JuPyteR是三大编程语言Julia、Python 和 R 的缩写,即可以在 Jupyter NoteBook (JNB) 里面编写这三种语言,除此之外,JNB 还支持轻量级别标记语言(Markdown)的功能。本帖结合 Python 语言来介绍 JNB 里面的玩法。

 

如下图所示,JNB 界面就是一组 cell,在每个 cell 里可以写代码(选 code 模式),也可以写标记语言(选 markdown 模式)。

 

Jupyter Notebook使用大全_python_02

 

Code 和 Markdown 模式之间可以用 Ctrl + Y 和 Ctrl + M 快捷键来替换。两者包括的内容总结如下图。

 

Jupyter Notebook使用大全_ide_03

 

我们分别从代码(code)和标记语言(Markdown)来介绍:

 

  • 代码

     

    • Python 代码

    • Shell 指令

    • Magic 指令

    • + 各种骚操作

       

  • 标记语言

     

    • 字体(font)

    • 链接(link)

    • 公式(formula)

    • 图片(image)

    • 视频(video)

    • 网页(HTML)

    • + 各种骚操作

 

首先展示一下在 Markdown Cell 里如何编辑目录,左图是 markdown 语言,右图的最终效果,从语言到最终效果需要按下 Enter 键。

 

Jupyter Notebook使用大全_快捷键_04

 

从上图已经可以看出某些符号可产生哪些效果了,比如

 

    #      →     标题

    **     →     粗体

    1.2.3 →     要点

 

等等。别慌,后面都有介绍。

 

 

1Markdown 类操作

 

1.1

要点

 

标记语言

 

Jupyter Notebook使用大全_标记语言_05

 

解释

第 1 行

 

  • ## 表示二级标题,

  • <font color = 'red'></font> 调字体为红色

  • <a name="1"></a> 创建超链接将此处标记为 "1",在目录点击可跳到此处。在目录中 [**要点**] 后面有个(#1)就是和 "1" 对应的。

 

第 2 行点击超链接(#toc)回到目录,目录被标记为 "toc"。

 

第 4 行同样创建超链接将此处标记为 "CV",在后面点击链接会跳到此处。

 

第 6-12 行用 - 符号来创建非数字型要点。

 

第 16-19 行用 1,2,3 来创建数字型要点。

 

最终效果

 

Jupyter Notebook使用大全_ide_06

 

 

1.2

公式

 

标记语言

 

Jupyter Notebook使用大全_下划线_07

 

解释

语法和 Latex 里的一样,只需记得两点:

 

  1. 在文本中加入公式用 $...$

  2. 单独加入公式用 \begin{equation}...\end{equation}

 

最终效果

 

Jupyter Notebook使用大全_python_08

 

 

1.3

字体

 

字体大小

标记语言

 

Jupyter Notebook使用大全_快捷键_09

 

解释

没啥好解释的,几个 # 就是几级标题。

 

最终效果

 

Jupyter Notebook使用大全_python_10

 

字体格式

标记语言

 

Jupyter Notebook使用大全_下划线_11

 

解释

也没啥好解释的,上图讲的够清楚了,记住就行了。

 

最终效果

 

Jupyter Notebook使用大全_下划线_12

 

字体颜色

标记语言

 

Jupyter Notebook使用大全_快捷键_13

 

解释

用 <font color = 'str'></font>str 代表什么颜色的英文单词,调出来的字体就是什么颜色。

 

最终效果

 

Jupyter Notebook使用大全_python_14

 

字体特征

标记语言

 

Jupyter Notebook使用大全_下划线_15

 

解释

用 <font face = 'str1', size = n, color = 'str2'></font>,其中

 

  • face 控制字体类型

  • size 控制字体大小

  • color 控制字体颜色

 

最终效果

 

Jupyter Notebook使用大全_python_16

 

 

1.4

引用

 

标记语言

 

Jupyter Notebook使用大全_快捷键_17

 

解释

无需解释,记住用 > 就行了,几个 > 就是几层引用。

 

最终效果

 

Jupyter Notebook使用大全_python_18

 

 

1.5

表格

 

标记语言

  •  
| 内容          | 百分比   ||---------------|:-------:|| Python Basic  |   10%   || NumPy         |   15%   || Pandas        |   15%   || SciPy         |   10%   || Matplotlib    |   10%   || Seaborn       |    5%   || PyEcharts     |    5%   || Scikit-Learn  |   20%   |

 

最终效果

 

Jupyter Notebook使用大全_ide_19

 

 

1.6

图片

 

插入图片有两种方法:

 

  1. 在 Markdown Cell 里用 img 函数,我们以插入硬盘里图片举例

  2. 在 Code Cell 里用 Image 函数,我们以插入网上的图片举例

 

在 Markdown Cell 里用 img

标记语言

  •  
<img src="快乐机器学习封面.jpg"      style="width:1000px; height:500px;"      align="center">

 

解释

第 1 行在 src 参数设定图片的完整名称,确保图片存在路径中。

 

第 2 行在 style 参数设定图片的宽和高,注意用 px 作为单位。

 

第 3 行在 align 参数设定图片位置。

 

最终效果 (不要脸的发了张本人的书的封面)

 

Jupyter Notebook使用大全_标记语言_20

 

在 Code Cell 里用 Image()

标记语言

  •  
from IPython.display import ImageImage(url= "http://img51.ddimg.cn/99999990102599841.jpg",       width=500, height=1000)

 

解释

第 1 行引用 Ipython.display 里的 Image 库。

 

第 2 行在 url 参数设定图片的网址。

 

第 3 行在 widthheight 参数设定图片的宽和高。

 

最终效果 (再不要脸一次)

 

Jupyter Notebook使用大全_下划线_21

 

 

1.7

视频

 

标记语言

  •  
from IPython.display import YouTubeVideoYouTubeVideo('9RrMcq-zJcU')

 

解释

第 1 行引用 Ipython.display 里的 YouTubeVideo 库。

 

第 2 行调用 YouTubeVideo,并传入视频的链接最后一部分无规律的字符串,如下图。

 

Jupyter Notebook使用大全_标记语言_22

 

最终效果(我崇拜的达利奥)

 

Jupyter Notebook使用大全_标记语言_23

 

 

1.8

HTML

 

标记语言

  •  
from IPython.display import HTMLHTML('''<table style="border: 2px solid black;">''' +     ''.join(['<tr>' +             ''.join([f'<td>{row},{col}</td>'                      for col in range(5)]) +              '</tr>' for row in range(5)]) +     '''</table>''')

 

解释

没啥好解释的,记住就完了。不想记也可以,反正用的地方不多。

 

最终效果

 

Jupyter Notebook使用大全_ide_24

 

 

1.9

链接

 

外链接

标记语言

  •  
- Python - https://www.python.org/- Anaconda - https://anaconda.org/- NumPy - https://numpy.org/- Pandas - https://pandas.pydata.org/- SciPy - https://www.scipy.org/- Matploitlib - https://matplotlib.org/- Seaborn - https://seaborn.pydata.org/- PyEcharts - https://pyecharts.org/#/- Scikit-Learn - https://scikit-learn.org/stable/

 

最终效果

 

Jupyter Notebook使用大全_ide_25

 

内链接

标记语言

  •  
[返回个人介绍](#CV)

 

最终效果

 

Jupyter Notebook使用大全_标记语言_26

 

个人介绍处用<a name="CV"></a>创建超链接。 [返回个人介绍] 后用(#CV) 形成链接。

 

 

2Code 类操作

2.1

Python 代码

 

以检查系统和 Python 常用包的版本为例。

  •  
# systemimport sysprint('System: %s' %sys.version)# numpyimport numpyprint('numpy: %s' % numpy.__version__)# pandasimport pandasprint('pandas: %s' % pandas.__version__)# scipyimport scipyprint('scipy: %s' % scipy.__version__)# matplotlibimport matplotlibprint('matplotlib: %s' % matplotlib.__version__)# seabornimport seabornprint('seaborn: %s' % seaborn.__version__)# pyechartsimport pyechartsprint('pyecharts: %s' % pyecharts.__version__)# scikit-learnimport sklearnprint('sklearn: %s' % sklearn.__version__)
System: 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)]
numpy: 1.17.4
pandas: 0.25.3
scipy: 1.3.1
matplotlib: 3.1.1
seaborn: 0.9.0
pyecharts: 1.3.1
sklearn: 0.22

 

 

2.2

Shell 指令

 

用感叹号 ! 作为前缀,我们用 !cd 和 !dir 来查看路径和其所有文件名。

  •  
!cd
C:\Users\oawsy\Desktop\Steven - Business\Python Course\code
  •  
!dir

Jupyter Notebook使用大全_标记语言_27

 

 

2.3

Magic 指令

 

用感叹号 % 或 %% 作为前缀,我们可以使用 line magic 和 cell magic。首先用 %lsmagic 来查看所有魔法指令。

  •  
%lsmagic

Jupyter Notebook使用大全_标记语言_28

line magic (%)
  •  
%timeit L = [n ** 2 for n in range(1000)]

 

520 µs ± 37.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

 

cell magic (%%)
  •  
%%timeitL = []for n in range(1000):    L.append(n ** 2)
571 µs ± 45.4 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

 

 

2.4

查询指令

 

查询指令可用 ? 和 ?? 前缀,区别是用 ? 可查询某个函数或变量的信息,而用 ?? 还可查询到函数的源代码。

 

查询内置函数
  •  
print?

Jupyter Notebook使用大全_快捷键_29

 

用 print?? 得到同样结果。由于内置函数的源代码太长,通常不会显示出来。

 

查询变量

首先定义一个列表

  •  
L = [1, 2, 3]

 

我们可以查询变量的信息。

  •  
L?

Jupyter Notebook使用大全_python_30

 

我们还可以查询变量中方法的信息。

  •  
L.insert??

Jupyter Notebook使用大全_快捷键_31

 

查询自定义函数

定义一个函数 shout() 并带上 docstring '''将 s 喊出来'''

  •  
def shout( s='武汉加油' ):    '''将 s 喊出来'''    print(s)

 

运行得到

  •  
shout()
武汉加油

 

单问号 ? 查询不到自定义函数的源代码。

  •  
shout?

Jupyter Notebook使用大全_下划线_32

 

双问号 ?? 可查询到自定义函数的源代码。

  •  
shout??

Jupyter Notebook使用大全_标记语言_33

 

 

2.5

自动完成键

 

TAB 键

首先定义一个列表

  •  
L = [1, 2, 3]

 

接着我们使用 <TAB> 键来查看列表中的方法。

 

Jupyter Notebook使用大全_ide_34

 

  • 如果只写个 L. + <TAB>,那么我们可以查看列表中所有方法。

  • 如果我们想用 count,但是不知道整个单词怎么拼,可以写 L.c + <TAB>,这时可看到所有以 c 开头的方法,有 clear, copy 和 count。

  • 如果记得前两个字母,L.co + <TAB>,这时可看到所有以 c 开头的方法,有 copy 和 count。

  • 如果记得前三个字母,L.cou + <TAB>,这时只有一个 count 方法,cou 会自动完成 count,无需我们手动敲完。

 

 

Jupyter Notebook使用大全_快捷键_35

 

* 通配符

当你只记得某个对象或者其方法的首几位字母,<TAB> 键会很有用。但是如果你只记得中间几位或者后面机会的字母,我们可以用通配符 *

 

比如我们想知道 Python 里面所有错误的类型,我们知道它们都是以 Error 结尾,因此写成 *Error,其中 * 代表 0 或 n 个字符。

  •  
*Error?
ArithmeticError
AssertionError
AttributeError
...
ValueError
WindowsError
ZeroDivisionError

 

 

再比如你想查询 str 中以 r 开头的所有方法,用 r*。

  •  
str.r*?
str.replace
str.rfind
str.rindex
str.rjust
str.rpartition
str.rsplit
str.rstrip

 

 

再比如你想查询 str 中含 rs 的所有方法,用 *rs*。

  •  
str.*rs*?
str.rsplit
str.rstrip

 

 

2.6

快捷键

 

JNB 里面的快捷键太多了,我们列出一些常用的好用的。快捷键分为命令模式(command mode)和编辑模式(edit mode),细分如下:

 

命令模式

 

  • Ctrl + Enter:运行选的 Cell,运行完选择当前 Cell

  • Shift + Enter:运行选的 Cell,运行完选择下个 Cell

  • Alt + Enter:运行选的 Cell,运行在下面插入新的 Cell

  • Esc + Y: 将 cell 转成 Code 模式

  • Esc + M: 将 cell 转成 Markdown 模式

  • Esc + Shift + K(up): 选上面的 cell

  • Esc + Shift + J(down): 选下面的 cell

  • Esc + A: 在上面插入新的 cell

  • Esc + B: 在下面插入新的 cell

  • Esc + F:查找并替代

 

编辑模式

 

  • Ctrl + ]:缩进

  • Ctrl + [:取消缩进

  • Ctrl + /:注释/取消注释

  • Shift + TAB:提示框

 

在上面众多快捷键中,我认为 Shift + TAB 最有用,特别是和 <TAB> 键或者通配符 * 一起用的时候。

 

假如我们想用 seaborn (sns) 下面的配对图 (pairplot)

 

  • 首先函数名字都记不清楚,只知道有个 p 字,这时用 sns.p + <TAB> 就可看到所有 p 开头的方法选出 pairplot

 

  • 接着 pairplot 函数里面要放什么参数也不知道,这时将鼠标放在 pairplot() 的括号中间,按 Shift + TAB 会出来一个提示框,函数里面的参数定义和用法介绍的清清楚楚。

 

一动图胜千言,如下。

 

Jupyter Notebook使用大全_标记语言_36

 

这样你都不需要查看任何外来资料,就凭着自己模糊的记忆一点一点把函数用对(根据个人经验是这样的)。

 

 

2.7

黑操作

 

In 和 Out 对象

注意:需要重启 Notebook 运行得到以下结果。

 

首先在三个 Cell 运行代码,注意下图左边的 In 和 Out 标注。并不是每个 In 都对应 Out,有些语句没有输出。

 

Jupyter Notebook使用大全_快捷键_37

 

打印 In 发现是个列表,有 5 个元素。第 1 个是个空字符串,最后 1 个是 print(In) 本身,中间三个才是有用的。

  •  
print(In)
['', 'import math', 'math.exp(1)', 'math.sin(1)', 'print(In)']

 

 

打印 Out 发现是个字典,其键(key)就是第 n 个 In 对应的 n,其值(value)就是 Out[n] 对应的值。

  •  
print(Out)
{2: 2.718281828459045, 3: 0.8414709848078965}

 

 

我们可以对 In 和 Out 进行索引。

  •  
print( In[2], Out[2] )
math.exp(1) 2.718281828459045

 

  •  
Out[2] + Out[3]
3.5597528132669414

 

下划线 _ 保存最新产出

下划线 _ 能保存最新产出不知道把?

双下划线 __ 能保存第二新产出不知道把?

三下划线 ___ 能保存第三新产出不知道把?

 

看下面代码。

  •  
print(_)
3.5597528132669414
  •  
print(__)
0.8414709848078965
  •  
print(___)
2.718281828459045

 

 

由于 print() 函数不产生输出,即在 Cell 前面没有 Out 字眼。这时再打印 Out,发现只有在第 2, 3 和 7 In 才对应的产出。

  •  
Out
{2: 2.718281828459045,
 3: 0.8414709848078965,
 7: 3.5597528132669414}

 

 

我们还可以用下划线 _ 来代表 Out,用 _n 来代表 Out[n],代码如下:

  •  
_2
2.718281828459045
  •  
_7
3.5597528132669414

 

 

没问题,如果打印 _4 呢?

  •  
_4

Jupyter Notebook使用大全_快捷键_38

 

报错了,因为 Out 里面没有一个键是 4,即上面第 4 个 In 没有产生 Out。验证一下,确实是这样的。

 

Jupyter Notebook使用大全_python_39

 

 

3总结

 

在 Jupyter Notebook 里面我们可以编写 Code,也可以编写 Markdown。

 

在 Markdown Cell 中可以添加数学公式、表格、要点、链接、图片、视频等,使得整个 Notebook 内容丰富多彩。

 

在 Code Cell 中可用 Python 编程,还可以执行 Shell 命令和 Magic 命令,还可以玩一下用下划线 _ 和 In/Out 的骚操作。

 

如果你在编程时啥都记不住,又不想查外部资料,建议你要记住几个操作:

 

重要假设:你还是能稍微记住一些东西的,比如大概知道 numpy 里面有重塑函数叫 res_p__ 什么的。啥都记不住我建议你不要编程了。

 

  1. <TAB> 或者 * 来慢慢查出函数的完整名称。

  2. ?? 来查看这个函数的 docstring。

  3. Shift + TAB 调出提示框,查询函数里每个参数是如何调用的。

 

 

Jupyter Notebook使用大全_快捷键_40

 

Jupyter Notebook使用大全_ide_41