目前非常多的数据科学工作还是基于Notebook和Pycharm一起进行的,很多时候我们会在Notebook上面验证一些想法,然后再模块化代码写入到工程中,而掌握一些Notebook的使用技巧,可以大大提高使用Notebook的效率。
一、快捷键:
1.命令模式 (按键 Esc 开启)快捷键:
Enter : 转入编辑模式
Shift-Enter : 运行本单元,选中下个单元
Ctrl-Enter : 运行本单元
Alt-Enter : 运行本单元,在其下插入新单元
Y : 单元转入代码状态
M :单元转入markdown状态
R : 单元转入raw状态
设定 1 级标题
设定 2 级标题
设定 3 级标题
设定 4 级标题
设定 5 级标题
设定 6 级标题
Up : 选中上方单元
K : 选中上方单元
Down : 选中下方单元
J : 选中下方单元
Shift-K : 扩大选中上方单元
Shift-J : 扩大选中下方单元
A : 在上方插入新单元
B : 在下方插入新单元
X : 剪切选中的单元
C : 复制选中的单元
Shift-V : 粘贴到上方单元
V : 粘贴到下方单元
Z : 恢复删除的最后一个单元
D,D : 删除选中的单元
Shift-M : 合并选中的单元
Ctrl-S : 文件存盘
S : 文件存盘
L : 转换行号
O : 转换输出
Shift-O : 转换输出滚动
Esc : 关闭页面
Q : 关闭页面
H : 显示快捷键帮助
I,I : 中断Notebook内核
0,0 : 重启Notebook内核
Shift : 忽略
Shift-Space : 向上滚动
Space : 向下滚动
2. 编辑模式 ( Enter 键启动)下快捷键
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 : 文件存盘
Shift : 忽略
Up : 光标上移或转入上一单元
Down :光标下移或转入下一单元
二、多个结果单个单元一起输出
使用Notebook的时候,我们知道Notebook一般只会看到最后一个需要输出的结果,而忽略前面的结果,例如:
在同一单元格中有多行,“df.head(3)”,"df.tail(3)"和“df.shape”。那么我们往往只能到"df.shape"的结果;
这可能并不是我们希望看到的,此处我们仅需加入两行代码,即可将多个结果一起输出。具体地,如下:
import pandas as pd
df = pd.DataFrame({'A':[1,2,3,4,5], 'B':['a','b','c','d','e']})
df.head(3)
df.tail(3)
df.shape
# (5, 2)
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
df.head(3)
df.tail(3)
df.shape
三、输出所有变量
在一些情况下,我们写了非常多的代码,这个时候有什么变量之类的可能已经记不清楚了,那么如何显示当前Notebook中有多少变量呢?只需要进行下面的操作就可以知晓所有的变量。
%whos
四、函数文档快速查询
有的时候我们想要知道一些函数的文档,尤其是当我们初次使用该函数,我们需要知道这个函数的功能和变量等信息,此时我们只需要在该函数前面加入?即可。
?print
五、Notebook的Debug
我们在Pycharm里面可以方便的Debug,但是在Notebook中我们往往依赖于直觉和不断的结果输出来调节代码,如何在Notebook中进行Debug呢?很简单,加入下面的一行代码即可。
%%debug
def _add_1(x):
return x+1
print(_add_1(10))
六、Notebook执行shell命令
在cell的前面加入感叹号"!"即可运行shell命令,例如现实当前目录下面的文件:
!ls
七、Cell执行时间查询
很多时候,在数据较大或者算法较慢的情况下,我们希望知道其运行时间,我们可以通过time工具包进行计算,但是在Notebook中,我们还可以通过下面的快捷指令进行计算。
%%time
for i in range(1000000):
x = i+1
# CPU times: user 95.9 ms, sys: 2.66 ms, total: 98.6 ms
# Wall time: 98.1 ms
八、Notebook写书
Notebook除了可以写Markdown和代码,还可以排版成写书的感觉,只需要安装Notebook Extensions插件然后在Nbextension中选择对应功能即可。
! pip install jupyter_contrib_nbextensions
! jupyter contrib nbextension install --system
九、Notebook显示Slides
可以通过“View->Cell Toolbar -> Slideshow”,然后为Notebook中的每个单元格选择幻灯片配置,创建Jupyter笔记本的幻灯片演示文稿。
最后,通过转到终端并键入以下命令,就可以看到Slides了。
pip install jupyter_contrib_nbextensions
jupyter nbconvert my_notebook_name.ipynb --to slides --post serve
十、所有Magic命令
Notebook中存在非常多的magic命令,可以直接通过输入下面命令进行显示。
%lsmagic
# Available line magics:
# %alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %conda %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %pip %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode
# Available cell magics:
# %%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile
# Automagic is ON, % prefix IS NOT needed for line magics.
十一、代码自动提示
其他的IDE都可以有代码自动提示,在Jupyter却需要一个个敲是非常痛苦的事情。可以在文件开始加入如下命令,就可以实现代码自动提示了:
%config IPCompleter.greedy=True -----#TAB键代码会自动提示