Python编程神器Jupyter Notebook使用的28个秘诀(附代码)
来源:大数据
本文约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
Enter从command 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-checker和code-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个秘诀(附代码)相关推荐
- python开发笔记软件_图解Python编程神器Jupyter Notebook
大家好!在本门课程中我会给大家详细讲解鼎鼎大名的Python编程神器Jupyter Notebook.Jupyter Notebook看似简单,实际上功能非常强大,而且有很多实用的小技巧.遗憾的是,目 ...
- 视频教程-图解Python编程神器Jupyter Notebook-Python
图解Python编程神器Jupyter Notebook 曾就职于联想.HTC.阿里巴巴,担任高级软件开发工程师.Team Leader.技术主管.高级技术培训讲师.丰富的Python.Swift.K ...
- 【Python教程】Jupyter Notebook把一段很长的代码分成多行的解决办法
Jupyter Notebook把一段很长的代码分成多行的解决办法 使用Jupyter Notebook时经常会遇到一段代码很长 导致代码块向右边延伸了很多 感觉 很! 不! 方! 便! 所以就想把这 ...
- 可视化运行Python的神器Jupyter Notebook
文章目录 简介 Jupyter Notebook 启动notebook server notebook document 的结构 code cells markdown cells raw cells ...
- 学习Python的做笔记神器——Jupyter Notebook
学习Python的做笔记神器--Jupyter Notebook 给想学好Python的同学们安利一波,Jupyter Notebook是学习Python最好的做笔记环境,没有之一哦. Jupyter ...
- python3.7.2下载-Python编程神器 v3.7.2 最新免费版
Python编程神器正式版是一款非常优秀的编程软件,它极其容易上手,而且表达能力强,此外它还可以使你能够专注于解决问题而不是去搞明白语言本身.有需要的用户欢迎在巴士下载站下载! 软件功能 易学:Pyt ...
- Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习
Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录 Python 基础 之 jupyter notebook 中机器学习的简单入门书写 ...
- Python编程神器-解锁会员 !
Thor Thor是iOS 端强力专业的 HTTPS 抓包分析app & 开发调试利器,基本在手机上可以产生流量的数据都可以抓取,从而对手机上大多数app的会员或者app的内购进行调(po)试 ...
- Python编程,使用turtle画出漂亮的雪花--完整代码绘画实现洁白的雪绒花~~
Python编程,使用turtle画出漂亮的雪花--完整代码实现洁白的雪绒花~~ Python中turtle库,可以方便的让你实现各种各样的功能.简单易用,有的时候能够创作出,你想像不到的漂亮图案.今 ...
最新文章
- 架空输电线路运行规程_架空输电线路杆塔金具的种类
- 【效率】推荐一款特别厉害的在线工具,程序员的百宝箱
- HDU 1492 The number of divisors(约数) about Humble Numbers(数论,简单约数)
- One order search dynamic sql statement生成位置
- “软件宝宝”出生前,安全系列文章(一)
- centos 6.8安装git_搭建一个开源项目3两种方式安装git
- html a标签指定区域,第四讲:使用html5中的canvas标签画出一个球在指定区域内的运动...
- 高德地图上线武汉千家商超信息 可预约团购、查营业时间和电话
- 50道编程小题目之【完全平方数】
- JavaScript基础(3)-JS中的面向对象、定时器、BOM、位置信息
- Tomcat性能监控LambdaProbe
- java jar包 资源_一个小坑:java如何访问依赖jar包中的资源文件
- java 生成pdf
- Django REST framework学习笔记
- 微型计算机nuc 6i5syk,Intel 英特尔 NUC Kit NUC6i5SYH 紧凑型准系统 开箱(附让人崩溃的系统问题)...
- 两种方法简单实现网站随机语录的显示
- 一个二维表查询的实现
- 【基本功】深入剖析Swift性能优化
- 练习-Java字符串之String类常用方法之文件名与邮箱验证
- springboot处理参数再转发请求_Springboot 2.0---WebFlux请求处理流程
热门文章
- 支付宝被曝光了一段视频,或许“刷脸支付”的时代就要来临了
- 17.1 MySQL主从介绍 17.2 准备工作 17.3 配置主 17.4 配置从 17.5 测试主从同步
- Scrapy框架--使用cookie
- HTML form 标签的 method 属性
- Java与C++Socket通讯注意
- JSP WEB开发入门基础到高手进阶教程002
- 提升Web应用程序性能的最佳实践
- 交叉熵损失(Cross Entropy Loss)计算过程
- 网格搜索后返回的就是最佳的模型
- python joblib库 并行化 缓存