如何配置 Jupyter Notebook?

Pandas 百问百答第 005 篇。
- 如何在启动时指定目录?
- 如何安装扩展插件?
- 如何修改颜色主题?
- 如何让一个单元格显示多个输出?
- 如何不使用科学计数法显示数字?
- 如何添加与删除虚拟环境?
- 如何让 matplotlib 与 Seaborn 显示中文?
- 常用快捷键有哪些,如何修改或添加快捷键?
- 文末彩蛋,必看!!!
1. 如何在启动时指定目录?
指定启动目录可以减少很多切换目录的麻烦操作,呆鸟以前写过一篇《1 分钟修改 Jupyter 启动文件夹》,已经介绍过,不在此赘述了。
另外,还有文章介绍通过修改快捷方式指定启动目录,恕呆鸟愚钝,每次改完快捷方式都失效了,不知道哪里出的问题,感兴趣的朋友自己查下,试试看。
2. 如何安装扩展插件?
Notebook 有个很强大的扩展插件,好东西必须要安装。
安装插件的方式与上一篇介绍的一样,如果不知道怎么安装,请看《如何用 Anaconda 安装、升级、删除支持库?》一文里第 3 个问题的答案,怎么安装 Anaconda 里没有的 Python 支持库?
# 用 pip 安装,二选一
pip install jupyter_contrib_nbextensions
# 或用 conda 安装,二选一
conda install -c conda-forge jupyter_contrib_nbextensions
# 设置用户
jupyter contrib nbextension install --user
jupyter_nbextensions_configurator
# 用 pip 安装,二选一
pip install jupyter_nbextensions_configurator
# 或用 conda 安装 ,二选一
conda install -c conda-forge jupyter_nbextensions_configurator
# 设置用户
jupyter contrib nbextension install --user
# 启用用户
jupyter nbextensions_configurator enable --user
运行 Jupyter 以后,在地址栏里输入 http://localhost:8888/nbextensions,直接进入插件界面:
注意:有时候安装完会发现插件点不了,如下图,这时要去掉红框里的√。

去掉√,以后就可以了。

推荐几个呆鸟常用的小功能:
- Hinterland,代码自动补全
-
autopep8 ,对单元格里的代码自动排版
要用pip install autopep8
安装对应插件,不安装会提示出错;
点击红框里的小锤子图标,应用 autopep8:


- Execute Time,查看每个单元格的执行时间;

-
Table of Contents(2),自动目录,需要和 Markdown 配合,不懂 Markdown 的需要学习一下。
- 点击图标 1,开关目录显示;
- 点击图标 2,刷新目录;
- 点击图标 3,设置目录,比如,是否标题前是否加数字序号。

- Variable Inspector,显示变量数据。点击红框里的图标,打开变量查阅器窗口。


还有很多插件都很实用,自己慢慢研究吧。
循环进度条
- 插件网址:https://tqdm.github.io/
- 插件用途:数据分析有时要操作循环,但 Jupyter Notebook 没有显示监控的功能,tqdm 这个插件就是用来监控循环进度的,很实用。
- 代码示例:
from tqdm import tnrange, tqdm_notebook
%%time # 这个是计算操作时间的魔法命令
# 第一种方式
import numpy as np
from tqdm import tnrange, tqdm_notebook
a = []
for _ in tnrange(100,desc="第一个循环"):
a.append(np.random.randn(1,1000))
# 第二种方式
import numpy as np
from tqdm import tnrange, tqdm_notebook
a = []
b = []
for _ in tqdm_notebook(range(1000),desc="第二个循环"):
a.append(np.random.randn())
b.append(np.random.randn())

3. 如何修改颜色主题?
不喜欢默认界面,或想换下口味,jupyter-themes 可以更改颜色主题。
-
安装:
pip install jupyterthemes
-
参数说明:
命令行选项说明
颜色选项 | 参数 | 默认值 |
---|---|---|
查看帮助 | -h | -- |
查看主题列表 | -l | -- |
主题名称 | -t | -- |
代码字体 | -f | -- |
代码字号 | -fs | 11 |
Notebook 字体 | -nf | -- |
Notebook 字号 | -nfs | 13 |
文本或 Markdown 单元格 字体 | -tf | -- |
文本或 Markdown 单元格 字号 | -tfs | 13 |
Pandas DataFrame 字号 | -dfs | 9 |
输出内容字号 | -ofs | 8.5 |
Mathjax 字号 (%) | -mathfs | 100 |
页边距 | -m | auto |
单元格宽 | -cellw | 980 |
单元格行高 | -lineh | 170 |
光标大小 | -cursw | 2 |
光标颜色 | -cursc | -- |
Alt 命令布局 | -altp | -- |
Alt Markdown 背景色 | -altmd | -- |
Alt 输出背景色 | -altout | -- |
Vim 风格扩展 | -vim | -- |
工具栏是否可见 | -T | -- |
Notebook 名称与标识是否可见 | -N | -- |
内核标识是否可见 | -kl | -- |
重置为默认主题 | -r | -- |
强制使用默认字体 | -dfonts | -- |
-
应用示例:
在 Terminal 里设置主题:输入命令jt -t grade3
,jt 是 jupyter-themes 的简称,-t,就是上表里的主题名称对应的参数,grade3,是 jupyter-themes 内置的主题名称,下面列出了默认主题的示例,大家可以选择自己喜欢的。

-
内置主题:
-
grade3

- gruvboxd

- gruvboxl

- chesterish

- monokai

- oceans16

- onedork

- solarizedd

- solarizedl

除了默认主题,还可以把主题与其它参数搭配,下面推荐一个呆鸟喜欢的配置
jt -t onedork -f fira -fs 105 -ofs 95 -tfs 105 -nfs 115 -dfs 105 -N -T
下图是修改后的效果,喜欢深色主题的朋友可以试下,文字也更加饱满、清晰。

- 恢复默认主题, 所有主题都不喜欢?用
jt -r
即可恢复还原默认主题。

4. 如何让一个单元格显示多个输出?
正常情况下, 一个单元格只显示一个输出结果;

执行下列代码以后,就可以显示多个代码了;
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

5. 如何不使用科学计数法显示数字?
{:,.2f}
代表显示的是两位小数。
pd.options.display.float_format = '{:,.2f}'.format
6. 如何添加与删除虚拟环境?
代码里的 virtualenv-name 要改为实际的虚拟环境名称,比如呆鸟用的虚拟环境就叫 Python3
,见下图。
- 安装:
python -m ipykernel install --user --name=virtualenv-name
- 查看:
jupyter kernelspec list

- 删除:
jupyter kernelspec uninstall virtualenv-name
7. 如何让 matplotlib 与 Seaborn 显示中文?
默认情况下,matplotlib 与 Seaborn 不支持中文,要设置中文字体。
%matplotlib inline
# 设置 matplotlib 图形分辨率
plt.rcParams['figure.dpi'] = 150
# matplotlib 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# matplotlib 正常显示负号
plt.rcParams['axes.unicode_minus'] = False
# Seaborn 字体与字号设置
sns.set( font='SimHei', font_scale=1.2)
# MacOS:matplotlib 与 Seaborn 支持中文
plt.rcParams['font.family'] = ['Arial Unicode MS']
sns.set_style('whitegrid', {'font.sans-serif': ['Arial Unicode MS', 'Arial']})
8. 常用快捷键有哪些?
首先,要了解什么是编辑模式?什么是命令模式?
红框里是绿色时,为编辑模式,在命令模式时按 Enter 会进入编辑模式;

红框里是蓝色时,为命令模式,在编辑模式时按 ESC 会进入命令模式;

通用模式(编辑模式与命令模式均可)快捷键:
- 调出控制面板:Ctrl + Shift + P
- 运行当前单元格,选中下方单元格:Shift + Enter
- 运行当前单元格:Ctrl + Enter
- 运行当前单元格,在下方插入新单元格:Alt + Enter
- 保存 ipynb 文件:Ctrl + S
编辑模式快捷键:
- 切换为命令模式:ESC
- 在光标处分割单元格:Ctrl + Shift + 减号
- 光标挪至行首或行尾:Alt + ←或→
- 按单词挪动光标:Ctrl + ←或→
- 缩进:TAB
- 取消缩进:Shift + TAB
- 删除光标前的整个单词:Ctrl + Backspace
- 删除光标后的整个单词:Ctrl + Delete
- 显示函数提示:Shift + TAB,按一次显示简略信息,按两次显示详细信息,按三次 10 秒内固定显示,按四次,函数信息固定显示在界面下方。
- 移动到上一个单元格:↑
- 移动到下一个单元格:↓
- 删除光标所在整行:Ctrl + K,光标在行首时
- 复制光标所在整行:Ctrl + C,注:不要选择任何内容
- 剪切光标所在整行:Ctrl + X,注:不要选择任何内容
- 其它复制、剪切、黏贴、重做、取消等快捷键与 Windows 标准快捷键一样。
命令模式快捷键:
- 切换为编辑模式:Enter
- 选中单元格改为代码格式:Y
- 选中单元格改为 Markdown 格式:M
- 选中单元格改为原生格式:R
- 当前单元格上方插入单元格:A
- 当前单元格下方插入单元格:B
- 删除选中单元格:DD,即连续按两次 D 键
- 恢复删除的单元格:Z
- 复制选中单元格:C
- 剪切选中单元格:X
- 黏贴选中单元格:V
- 查找与替换内容:F
- 隐藏 / 显示输出内容:O
- 隐藏 / 显示代码行号:L
- 扩展选择当前单元格上方单元格:Shift + ↑
- 扩展选择当前单元格下方单元格:Shift + ↓
- 合并多个单元格:Shift + M
- 重启内核:00,即连续按两次
零
注:以上快捷键字母不分大小写
如何修改或添加快捷键?

输入,如:W,E
,这样的快捷键

设置说明,在最下方:

9. 文末彩蛋,必看!!!

呆鸟为大家精心编译了 Jupyter Notebook 速查表,详细介绍了 Jupyter Notebook 的界面功能,高清大图 PDF,请在公号后台输入 notebook 获取下载地址。
最后,有关 Jupyter Notebook 用法其实还有很多,比如魔法命令,但小白一般也用不上,就先不介绍了。
总的来说,Jupyter Notebook 比其它 IDE 要简单太多了,小白不至于为了 IDE 操作,就直接晕倒,因此,非常适合上手 Python 数据分析,等深入学习以后,再用那些高大上的 IDE,也为时不晚。
