学习笔记:Jupyter notebook操作技巧
一、jupyter notebook简介、用途、优势和缺点
- 简介
Jupyter notebook源于Fernando Perez发起的IPython 项目。
IPython 是一种交互式shell,与普通的Python shell相似,但有些更高级的功能,例如语法高亮显示和代码补全,有magic操作。Jupyter notebook将IPython做成了一种开源的Web应用,允许用户创建和共享包含代码、方程式、可视化和文本的文档。Jupyter这个名字是它要服务的三种语言的缩写:Julia,Python和R,与“木星(jupiter)”谐音,事实上起名也是 Jupyter项目组对伽利略发现木星卫星时所用笔记本的致敬。
IPython时代 ——>Jupyter Notebook时代——Jupyter Lab时代——Jupyter Hub时代 - 用途
数据清理和转换、数值模拟、统计建模、数据可视化、机器学习等等。 - 优势
可选择语言:支持超过40种编程语言,包括Python、R、Julia、Scala等。
分享笔记本:可以使用电子邮件、Dropbox、GitHub和Jupyter Notebook Viewer与他人共享。
交互式输出:代码可以生成丰富的交互式输出,包括HTML、图像、视频、LaTeX等等。
大数据整合:通过Python、R、Scala编程语言使用Apache Spark等大数据框架工具。支持使用pandas、scikit-learn、ggplot2、TensorFlow来探索同一份数据。
~~提供了一种人性化的REPL终端,以及文档代码一体化等等。 - 缺点
每次启动的时候相对繁琐,若是启动本地安装的IDE,一个命令或者点击一下图标即可,但是jupyter notebook要进入命令行/终端,输“jupyter notebook”,若使用的是虚拟环境,首先还要激活虚拟环境,而且启动后它会占用一个终端或命令行窗口,如果意外关闭则会终止jupyter notebook服务。
二、 单元Cell:
- 两种模式: 命令模式(Command Mode)与编辑模式(Edit Mode)。
- 按y m切换markdown和code模式
- 点Esc键或运行单元格(ctrl-enter)切换回命令模式、按Enter键或者双击cell变为编辑状态。
- 四种功能: Code、Markdown、Raw NBConvert、Heading
- Jupyter Notebook已经取消了Heading状态,即标题单元格。取而代之的是Markdown的一级至六级标题。而Raw NBconvert目前极少用到。
- code状态下运行代码
In[ ]程序未运行
In[num]程序运行后
In[*]程序正在运行
- code状态下运行代码
- Jupyter Notebook已经取消了Heading状态,即标题单元格。取而代之的是Markdown的一级至六级标题。而Raw NBconvert目前极少用到。
三、操作技巧
通过终端打开jupyter后,保持终端不要关闭,否则会断开与本地服务器的链接。
打开后,浏览器地址为:http://localhost:8888。其中,“localhost”指的是本机,“8888”则是端口号。多打开一个则端口号+1。
代码状态下 按h 跳出快捷键帮助
jupyter中命令之前加个“!”,即可执行shell命令。
- 给Jupyter换主题
pip install jupyterthemes #安装
jt -l #加载可用主题列表
jt -t <name of the theme> #选择想要的主题
jt -r #恢复原来的主题
======================================================================
其中 <name of the theme> 包括:
chesterish、grade3、gruvboxd、gruvboxl monokai、oceans16、onedork、solarizedd、solarizedl
- 笔记本扩展(nbextensions)——高效插件
是一种JavaScript模块,将一系列 js 脚本嵌入到 Jupyter 中,可以加载到笔记本前端页面上,可以大大提升用户体验。
功能包括:Hinterland跳出下拉菜单、Snippets直接插入代码段、拆分单元格,相邻的模式 分栏、生成目录、 折叠标题Collapsible Headings、Autopep8美化代码、ExecutionTime 获得单元格执行时间
代码(省略 我们一般使用的%time以及基于装饰器的计时器函数来度量函数的时间。)…
#conda安装nbextensions
conda install -c conda-forge jupyter_nbextensions_configurator
#pip安装nbextensions
第1步:用 pip 来安装它
pip install jupyter_contrib_nbextensions
第2步:安装关联的 JavaScript 和 CSS 文件
jupyter contrib nbextension install --user
- Ipywidgets小工具组件
Ipywidgets作者:Martin Renou,QuantStack的科学软件工程师。
Ipywidgets功能:多种的Python对象,通常在Jupyter Notebook或JupyterLab中具有可视化表示:按钮,滑块,文本输入,复选框等。
详细用法参考:https://mp.weixin.qq.com/s/9We5ovP88lAICrDKQIQKxg
- Jupyter播放PPT——slide幻灯片操作
默认是一个单元格cell就是一张PPT
方法一: Jupyter内置PPT,View → Cell Toolbar → Slideshow,选择子幻灯片,然后进入到ipynb文件所保存的文件夹中,路径中输入,则会打开.html文件即为所需要的slide
jupyter nbconvert 文件名.ipynb --to slides --post serve
方法二: 使用RISE插件。用到reveal.js来运行PPT,可以不退出PPT,直接运行代码。
详细参考:https://github.com/damianavila/RISE
- Qgrid——类似Excel里的筛选功能
用pip安装:
pip install qgrid
jupyter nbextension enable --py --sys-prefix qgrid #only required if you have not enabled the ipywidgets nbextension yet
jupyter nbextension enable --py --sys-prefix widgetsnbextension
用conda安装:
#only required if you have not added conda-forge to your channels yet
conda config --add channels conda-forge
conda install qgrid
- 嵌入链接和pdf
from IPython.display import IFrame
IFrame('https://www.baidu.com/', width=800, height=450) #嵌入链接
IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450) #嵌入pdf
Cython
Cython是个能用 Python 编译 C 语言的程序包,这也是 Numpy 和 Pandas 运行快的主因。
通过pip install cython 安装 Cython,会发现在没有更改任何代码的情况下,性能立马提高了两倍
常用魔法命令(注意是在Python kernel中适用)
基于IPython内核,Jupyter可以访问IPython内核中的所有Magics。
%lsmagic 显示所有magic方法
%: 行魔法函数,只对本行代码生效。
%%: Cell魔法函数,在整个Cell中生效,必须放于Cell首行。
%lsmagic: 列出所有的魔法函数
%magic 查看各个魔法函数的说明
?后面加上魔法函数名称,可以查看该函数的说明
%run 用来运行代码脚本
%timeit 测试单行语句的执行时间
%%timeit 测试整个单元中代码的执行时间——使用Python timeit模块 ,该模块运行一条语句100,000次(默认情况下),然后提供最快的三次平均值。
% matplotlib inline 显示 matplotlib 包生成的图形
%%writefile 写入文件
%pdb 调试程序 (Jupyter 自己的调试界面The Python Debugger (pdb))
%pwd 查看当前工作目录
%ls 查看目录文件列表
%reset 清除全部变量
%who 查看所有全局变量的名称,若给定类型参数,只返回该类型的变量列表
%whos 显示所有的全局变量名称、类型、值/信息
%xmode Plain 设置为当异常发生时只展示简单的异常信息
%xmode Verbose 设置为当异常发生时展示详细的异常信息
%debug bug调试,输入quit退出调试
%env 列出全部环境变量
Pdb中可使用的命令见链接(https://docs.python.org/3.5/library/pdb.html#debugger-commands)
Jupyter notebook 和 Jupyter lab 的区别
notebook 打开的只是单个文件的执行文件,而 lab 相当于打开了一个内置的编辑器,可以对目录内的所有文件进行操作,并且内置了 python 的调试和终端.
Jupyterlab 的基本理念是将经典 notebook 中的所有功能以及新特性整合在一起。
在pycharm中使用jupyter
参考视频:https://www.zhihu.com/question/266988943/answer/662774364
#学习参考,非常好的文章:https://zhuanlan.zhihu.com/p/90109972