大家好,我是Peter~
很多读者问过我,Peter文章中的Python代码都是用的什么编辑器写的?
今天就公开啦:Jupyter Notebook,没有Pycharm,没有Vscode,没有Sublime text。只有一款工具:Jupyter Notebook。从2019年至今,使用了两年半多的时间,今天就好好聊聊它~
工欲善其事,必先利其器
![c6f015e3a033009e86b3cc31b3169794.png](https://i-blog.csdnimg.cn/blog_migrate/1b84f2e4044ea97764545cfab1067d09.png)
1、官网学习地址:
https://jupyter.org/
2、使用说明:
https://jupyter-notebook.readthedocs.io/en/stable/notebook.html
3、知乎很好的教程:
https://zhuanlan.zhihu.com/p/33105153
一、目录
![b0450f193dd9af4c15305e79aa29240b.png](https://i-blog.csdnimg.cn/blog_migrate/0940e6c484fb5b28e649cf3183b1d5a6.png)
二、谁在用Jupyter Notebook
也许还有朋友不知道Jupyter Notebook,到底都是谁在用它?
这是从官网上看到的使用者:谷歌、微软、NASA、IBM等国际知名公司都在其中。所以,你确定还不用吗?
![01eb7affb2ed1123061d3c6ed478bf9b.png](https://i-blog.csdnimg.cn/blog_migrate/6d9c5a99869d979c6aa527d989c39c3d.png)
三、用Jupyter Notebook写了什么
既然Jupyter Notebook这么受欢迎,那么Peter都用它写了什么?(ipynb文件都在Jupyter notebook完成)
1、Pandas系列的文章
![7b0ec1c849048d669ea14aedc906bc97.png](https://i-blog.csdnimg.cn/blog_migrate/9b1621b6ebcec15574696206c2708c0e.png)
2、Plotly系列文章
![c16cb57211247f12de0f0175bd170805.png](https://i-blog.csdnimg.cn/blog_migrate/de4104ff2c8824cedbc18e1eb44a24ab.png)
3、可视化库Pyecharts的使用
![4dbae5688c6b26d5808a897efe68c610.png](https://i-blog.csdnimg.cn/blog_migrate/c32b923ee3dbfd59ba379cf42daf2d3e.png)
总结:Peter所有的文章都是在 Jupyter Notebook 中完成的
四、什么是Jupyter Notebook
4.1简介
Jupyter Notebook是基于网页的用于交互计算的一款应用程序。它可被应用于整个计算过程:从开发文档编写、运行代码和到展示结果。
简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示的程序。
如在编程过程中需要编写说明文档,可在同一个页面中使用Markdown语法直接编写,便于作及时的说明和解释。
4.2组成
Jupyter notebook主要是由两个部分组成:网页和文档
上面已经介绍了Jupyter Notebook中基于网页的应用程序,在Jupyter 的整个网页应用中结合了多个元素:说明文档、计算公式、文档编写、可视化动态图、甚至是可以嵌入PPT等。总之,这款网页应用的程序能够实现各种功能
Jupyter Notebook中的所有程序都能够以各种形式的输入和输出:公式、文档、富媒体形式等。
Jupyter的文档是保存为后缀名为.ipynb
的JSON
格式文件,不仅便于版本控制,也方便与他人共享。
此外,文档还可以导出为:HTML、LaTeX、PDF、Markdown等格式的文件,十分方便和互联网化!
4.3特点
编程便捷:在jupyter notebook中编程,具有语法高亮、缩进、tab补全等功能;同时能够在浏览器中直接运行代码
支持Markdown:在在jupyter notebook中支持Markdown语法的,能够直接编写Markdown文档
具有记忆功能:在jupyter notebook中产生的信息(同一次运行)具有记忆功能
文档输出多样化:除了支持Markdown,还支持PDF、PPT、Latex公式、HTML、py文件等多种格式
动态可视化:jupyter notebook中生成的图形可以是动态可视化的
五、安装
建议直接通过anaconda来安装Jupyter notebook,这样后续省去很多麻烦。
anacoda是全球最大的数据科学平台,一个基于Python的环境管理工具,相比其他库管理工具,它更适合数据工作者。
安装了anaconda之后,不仅是Jupyter notebook,很多python的第三方库,比如:pandas、numpy等都会自动安装好,实在是方便。
![f7ecc5a0b58d61e64beb9da9a6958171.png](https://i-blog.csdnimg.cn/blog_migrate/4adecc95f71542363462de4181dbca8c.png)
anaconda安装可自行搜索教程,傻瓜式安装
推荐几个安装教程:
1、Windows系统:https://zhuanlan.zhihu.com/p/75717350
2、MacOS系统:https://blog.csdn.net/lq_547762983/article/details/81003528
3、Linux系统(Ubuntu):https://zhuanlan.zhihu.com/p/84544848
安装包下载地址:https://www.anaconda.com/products/individual#Downloads
![8549ce024c6bc06ab868223a99d8efe3.png](https://i-blog.csdnimg.cn/blog_migrate/e36c3b12abe965dbb3122b70ea3e44b5.png)
六、启动
(1)在安装好了Jupyter notebook之后,我们可以在任意位置启动它,直接输入jupyter notebook即可启动。
执行命令之后,在终端中将会显示一系列notebook的服务器信息,同时浏览器将会自动启动Jupyter Notebook:
(base) peter:pandas系列教程 peter$ pwd -- 查看当前的目录
/Users/peter/Desktop/WeChat/文章/pandas系列教程
(base) peter:pandas系列教程 peter$ jupyter notebook -- 输入 jupyter notebook 表示启动
!!!注意:启动Jupyter之后我们的全部操作都不要关闭终端,否则的话notebook就会断开和本地服务器的连接。
(2)启动之后就来到了初始页面,包含你当前目录的全部文件(文件夹和文档):
我们看到notebook默认的地址是localhost:8888,也就是默认本机的8888端口。当我们开启了多个notebook,会自动变成8889,8890等端口。
![d688c9a11674ab136ee0f72e3188a2cd.png](https://i-blog.csdnimg.cn/blog_migrate/ee517f88ad8210d02798bfadd873f1a6.png)
当然,我们也可以自定义端口:
jupyter notebook --port 9988 # 使用9988端口
(3)启动之后我们可以新建一个ipynb的文件:
![bb4f94da132a5632a1c1eda925056639.png](https://i-blog.csdnimg.cn/blog_migrate/cec0eb6218e48432b209989d6e8117bc.png)
七、使用
在启动Jupyter Notebook,并且创建了新的文件之后,我们便可以开始在里面进行编码和文档写作。下面讲讲如何使用Jupyter Notebook。
首先我们需要明白一点:在Jupyter Notebook中有两种模式
命令模式:键盘输入运行程序命令,此时单元格是蓝色的
编辑模式:允许你向单元格中输入代码或者文本内容,此时单元格是绿色的
7.1主页面
主页面分为4个部分:
notebook名称,可重命名
菜单栏
工具栏
代码单元格
![b4c88a9f1a566cde26b5f44d532e6595.png](https://i-blog.csdnimg.cn/blog_migrate/ad13d831391e9a5975d2236c30580ea2.png)
7.2帮助文档
如果你是个新手,可以在notebook中直接查看帮助文档:
!jupyter notebook -h # 感叹号!不能少
![6d998b7fc5abb55ee26a8404c1b2324a.png](https://i-blog.csdnimg.cn/blog_migrate/977d520c4eedd2c8e41986f8b1a7b3d3.png)
7.3重命名
默认的名字是“未命名”,给文件重命名:图解Pandas的apply函数
![aa90d1ca0b6445e62cbc8b608cc9cf41.png](https://i-blog.csdnimg.cn/blog_migrate/7c211f5a60f0abba70e4cb5599236e4f.png)
7.4文件
【文件】菜单中主要是对各种文件的输入和输出操作,特别是将ipynb文件下载成各种形式进行输出,十分方便:
![89f4ff1dc098e7bfe33ed045f647c6c8.png](https://i-blog.csdnimg.cn/blog_migrate/a70ea743e6c2fb56bb34bfadec1210b3.png)
7.5运行代码
当我们在代码的单元格中输入了代码,如何运行?
1、单击【运行】按钮
![85baa546809be8bab9229f55582c8e41.png](https://i-blog.csdnimg.cn/blog_migrate/bc906b2468cf49fee81c4801b455bb4e.png)
2、快捷键
将光标放在我们需要运行的代码框中,然后 Shift+Enter 即可运行~
![f007cf7fcb6c24ce08eff53ff71682d5.png](https://i-blog.csdnimg.cn/blog_migrate/c5208990a8f72c1e03d3f4b2ad0ab12e.png)
3、运行全部代码
如果我们想直接从头运行整个notebook中的全部代码,如下操作:【服务】到【重启&运行所有】
![ee28465e61400a9d8bd855f82bd9de62.png](https://i-blog.csdnimg.cn/blog_migrate/05c6fea48c3250ad27a8c60caf137354.png)
7.6内省
在一个对象的前后使用问号?可以显示出关于该对象的概要信息,这个对象可以是自建的,也可以是Python中自带的:
![ca8b68d8fc8ab9877175f754703e7b7d.png](https://i-blog.csdnimg.cn/blog_migrate/5abe38ea2d5d080c380713f18a43420f.png)
print函数和自定义函数的自省概要信息:
![7108456c76a903b739a8b7428e89989b.png](https://i-blog.csdnimg.cn/blog_migrate/96820635a3bb1d4375b1209d6a9d309d.png)
![b95bf6225d18ebec48cb4f62f7a47b4c.png](https://i-blog.csdnimg.cn/blog_migrate/cbed9ea677834cb396621ce35de3dc13.png)
使用双问号?还有个用途是显示函数的源代码:
![dcc1554097624cc3c50396e104d982cf.png](https://i-blog.csdnimg.cn/blog_migrate/ef2ca383d8af5b791fd235e7bf47f731.png)
7.7%run
%run命令可以用来运行任意的python文件:
Python文件的后缀为“.py”
“%run”后跟的是Python文件的绝对路径
%run Python文件的绝对路径
假设我们在当前目录下有个python文件:
定义了3个变量
给定了一个返回值result
![3b4f218a0c2d3681289b027e9ec42aab.png](https://i-blog.csdnimg.cn/blog_migrate/6c61c568b73e5f7e618c3121d1ca83d2.png)
我们在notebook中运行py文件:查看3个变量和返回值的情况
![4cb78a0e35708106267f2bce5fa34383.png](https://i-blog.csdnimg.cn/blog_migrate/824c18138048e01bef8a4534d9c14b7f.png)
八、扩展功能
8.1安装
Jupyter notebook本身功能其实不是很多,所以通常会给它安装一个扩展,安装之后就可以起飞了。
安装和启动命令如下:
# 安装Jupyter的配置器
pip install jupyter_nbextensions_configurator
# 启动配置器
jupyter nbextensions_configurator enable --user
![d4a71c0f43a981b5eb80e7f98d5a566d.png](https://i-blog.csdnimg.cn/blog_migrate/4fda111f92e6826fdfb3e10346672584.png)
![2625313d96d7eeccb99cc7c158824404.png](https://i-blog.csdnimg.cn/blog_migrate/adc54e5533f0b0da1ce0d683d210038e.png)
8.2显示代码行数
当一个单元格中的代码很多行,我们想显示行数:
![e46b64a8380a08ff9f88e9886e42f5a5.png](https://i-blog.csdnimg.cn/blog_migrate/99a868b32ad39f4c00bc891874a36f5c.png)
8.3编码Markdown文档
当Peter需要在notebook中做笔记的时候,都是使用的Markdown。在Jupyter notebook中是可以直接Markdown语法来编写内容的,两种方式可以实现。
关于什么是Markdown以及Markdown的语法,直接在公众号中回复Markdown就可以获取免费的PPT来进行学习。
方法1:下拉选项中选择【标记】
![dbbd3cd3531f763440a32b5b6f30e992.png](https://i-blog.csdnimg.cn/blog_migrate/84dfce008c1e7f6e399007a0dc3088ae.png)
![86cc5981b4ee5345a5c008c789c8b73c.png](https://i-blog.csdnimg.cn/blog_migrate/ab5314033187189eb7e534dac02c69a2.png)
方法2:快捷键的使用:【左侧蓝+M键】,Peter常用
![4b99e65f97636edd67ae0c170c0d2ee8.png](https://i-blog.csdnimg.cn/blog_migrate/1a766c76c9feefbe08a54a9ad83dc592.png)
![8bcce3d8b8bbef150a37558896fcd7f7.png](https://i-blog.csdnimg.cn/blog_migrate/ab8bdec86509d1e53d8e65b6842c3d3e.png)
![2fda03234cf4ab28918d9c4988a403ae.png](https://i-blog.csdnimg.cn/blog_migrate/2efc381d5805806ff2a8485fcb4fdfd4.png)
8.4生成目录
在使用Markdown的时候是有不同层级的目录,可以显示在notebook中。首先在扩展中需要开启这个功能:
![ca783155f73df83d378e6a1505d39fdd.png](https://i-blog.csdnimg.cn/blog_migrate/17b4ee9de7dedcbf7413ff4839279087.png)
点击启用目录生成:目录默认是在左边,也是按照层级来实现的
![041d81421cc876efe06985e7906d82e5.png](https://i-blog.csdnimg.cn/blog_migrate/12928a8873ad985b875983a39abca50d.png)
![b4b75f4357fc1a645b1001887bda769e.png](https://i-blog.csdnimg.cn/blog_migrate/73ac217dfb5faeb6f7e7efb616b619ad.png)
我们把光标放在目录上,呈现带+的符号,可以拖到右边:
![fb75ef7b26aad8d3b56819b000aeb4e2.gif](https://i-blog.csdnimg.cn/blog_migrate/12c1ec9849186761401745c9ae6db1ba.gif)
除了在左侧生成目录,还可以在整个ipynb文件的最上面生成目录:
![592c577a72d5effb8a3d997e7e88435f.png](https://i-blog.csdnimg.cn/blog_migrate/d06252709a787a4a88dd460e5ed54fe1.png)
![75c0bc12bfa3eed47b5db0d12d382f51.png](https://i-blog.csdnimg.cn/blog_migrate/70f65282204b951e1ccc8210dc997b96.png)
![e62a6260cbc2c3f24954f816534ef7ff.png](https://i-blog.csdnimg.cn/blog_migrate/709754b83c6b6b75b302562702dae176.png)
不管是左侧还是最上面的目录,当我们点击其中某个标题的时候,都会自动跳转到相应的位置,查看、定位文档或者代码超级方便。
8.5标题高亮
安装了扩展之后,我们还可以对标题进行高亮显示:
有3种颜色可供选择
设置了高亮之后标题中便会高亮
![e621924057eb119f1ed2e1124ee52e12.png](https://i-blog.csdnimg.cn/blog_migrate/214326583d4b34e2a42a1656f7086eac.png)
![5546bdbe0055dff00d0789ec00f36379.gif](https://i-blog.csdnimg.cn/blog_migrate/9c87fb6e4fe1c3d35a2f6691b94a46aa.gif)
8.6LaTex公式
既然Jupyter notebook能够使用Markdown,那么我们可以是Jupyter Notebook中编辑LaTex公式,举一个例子:在Markdown格式下的cell中输入如下内容:
$$ P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} $$
便会生成相应的LaTeX公式:
![672215931aeafb6782940e1293095774.png](https://i-blog.csdnimg.cn/blog_migrate/9ddf32dc3a864f9e04be1c75ec7efb44.png)
8.7输出多个结果
一般在notebook中只会输出一个结果,通过设置能够同时输出多个。
![9829abe287917a19bdb62f4452da2574.png](https://i-blog.csdnimg.cn/blog_migrate/55e75a7c8f4ccd6fdfb35ace534bf37c.png)
默认情况下只会输出最近一个变量的值**,例子中是b**。
通过设置InteractiveShell.astnodeinteractivity
参数为all
,就可以让所有的变量或者声明都能显示出来,添加两行代码便可实现输出多个变量的效果:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'
![4bde3f7dc73bf7f50ffba77a4f629bf9.png](https://i-blog.csdnimg.cn/blog_migrate/62aa2877c9838d91cd7cfbdd9705bc8f.png)
8.8拼写检查
这是检查拼写错误的一个扩展,能够快速的发现我们拼写中的错误。需要主要的是这个插件是在Markdown格式下作用的:
本意表达的是:This is wrong question
![b4054e8bfe9fb099dd950e5f61e9779a.png](https://i-blog.csdnimg.cn/blog_migrate/d538a5a3680cde39650c361fcdba97bb.png)
8.9隐藏输入
当我们只想查看输出out部分的内容,可以将输入的代码进行隐藏:
![ea701f28c76dc771780e2767402911b7.png](https://i-blog.csdnimg.cn/blog_migrate/03f7931601493d522b0125f355c83b63.png)
![4f205afdc2fc3496d844cd2ca017656e.png](https://i-blog.csdnimg.cn/blog_migrate/c0b0000e5db7c4732d203660eab0c805.png)
下面是隐藏之前的效果:
![6151112110d44f74804211be6675cd00.png](https://i-blog.csdnimg.cn/blog_migrate/da69935ba391632332412c6d9d088910.png)
九、快捷键
1、命令模式快捷键(按 Esc 键开启):
命令模式将键盘命令与Jupyter Notebook笔记本命令相结合,可以通过键盘不同键的组合运行笔记本的命令。
按
esc
键进入命令模式。命令模式下,单元格边框为灰色,且左侧边框线为蓝色粗线条。
快捷键 | 作用 |
---|---|
Enter | 转入编辑模式 |
Shift-Enter | 运行本单元,选中下个单元 |
Ctrl-Enter | 运行本单元 |
Alt-Enter | 运行本单元,在其下插入新单元 |
Y | 单元转入代码状态 |
M | 单元转入 markdown 状态 |
R | 单元转入 raw 状态 |
1、2、6 | 设定 1 、2、6级标题 |
Up | 选中上方单元 |
K | 选中上方单元 |
Down | 选中下方单元 |
J | 选中下方单元 |
Shift-K | 连续选择上方单元 |
Shift-J | 连续选择下方单元 |
A | 在上方插入新单元 |
B | 在下方插入新单元 |
X | 剪切选中的单元 |
C | 复制选中的单元 |
Shift-V | 粘贴到上方单元 |
V | 粘贴到下方单元 |
Z | 恢复删除的最后一个单元 |
D,D | 删除选中的单元 |
Shift-M | 合并选中的单元 |
Ctrl-S | 保存当前 NoteBook |
S | 保存当前 NoteBook |
L | 开关行号 |
O | 转换输出 |
Shift-O | 转换输出滚动 |
Esc | 关闭页面 |
Q | 关闭页面 |
H | 显示快捷键帮助 |
I,I | 中断 NoteBook 内核 |
0,0 | 重启 NoteBook 内核 |
Shift | 忽略 |
Shift-Space | 向上滚动 |
Space | 向下滚动 |
2、编辑模式快捷键( 按 Enter 键启动)
编辑模式使用户可以在单元格内编辑代码或文档。
按
enter
或return
键进入编辑模式。编辑模式下,单元格边框和左侧边框线均为绿色。
快捷键 | 作用 |
---|---|
Tab | 代码补全或缩进 |
Shift-Tab | 提示 |
Ctrl-] | 缩进 |
Ctrl-[ | 解除缩进 |
Ctrl-A | 全选 |
Ctrl-Z | 撤销 |
Ctrl-Shift-Z | 重做 |
Ctrl-Y | 重做 |
Ctrl-Home | 跳到单元开头 |
Ctrl-Up | 跳到单元开头 |
Ctrl-End | 跳到单元末尾 |
Ctrl-Down | 跳到单元末尾 |
Ctrl-Left | 跳到左边一个字首 |
Ctrl-Right | 跳到右边一个字首 |
Ctrl-Backspace | 删除前面一个字 |
Ctrl-Delete | 删除后面一个字 |
Esc | 切换到命令模式 |
Ctrl-M | 切换到命令模式 |
Shift-Enter | 运行本单元,选中下一单元 |
Ctrl-Enter | 运行本单元 |
Alt-Enter | 运行本单元,在下面插入一单元 |
Ctrl-Shift– | 分割单元 |
Ctrl-Shift-Subtract | 分割单元 |
Ctrl-S | 保存当前 NoteBook |
Shift | 忽略 |
Up | 光标上移或转入上一单元 |
Down | 光标下移或转入下一单元 |
Ctrl-/ | 注释整行/撤销注释 |
十、魔术命令
IPython的特殊命令被称为魔术命令,这些命令被设计用于简化常见任务。
官网地址:https://ipython.readthedocs.io/en/stable/interactive/magics.html
魔术命令的前缀符号是百分号%,例如%timeit
用来检查一段Python代码执行的时间。魔术命令可以直接使用,也可以赋值给变量再使用:
![ef7cddcc2a9d2b938a6714f7e3e20762.png](https://i-blog.csdnimg.cn/blog_migrate/c64a09ce99efeaa21f499fa7d1342b60.png)
下面👇记录的是IPython的几个常用的魔法命令:
魔术命令 | 作用 |
---|---|
%pwd | 查看当前的工作目录 |
%cd | 更改当前的工作目录 |
%ls | 查看目录文件列表 |
%writefile | 写入文件 |
%run | 运行脚本;%run可以从.py文件中执行python代码,也可以指定ipynb文件 |
%whos | 查看当前变量 |
%reset | 清楚当前变量 |
%timeit | 测试单行代码运行时间 |
%hist | 打印命令输入历史 |
%paste | 从剪贴板中执行已经预先格式化的Python代码 |
%cpaste | 打开一个提示符,手动粘贴执行的python代码 |
%debug | 从最后发生报错的底部进入交互式调试器 |
十一、Jupyter Notebook换主题
在上面的图形中都是使用的默认主题:白色,实际上主题是可以更换的:
在jupyter notebook中安装并使用不同的主题
# 安装
pip install jupyterthemes
pip install --upgrade jupyterthemes
切换不同主题
# 查看所有颜色主题 --list
jt -l
# 选择主题 --theme
jt -t 主题名称
# 恢复默认主题 --recover
jt -r
1、查看主题
![6f58a77cb1d0bd58ecb6ff6bef1d773f.png](https://i-blog.csdnimg.cn/blog_migrate/8f66092f904c5f5c4887040c5aa41e0b.png)
$jt -t monokai # 选择某个主题
$jt -t oceans16
# 然后重新启动jupyter notebook
$jupyter notebook # 启动命令
![159198aabf3efb4e58c4f57ab9be724f.png](https://i-blog.csdnimg.cn/blog_migrate/45f53f6fe25f4355579001bb17bba231.png)
![808eed5bea38aafd7e0bfb22940afffe.png](https://i-blog.csdnimg.cn/blog_migrate/cd5416ec7b48fea954efc8de8ef8e8cb.png)
如果想改回原来的主题输入 jt -r
即可
整理不易,点赞三连↓