Jupyter Notebook 使用总结

Posted by liangyu on February 16, 2017

为什么用 Jupyter notebook ?

平时用的最多的 Python 的 IDE 是 Spyder,在编辑器中编辑代码并在 IPython 中运行。但后来在处理一些特定的问题时很不方便,比如运行一些脚本时,希望能够保存每次运行的结果;写代码的时候希望能够记录下一些思路,当然可以用注释,但是这样显得很不整洁;拿到一批数据时,总是希望先可视化,试图发现一些规律,并把结果都保存下来。这时候用 IPython 就不那么方便了。

Ipython更适合写好代码后一次运行,而 Jupyter notebook 更像是一个笔记本,可以随时记录,可以直接运行代码直接显示结果,能将思路都完整保留下来,支持 Markdown 语言,很多人用它代替 PTT 做学术汇报。

Jupyter notebook 使用技巧

单元前面的原色表示不同的状态,蓝色是 命令模式,可以对单元进行操作,包括插入新的单元,删除不想要的单元,也可以选择不同的输入状态;绿色是 编辑模式,可以编辑代码或者文字,用 ‘Enter’ 和 ‘ESC’ 可以切换不同状态。

通过快捷键操作,提高工作效率,也比较酷。下面是我常用的一些快捷键:

命令模式

  • m: markdown 输入状态
  • y: 代码输入状态
  • Shift-Enter : 运行本单元,选中下个单元(如果没有就新建一个单元)
  • Ctrl-Enter : 运行本单元
  • Alt-Enter : 运行本单元,在其下插入新单元
  • a: 在上方插入新单元
  • b: 在下方插入新单元
  • x: 剪切选中的单元
  • c: 复制选中的单元
  • Shift-V : 粘贴到上方单元
  • v : 粘贴到下方单元
  • z : 恢复删除的最后一个单元
  • dd : 删除选中的单元
  • Shift-M : 合并选中的单元

编辑模式

  • Shift-Enter : 运行本单元,选中下个单元(如果没有就新建一个单元)
  • Ctrl-Enter : 运行本单元
  • Alt-Enter : 运行本单元,在其下插入新单元
  • Ctrl-Home : 跳到单元开头
  • Ctrl-End : 跳到单元开头

其他和普通的编辑器都一样。

Markdown 简介

Markdown 是这一种标记语言,语法简洁明了,容易理解,几乎感觉不到语法的存在,GitHub 和很多博客平台都支持这种语法。平时我会用 Atom 编辑器,不要用它自带的 Markdown 插件,太不好用了,推荐 markdown-preview-enhanced,功能很强大。这里对语法不做介绍,可以看以下的链接:

  1. Markdown,你只需要掌握这几个
  2. Markdown 语法说明 (简体中文版)

Jupyter notebook 演示

载入相关库

import numpy as np
from sklearn import datasets
import pandas as pd
# 将iris数据转换为Dataframe格式
iris = datasets.load_iris()

iris_X = iris.data
iris_y = iris.target
irisdata = np.concatenate((iris_X, iris_y.reshape(-1, 1)), axis=1)
columns_label = ['Sepallength', 'Sepalwidth', 'Petallength', 'Petalwidth', 'Species']
y_label = iris.target_names

irisDf = pd.DataFrame(data=irisdata,
                      columns=columns_label)

for i in xrange(3):
    irisDf['Species'].replace(i, y_label[i], inplace=True)

查看数据

irisDf.head()
Sepallength Sepalwidth Petallength Petalwidth Species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

描述数据

irisDf.describe()
Sepallength Sepalwidth Petallength Petalwidth
count 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.054000 3.758667 1.198667
std 0.828066 0.433594 1.764420 0.763161
min 4.300000 2.000000 1.000000 0.100000
25% 5.100000 2.800000 1.600000 0.300000
50% 5.800000 3.000000 4.350000 1.300000
75% 6.400000 3.300000 5.100000 1.800000
max 7.900000 4.400000 6.900000 2.500000

绘图

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid", color_codes=True)
%matplotlib inline
sns.pairplot(irisDf, hue="Species")

png-01

可以看到,Jupyter notebook 对于数据可视化相当方便,能保存每一步的结果,思路很清晰;markdown 语法也比代码注释要美观的多。

保存

Jupyter notebook 直接保存为 .ipynb 文件,也可以保存为 .py .html .md .pdf 文件,保存为pdf我没有试过,可以看下下面这个链接:

MAKING PUBLICATION READY PYTHON NOTEBOOKS

总结

Jupyter notebook 功能很强大,不仅能运行 Python 代码,还能安装不同的 kernal 运行其他代码,其他功能我自己也在摸索中,目前我自己常用的就是这些了。


本作品采用 知识共享署名 3.0 中国大陆许可协议 进行许可。