什么是 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 应用

book类型 python python的notebook_Markdown

如上图所示,核心为 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 页面中。

② 界面介绍

单元格

book类型 python python的notebook_Markdown_02


Notebook 文件 (.ipynb) 由单元格(cell)组成

单元格分 四种类型,可以相互切换。

  • Code(默认类型)编写和执行代码 的地方。
  • Markdown输入文本 的地方。你可以在代码附近 添加注释,添加实验结论 等。运行 Markdown 单元格,会将 Markdown 呈现为格式化文本。
  • Raw NBConvert:这是一个命令行工具,可将你的笔记本转换为另一种格式(如 HTML)
  • Heading:你可以 添加标题作为单独的小节 来使得你的 Notebook 更加整洁条理。这个选项现在已经集成到 Markdown 选项中

单元格有 编辑操作 两种 状态

  • 绿色 代表单元格处于编辑状态,此时可以在单元格中编辑内容。
  • 蓝色 代表单元格处于操作状态,你需要在该状态下才能删除单元格。
  • 两种状态之间可以用 Esc 和 Enter 键来回切换。

Kernel 小圆圈

我们可以通过观察 右上角 Kernel 小圆圈的状态 来了解 程序是否运行完成

在空闲状态下,小圆圈是白的,在运行代码时,小圆圈会变黑。

book类型 python python的notebook_Markdown_03

Jupyter Notebook 魔术操作

Magic

Jupyter Notebook 快捷键

notebook 自带一些 快捷键,能让你 使用键盘与单元格快速交互,而无需使用鼠标和工具栏。熟练掌握快捷键,能够大大加快你在 notebook 中的工作速度。

【你可以通过 Help / Keyboard Shortcut查看以及编辑所有快捷键

book类型 python python的notebook_book类型 python_04

下面列出了一些 常用的快捷键

单元格模式切换

  • 单元格侧边为蓝色时,表示此时为命令模式,按 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

  1. 安装 ipykernel 包
conda install ipykernel
  1. 添加 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