来源:大数据

本文约2800字,建议阅读8分钟

本文总结了28种Jupyter Notebook的使用技巧。

[ 导读 ]最近做实验一直是用Jupyter Notebook编程,有一种打草稿的便捷感,在dataquest上看到一篇博客总结了28种Jupyter Notebook的使用技巧。为了方便大家理解,对原文一个简略的地方进行了适当的解释和扩充。希望大家在用Jupyter Notebook编程时可以更加爽快。

00 Jupyter Notebook是什么

Jupyter Notebook,以前称为IPython Notebook,是一种灵活的python编程工具,可以用来创建可读的分析。在Jupyter Notebook上可以将代码、图像、注释、公式和可视化结果保存在一起。在这篇文章中,我们介绍了一些非常实用的Jupyter Notebook高级使用技巧,让Jupyter Notebook成为你编程的超级利器!

01 实用的快捷键

Jupyter Notebook有很多的快捷键,编程时使用这些快捷键将提高你的编程效率。想知道Jupyter Notebook有哪些快捷键,你可以在它的下拉菜单Help>Keyboard Shortcuts中找到。或者在command model中按下H查看。每次更新Jupyter的时候你都最好看看有哪些新的快捷键。

还有一个方法调用快捷键,那就是使用Ctrl + Shift + P 调出command palette。在这个对话框中你可以输入快捷功能的名字来使用快捷键,比如你想重启kernel,那就在对话框中输入’restar’,command palette会自动显示候选的功能。这个功能类似Mac上的Spotlight工具。

我的一些常用快捷键:

  • Esc进入command mode

  • command mode下:A/B可以在上/下方插入新的cell,M切换到Markdown模式下,Y切回编程模式,D+D删除当前cell

  • Entercommand mode返回edit mode

  • Shift + Tab会显示你刚才输入对象的文档

  • Ctrl + Shift + -将会分割你的cell

  • Esc + F查找替换代码(不包含输出部分)

  • Esc + O隐藏cell的输出

  • 你还可以选对多个cell进行操作:Shift + J Shift + Down向下选择,Shift + K Shift + Up向上选择,Shift + M合并多个cell

02 整齐的变量输出

当你的cell最后是一个变量名,那么你不需要用print就可以输出了。特别是你要输出Pandas DataFrames的时候,这很有用。

不过我要教你一个少有人知道的技巧,指定ast_note_interactivity参数为all来一次性输出多个变量而不用print

ore.interactiveshell import InteractiveShellInteractiveShell.ast_node_interactivity = "all"from pydataset import data
quakes = data('quakes')
quakes.head()
quakes.tail()
# 输出的效果是将head和tail都输出,而不是只有tail输出

如果你希望所有Jupyter 的cell都这样输出,创建一个文件~/.ipython/profile_default/ipython_config.py并输入以下代码:

c = get_config()
# Run all nodes interactively
c.InteractiveShell.ast_node_interactivity = "all"

03 快速链接文档

你可以在Help菜单中看到一些常用库,如NumPy, Pandas, SciPy and Matplotlib的文档。不过你还可以在方法前面加?来查看对应的文档。

# 执行下面这行代码在Jupyter Notebkook中
?str.replace()
# 将显示文档
Docstring:
S.replace(old, new[, count]) -> strReturn a copy of S with all occurrences of substringold replaced by new.  If the optional argument count isgiven, only the first count occurrences are replaced.
Type:      method_descriptor


04 在notebooks中绘图

常用的绘图库包括:matplotlib, Seaborn, mpld3, bokeh, plot.ly, Altair

05-15 魔法命令

由于Jupyter是基于IPython内核的,所以Jupyter可以使用IPython内核中的Magics命令。

可以使用%lsmagic查看所有的magic命令。

  • %env,设置环境变量

你可以管理notebook的环境变量,而无需重新启动Jupyter服务器进程。有些库(比如theano)使用环境变量来控制行为,%env是最方便的方法。

# Running %env without any arguments
# lists all environment variables# The line below sets the environment
# variable
%env OMP_NUM_THREADS%env OMP_NUM_THREADS=4# output
env: OMP_NUM_THREADS=4
  • %run,执行python代码

有时候你有一份已经写好的*.py文件,你可以在Jupyter中执行它。

# this will execute and show the output from
# all code cells of the specified notebook
%run ./two-histograms.ipynb
  • %load,导入外部脚本

有时候你想运行一个外部脚本,但是想用Jupyter加一些代码,那么你可以先把它load进Jupyter。

# 你有一个hello_world.py文件
# 内容是if __name__ == "__main__":   print("Hello World!")
# 在Jupyter中先用%load载入
%load ./hello_world.py# 运行%load ./hello_world.py命令后,在你的cell中就出现以下几行代码(你执行的%run语句会显示已经注释)
# %load ./hello_world.py
if __name__ == "__main__":print("Hello World!")
  • %store,在notebook之间传递变量

# 在notebook A 中
data = 'this is the string I want to pass to different notebook'
%store data
del data # This has deleted the variable# 在notebook B 中
%store -r data
print(data) # 显示this is the string I want to pass to different notebook
  • %who,显示所有的变量

# 某个cell中有以下四行代码
one = "for the money"
two = "for the show"
three = "to get ready now go cat go"
%who str# 输出为
one   three   two
  • %%time和%timeit

%%time将提供代码单次运行的信息,%%timeit将默认运行你的代码100,000次,提供最快运行三次的平均结果。

  • %%writefile和pycat,导出单元格的内容/显示外部脚本的内容

%%writefile保存cell内容到外部文件。%pycat正好相反。

  • %prun,显示程序中每个函数的调用信息

  • %pdb,代码调试

详细的介绍在:

https://docs.python.org/3.5/library/pdb.html#debugger-commands

  • 为视网膜(Retina)屏输出高分辨率图像

# 常规图像
x = range(1000)
y = [i ** 2 for i in x]
plt.plot(x,y)
plt.show();
# 视网膜(Retina)图像
%config InlineBackend.figure_format ='retina'
plt.plot(x,y)
plt.show();

16 在函数末尾加入分号可以抑制输出

在函数末尾加分号可以抑制函数的输出。

17 执行shell命令

在shell命令前面加!

# 一些例子
!ls *.csv
!pip install numpy
!pip list | grep pandas

18 用LaTex写公式

在markdown cell 中书写LaTeX时,它会被 MathJax 渲染成一个公式

19 在一个notebook中运行多种kernel的代码

如果想要的话,你可以在一个notebook中运行多种kernel的代码。

在每个cell的开头使用相关的魔法命令来声明你想使用的 kernel。

# 支持:%%bash, %%HTML, %%python2, %%python3, %%ruby, %%perl
%%bash
for i in {1..5}
doecho "i is $i"
done

20 为Jupyter安装其他的kernel

Jupyter其实不止可以用于python编程,安装一个R内核它就可以用于R语言编程。

# 通过Anaconda安装
conda install -c r r-essentials# 手动安装
# 你需要先从https://cloud.r-project.org下载安装R
# 然后在R控制台下运行以下代码
install.packages(c('repr', 'IRdisplay', 'crayon', 'pbdZMQ', 'devtools'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()  # to register the kernel in the current R installation

21 在同一个notebook中运行R和Python

你可以安装rpy2用pip install rpy2

%load_ext rpy2.ipython
%R require(ggplot2)
array([1], dtype=int32)
import pandas as pd
df = pd.DataFrame({'Letter': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'],'X': [4, 3, 5, 2, 1, 7, 7, 5, 9],'Y': [0, 4, 3, 6, 7, 10, 11, 9, 13],'Z': [1, 2, 3, 1, 2, 3, 1, 2, 3]})
%%R -i df
ggplot(data = df) + geom_point(aes(x = X, y= Y, color = Letter, size = Z))

22 用其他语言来写函数

有时numpy的速度不够快,我需要写一些快速的代码。

原则上,可以在动态库中编译函数并编写python包装器…

但是把这个无聊的部分做完会更好,对吧?

您可以用cython或fortran编写函数,并直接从python代码中使用这些函数。

首先你需要安装cython:

!pip install cython fortran-magic
%load_ext Cython
%%cython
def myltiply_by_2(float x):return 2.0 * x
myltiply_by_2(23.)

就个人而言我建议使用fortran:

%load_ext fortranmagic
%%fortran
subroutine compute_fortran(x, y, z)real, intent(in) :: x(:), y(:)real, intent(out) :: z(size(x, 1))z = sin(x + y)
end subroutine compute_fortran
compute_fortran([1, 2, 3], [4, 5, 6])

23 多行编辑模式

你可以在Jupyter中使用多行编辑模式,只需要按住Alt键。

24 在Jupyter上安装插件

Jupyter-contrib extensions是一个插件库,包含了很多实用的插件,包括jupyter spell-checkercode-formatter

使用以下命令安装Jupyter-contrib extensions

!pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master
!pip install jupyter_nbextensions_configurator
!jupyter contrib nbextension install --user
!jupyter nbextensions_configurator enable --user

安装成功后Jupyter-contrib extensions会以菜单栏的方式显示在界面上。

25 从notebook中创建PPT

安装RISE工具就可以从已有的notebook中创建powerpoint风格的演示了。

conda install -c damianavila82 rise或pip install RISE安装RISE。

# 激活RISE
jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix

26 Jupyter输出系统

使用IPython.display这个库可以将多媒体文件排列输出。

27 大数据分析

推荐使用ipyparallel,pyspark工具以及%%sql魔法命令进行大数据查询,处理。

28 分享notebooks

通常分享*.ipynb文件是最简单的方式。但是如果你要给不用Jupyter的人分享有以下几种选择:

  • 使用File - Download as - HTMLl菜单选项将笔记本转换为html文件

  • github或者gist.github.com上分享notebooks

  • 使用jupyterhub搭建你自己的分享系统

  • dropbox上存储你的notebook并且将链接挂到https://nbviewer.jupyter.org上

  • 使用File - Download as - PDF保存notebook为PDF

最后希望大家看完这篇“安利”后可以愉快地使用Jupyter Notebook~

参考资料

28 Jupyter Notebook Tips, Tricks, and Shortcuts

https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts

与作者交流

github:

https://github.com/keloli

blog:

https://www.jianshu.com/u/d055ee434e59

编辑:于腾凯

校对:林亦霖

Python编程神器Jupyter Notebook使用的28个秘诀(附代码)相关推荐

  1. python开发笔记软件_图解Python编程神器Jupyter Notebook

    大家好!在本门课程中我会给大家详细讲解鼎鼎大名的Python编程神器Jupyter Notebook.Jupyter Notebook看似简单,实际上功能非常强大,而且有很多实用的小技巧.遗憾的是,目 ...

  2. 视频教程-图解Python编程神器Jupyter Notebook-Python

    图解Python编程神器Jupyter Notebook 曾就职于联想.HTC.阿里巴巴,担任高级软件开发工程师.Team Leader.技术主管.高级技术培训讲师.丰富的Python.Swift.K ...

  3. 【Python教程】Jupyter Notebook把一段很长的代码分成多行的解决办法

    Jupyter Notebook把一段很长的代码分成多行的解决办法 使用Jupyter Notebook时经常会遇到一段代码很长 导致代码块向右边延伸了很多 感觉 很! 不! 方! 便! 所以就想把这 ...

  4. 可视化运行Python的神器Jupyter Notebook

    文章目录 简介 Jupyter Notebook 启动notebook server notebook document 的结构 code cells markdown cells raw cells ...

  5. 学习Python的做笔记神器——Jupyter Notebook

    学习Python的做笔记神器--Jupyter Notebook 给想学好Python的同学们安利一波,Jupyter Notebook是学习Python最好的做笔记环境,没有之一哦. Jupyter ...

  6. python3.7.2下载-Python编程神器 v3.7.2 最新免费版

    Python编程神器正式版是一款非常优秀的编程软件,它极其容易上手,而且表达能力强,此外它还可以使你能够专注于解决问题而不是去搞明白语言本身.有需要的用户欢迎在巴士下载站下载! 软件功能 易学:Pyt ...

  7. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

    Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...

  8. Python编程神器-解锁会员 !

    Thor Thor是iOS 端强力专业的 HTTPS 抓包分析app & 开发调试利器,基本在手机上可以产生流量的数据都可以抓取,从而对手机上大多数app的会员或者app的内购进行调(po)试 ...

  9. Python编程,使用turtle画出漂亮的雪花--完整代码绘画实现洁白的雪绒花~~

    Python编程,使用turtle画出漂亮的雪花--完整代码实现洁白的雪绒花~~ Python中turtle库,可以方便的让你实现各种各样的功能.简单易用,有的时候能够创作出,你想像不到的漂亮图案.今 ...

最新文章

  1. 架空输电线路运行规程_架空输电线路杆塔金具的种类
  2. 【效率】推荐一款特别厉害的在线工具,程序员的百宝箱
  3. HDU 1492 The number of divisors(约数) about Humble Numbers(数论,简单约数)
  4. One order search dynamic sql statement生成位置
  5. “软件宝宝”出生前,安全系列文章(一)
  6. centos 6.8安装git_搭建一个开源项目3两种方式安装git
  7. html a标签指定区域,第四讲:使用html5中的canvas标签画出一个球在指定区域内的运动...
  8. 高德地图上线武汉千家商超信息 可预约团购、查营业时间和电话
  9. 50道编程小题目之【完全平方数】
  10. JavaScript基础(3)-JS中的面向对象、定时器、BOM、位置信息
  11. Tomcat性能监控LambdaProbe
  12. java jar包 资源_一个小坑:java如何访问依赖jar包中的资源文件
  13. java 生成pdf
  14. Django REST framework学习笔记
  15. 微型计算机nuc 6i5syk,Intel 英特尔 NUC Kit NUC6i5SYH 紧凑型准系统 开箱(附让人崩溃的系统问题)...
  16. 两种方法简单实现网站随机语录的显示
  17. 一个二维表查询的实现
  18. 【基本功】深入剖析Swift性能优化
  19. 练习-Java字符串之String类常用方法之文件名与邮箱验证
  20. springboot处理参数再转发请求_Springboot 2.0---WebFlux请求处理流程

热门文章

  1. 支付宝被曝光了一段视频,或许“刷脸支付”的时代就要来临了
  2. 17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试主从同步
  3. Scrapy框架--使用cookie
  4. HTML form 标签的 method 属性
  5. Java与C++Socket通讯注意
  6. JSP WEB开发入门基础到高手进阶教程002
  7. 提升Web应用程序性能的最佳实践
  8. 交叉熵损失(Cross Entropy Loss)计算过程
  9. 网格搜索后返回的就是最佳的模型
  10. python joblib库 并行化 缓存