什么是 Jupyter notebook?
Jupyter Notebook 是一个 Web 应用,允许我们 创建和共享 文学化的代码文档。
具体地,Jupyter Notebook 提供了一个环境,你可以在其中 编写代码,运行代码,查看结果,可视化数据,此外还可以 添加说明文本,支持数学公式 和 Markdown 语法。
这些特性使其成为一款可以用于 数据清理,统计建模,机器学习 以及其它许多应用的便捷工具。
数据挖掘领域中最热门的比赛 Kaggle 里的资料都是 Jupyter 格式。
Jupyter Notebooks 还非常适合用来 构建项目原型,因为你的 代码是被写入独立的单元块中并被单独执行的。这允许用户 只测试项目中的特定代码块,而无需从脚本的开始执行代码。
Jupyter notebook 的工作原理
Jupyter notebook 源于 Fernando Perez 发起的 IPython
项目。
IPython
是一种 交互式 shell,与普通的 Python shell 相似,但具有一些更高级的功能,例如 语法高亮显示 和 代码补全,还有一些 magic 操作(魔术操作),十分方便。
Jupyter notebook 则是将 IPython
做成了一种 Web 应用。
如上图所示,核心为 notebook 服务器。用户通过浏览器连接到该服务器,notebook 呈现为 Web 应用,用户在 Web 应用中编写的代码通过该服务器发送给内核,内核运行代码,并将结果发送回该服务器。然后,任何输出都会返回到浏览器中。保存 notebook 时,它将作为 JSON 文件(文件扩展名为 .ipynb)写入到该服务器中。
安装 Jupyter Notebook
1、通过 Anaconda 安装 Jupyter Notebook
新用户可以通过安装 Anaconda 来 同时安装 Python 和 Jupyter Notebook。
2、通过 pip 安装 Jupyter Notebook
如果出于某种原因,你决定不使用 Anaconda,那你可以需要用 pip 安装 Jupyter Notebook。
pip install jupyter
Jupyter Notebook 基本使用
① 启动 Jupyter Notebook 服务器
在终端环境下输入 jupyter notebook
, 服务器 就会默认 在当前的操作目录下 启动。
启动后,notebook 服务器的默认 运行地址 是 http://localhost:8888
。只要 notebook 服务器仍在运行,你随时都能通过在浏览器中输入 http://localhost:8888
进入到 web 页面中。
② 界面介绍
单元格
Notebook 文件 (.ipynb) 由单元格(cell)组成。
单元格分 四种类型,可以相互切换。
- Code(默认类型):编写和执行代码 的地方。
- Markdown:输入文本 的地方。你可以在代码附近 添加注释,添加实验结论 等。运行 Markdown 单元格,会将 Markdown 呈现为格式化文本。
- Raw NBConvert:这是一个命令行工具,可将你的笔记本转换为另一种格式(如 HTML)
- Heading:你可以 添加标题作为单独的小节 来使得你的 Notebook 更加整洁条理。这个选项现在已经集成到 Markdown 选项中。
单元格有 编辑 和 操作 两种 状态。
- 绿色 代表单元格处于编辑状态,此时可以在单元格中编辑内容。
- 蓝色 代表单元格处于操作状态,你需要在该状态下才能删除单元格。
- 两种状态之间可以用 Esc 和 Enter 键来回切换。
Kernel 小圆圈
我们可以通过观察 右上角 Kernel 小圆圈的状态 来了解 程序是否运行完成
在空闲状态下,小圆圈是白的,在运行代码时,小圆圈会变黑。
Jupyter Notebook 魔术操作
Magic
Jupyter Notebook 快捷键
notebook 自带一些 快捷键,能让你 使用键盘与单元格快速交互,而无需使用鼠标和工具栏。熟练掌握快捷键,能够大大加快你在 notebook 中的工作速度。
【你可以通过 Help / Keyboard Shortcut 来 查看以及编辑所有快捷键】
下面列出了一些 常用的快捷键:
单元格模式切换
- 单元格侧边为蓝色时,表示此时为命令模式,按 Enter 切换为编辑模式
- 单元格侧边为绿色时,表示此时为编辑模式,按 Esc 切换为命令模式
命令模式下
- A:在选中单元格上方插入一个新单元格
- B:在选中单元格下方插入一个新单元格
- 连续按两次 D:删除选中的单元格
- Z:撤消已删除的单元格
- X / C:剪切 / 复制选中的单元格
- Shift + V / V:粘贴至选中单元格的上面 / 下面
- F:打开 “查找和替换所有” 菜单【只能全部替换不能单个替换】
- M:把当前单元格转换为 markdown 类型
- Y:把当前单元格转换为 代码 类型
编辑模式下
- Tab:代码补全
- Ctrl + Home:将光标移动至到单元格的前端
- Ctrl + End:将光标移动至到单元格的末端
两个模式下通用的操作
- Ctrl + Enter:运行当前单元格
- Shift + Enter:运行当前单元格并跳转到下一个单元格【如果下面没有单元格则会新建一个】(更常用,更符合我们平时的编程习惯)
- Alt + Enter:运行当前单元格并在下方新建一个单元格
- Ctrl + S - 保存文件
Kernel(编译环境) 管理
Conda虚拟环境管理 与 Jupyter kernel管理
Jupyter Notebook 拓展工具
Jupyter Notebook 常见问题及解决对策
1、在终端 python shell 中能够 import 模块,在 jupyter notebook 中却查找不到模块
问题描述
已经在 ubuntu 下用 conda 安装了 pytorch ,在终端的命令行模式下可以 import torch ,但是在 jupyter notebook 中无法 import torch。
原因
终端的解释器路径 与 jupyter notebook 的解释器路径不一致
# 查询当前使用的解释器的路径
import sys
sys.executable
解决方案
往 Jupyter Notebook 中添加 kernel
- 安装 ipykernel 包
conda install ipykernel
- 添加 kernel
python -m ipykernel install --user --name kernel_name
如果需要删除 kernel,使用下面的指令
jupyter kernelspec uninstall kernel_name
3、ImportError: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
报错信息打印
ImportError: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
原因
ipython 工具 ipywidgets 未安装或者版本过低
解决方法
查看是否安装了 ipywidgets:
pip search ipywidgets
如果未安装 ipywidgets,则默认安装最新版:
pip install ipywidgets
如果已安装 ipywidgets 但是版本过低,则进行更新
pip install --upgrade ipywidgets