原作 Parul Pandey 

郭一璞 编译 

量子位 出品 | 公众号 QbitAI

作为一个超好用的交互式笔记本,Jupyter总是深受开发者的喜爱。

不过,除了基础的写文档之外,其实Jupyter还有N多功能,简直是一个集视频、图片、PPT、多种交互于一身的万花筒。

如果不会用,你可能错过了Jupyter 99%的功能。

Medium上走向数据科学(Towards Data Science)专栏的作者Parul Pandey就总结了七大Jupyter的进阶用法,量子位编译如下~

执行shell命令

Shell是一种与计算机进行文本交互的方式。

一般来讲,当你正在使用Python编译器,需要用到命令行工具的时候,要在shell和IDLE之间进行切换。

但是,如果你用的是Jupyter,就完全不用这么麻烦了,你可以直接在命令之前放一个“!”,就能执行shell命令,完全不用切换来切换去,就能在IPython里执行任何命令行。

1In [1]: !ls
2example.jpeg list tmp
3In [2]: !pwd
4/home/Parul/Desktop/Hello World Folder'
5In [3]: !echo "Hello World"
6Hello World
7

我们甚至可以将值传递给shell,像下面这样:

1In [4]: files= !ls
2In [5]: print(files)
3['example.jpeg', 'list', 'tmp']
4In [6]: directory = !pwd
5In [7]: print(directory)
6['/Users/Parul/Desktop/Hello World Folder']
7In [8]: type(directory)
8IPython.utils.text.SList

注意,返回结果的数据类型不是列表。

给Jupyter换主题

使用Jupyter主题,不仅能让你的Jupyter界面更好看、更舒服,还能让屏幕上的代码看起来更显眼。

比如Chesterish主题:

solarizedl主题:

来看一下具体的操作方法:

第一步,安装:

1pip install jupyterthemes

第二步,加载可用主题列表:

1jt -l

第三步,选择你想要的主题:

1# selecting a particular theme
2jt -t <name of the theme>
3# reverting to original Theme
4jt -r

现在可用的主题有:

chesterish
grade3
gruvboxd
gruvboxl monokai
oceans16
onedork
solarizedd
solarizedl

把名字填进去就好啦。

不过,每次换主题的时候都要重新加载Jupyter,才能看到主题变化。

另外我们上面讲的在命令之前加“!”也一样可用。

笔记本扩展

笔记本扩展(nbextensions)是一种JavaScript模块,可以加载到笔记本前端页面上,可以大大提升用户体验。

比如下面这些扩展工具,简直能让效率提升10000倍。

Hinterland

Hinterland功能可以让你每敲完一个键,就出现下拉菜单,可以直接选中你需要的词汇。

Snippets

Snippets在工具栏里加了一个下拉菜单,可以非常方便的直接插入代码段,完全不用手动敲。

拆分单元格

拆分笔记本中的单元格,改成相邻的模式,看起来就像分了两栏。

目录

这个功能可以自动找到所有的标题,生成目录。

并且这个目录还是移动的呦,你可以放在侧边栏,也可以拖动到任何你喜欢的地方悬浮起来。

折叠一个标题下的全部内容

如果你的代码太长,觉得滚动过去太麻烦,可以直接折叠掉。

Autopep8

一键美化代码,强迫症的福音。

安装方法

最后看一下怎么装,需要用到conda:

1conda install -c conda-forge jupyter_nbextensions_configurator

或者用pip:

1pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
2#incase you get permission errors on MacOS,
3pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user

然后把Jupyter打开,你就可以看到NBextensions这个选项卡了。

找不到的话就去菜单的Edit里面找。

搞定。

Jupyter小工具

还有一些Jupyter小工具,比如滑块、文本框之类的部分,可以做一些方便的交互。

滑块

1def f(x):
2 return x
3# Generate a slider
4interact(f, x=10,);

布尔值生成复选框

1# Booleans generate check-boxes
2interact(f, x=True);

字符串生成文本区域

1# Strings generate text areas
2interact(f, x='Hi there!');

播放器

1play = widgets.Play(
2 # interval=10,
3 value=50,
4 min=0,
5 max=100,
6 step=1,
7 description="Press play",
8 disabled=False
9)
10slider = widgets.IntSlider()
11widgets.jslink((play, 'value'), (slider, 'value'))
12widgets.HBox([play, slider])

日历

1widgets.DatePicker(
2 description='Pick a Date',
3 disabled=False
4)

不过这个部件只能咋Chrome和Edge里用,Firefox和Safari不支持。

调色盘

1widgets.ColorPicker(
2 concise=False,
3 description='Pick a color',
4 value='blue',
5 disabled=False
6)

标签

1tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']
2children = [widgets.Text(description=name) for name in tab_contents]
3tab = widgets.Tab()
4tab.children = children
5for i in range(len(children)):
6 tab.set_title(i, str(i))
7tab

其他的小部件,可以在文末的传送门跳转到GitHub寻找。

安装方法

1# pip
2pip install ipywidgets
3jupyter nbextension enable --py widgetsnbextension
4# Conda
5conda install -c conda-forge ipywidgets
6#Installing ipywidgets with conda automatically enables the extension

使用“interact”功能自动创建UI控件,这是使用IPython最方便的方法。

1# Start with some imports!
2from ipywidgets import interact
3import ipywidgets as widgets

Qgrid

Qgrid也是一个Jupyter的小部件,不过它主要用于数据帧,装上之后,就可以像操作Excel里的筛选功能一样,方便的处理数据。

安装方法

用pip安装:

1pip install qgrid
2jupyter nbextension enable --py --sys-prefix qgrid
3# only required if you have not enabled the ipywidgets nbextension yet
4jupyter nbextension enable --py --sys-prefix widgetsnbextension

用conda安装:

1# only required if you have not added conda-forge to your channels yet
2conda config --add channels conda-forge
3conda install qgrid

放PPT

人在江湖飘,难免遇到要做PPT的时候。

但是,如果你的内容都已经放在Jupyter里了,再重新导入PPT,太麻烦了,我们自动转换吧。

一种方法是用Jupyter内置的PPT选项,依次点击菜单栏里的View → Cell Toolbar → Slideshow,之后每个单元格上面都会有一个灰色的横条,选Sub-Slide

然后输入以下代码:

1jupyter nbconvert *.ipynb --to slides --post serve
2# insert your notebook name instead of *.ipynb

好了,现在就变成PPT样式的了,显示在端口8000,你也可以查看源代码找到PPT文件。

你也可以提前换好主题,比如onedork主题,然后再转换成PPT的的时候就是同一个主题风格的PPT了。

不过,用PyTorch默认方法生成的PPT代码不能编辑,这个时候就要用到RISE插件了。

RISE用到reveal.js来运行PPT,可以不退出PPT,直接运行代码。

先来安装RISE,推荐用conda:

1conda install -c damianavila82 rise

其实不太推荐pip:

1pip install RISE

然后调用JS和CSS:

1jupyter-nbextension install rise --py --sys-prefix
2#enable the nbextension:
3jupyter-nbextension enable rise --py --sys-prefix

安装好啦,现在重新打开你的Jupyter Notebook,发现一个新的扩展,名叫“Enter/Exit RISE Slideshow”。

戳一下,一个可以边演示边改的PPT就好了。

嵌入链接和pdf

扔链接再跳转实在是太麻烦了,不如直接把素材放进Jupyter里面。

嵌入链接

1#Note that http urls will not be displayed. Only https are allowed inside the Iframe
2from IPython.display import IFrame
3IFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)

操作方式如下,当然你需要把链接换成你要放的链接:

嵌入pdf

1from IPython.display import IFrame
2IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)

同样,把pdf链接换成你需要用的pdf。

传送门

原文:Bringing the best out of Jupyter Notebooks for Data Science
Parul Pandey, Towards Data Science
https://towardsdatascience.com/bringing-the-best-out-of-jupyter-notebooks-for-data-science-f0871519ca29

Jupyter主题
https://github.com/dunovank/jupyter-themes

IPython小部件
https://github.com/jupyter-widgets/ipywidgets

年度评选报名

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「好看」吧 !

你真的会用Jupyter吗?这里有7个进阶功能助你效率翻倍相关推荐

  1. Linux系统学习方法——写给小白 每个人都有心中向往的一些事情,而我,刚进实验室,看到师兄师姐在电脑前面噼里啪啦的敲代码,真的好羡慕,看着他们实现一个又一个的功能满心欢喜,我也很想尝试。后来了解到师

    Linux系统学习方法--写给小白 每个人都有心中向往的一些事情,而我,刚进实验室,看到师兄师姐在电脑前面噼里啪啦的敲代码,真的好羡慕,看着他们实现一个又一个的功能满心欢喜,我也很想尝试.后来了解到师 ...

  2. 扩展坞可以把手机投到显示器吗_你真的会用手机吗?这款ORICO多功能扩展坞可以让手机变的更强大...

    原标题:你真的会用手机吗?这款ORICO多功能扩展坞可以让手机变的更强大 现如今科技越来越发达,手机也早已变的不仅仅是通讯工具那么简单,可以说我们一天生活.工作.学习中的许多事物都已经离不开手机.正因 ...

  3. 快速搞定Jupyter Notebook添加代码自动补全功能

    本次要介绍的两个功能是: (1)针对 jupyter notebook 中的 Markdown 文件自动生成目录 (2)自动补全代码 上述两个功能,都是有 python的一个 jupyter 扩展插件 ...

  4. Jupyter Notebook 添加代码自动补全功能

    自己记录以便后期参考与查询: 转载参考:https://www.jianshu.com/p/0ab80f63af8a 安装 如果之前安装过显示目录功能的话,这一步骤可以跳过. pip install ...

  5. python -- Jupyter Notebook 扩展插件nbextensions几个功能的介绍

    这里面介绍jupyter拓展插件nbextensions里的几个功能的介绍 nbextensions插件的安装见我之前的文章:链接 安装完重启jupyter,在主界面选择 上图中就是可以点选添加的功能 ...

  6. html表格筛选排序规则,excel表的排序功能你真的会吗?带你重新认识真正的排序功能...

    Excel的排序功能是很有用处的,但是很多朋友不会用.这里就举例一个例子介绍一下这个功能的使用方法.如一张期末成绩分析表,它是随机排列的,我们想把这些学生按英语成绩大小排列,应该怎么做呢? 1.使用E ...

  7. Jupyter Notebook代码提示及补齐功能

    https://blog.csdn.net/cjw12581/article/details/104835296

  8. 2019年1-5月文章汇总 | Python数据之道

    点击上方"Python数据之道",选择"星标公众号" 精品文章,第一时间送达 本文主要是对微信公众号 "Python数据之道" 2019年发 ...

  9. 程序员到了35岁真的会失业吗?

    前言 程序员到了35岁真的会失业吗? 无论谁是领导,无论公司怎么调整,你是不是需要能出活的人?需要能够搞定事情的人?年轻人能加班?如果只靠加班.拼体力就能搞定,很多公司会让你加班加的怀疑人生. (文末 ...

最新文章

  1. 解决Sqlite UTF-8中文数据格式在DOS窗口下中文乱码
  2. BigDecimal的四舍五入的RoundingMode 选择
  3. 一招教你掌握肌肉发力的感觉
  4. 解密TDE加密数据库
  5. 云原生 DevOps,模型化应用交付能力很重要
  6. CodeForces - 548D Mike and Feet(单调栈)
  7. Mybatis的缓存机制Cache
  8. Swing写qq聊天软件(想要QQ表情@我呦)
  9. linux查看端口被哪个服务占用的命令
  10. 数据挖掘十大经典算法(转载)
  11. Nginx启动/重启脚本详解
  12. UVa 11991 一道简单题
  13. 业内人士揭露餐馆秘密:滋补汤基本没营养
  14. (二)textarea中placeholder不显示
  15. Linux故障之内核反向路由检测
  16. 关于WIN10系统无法打开CHM文件
  17. 网络安全态势感知研究综述、MD5C#实现
  18. 若依前后台分离生成主子表
  19. 灰色关联分析法详解及python实践
  20. 工业网络的物理隔离与数据采集

热门文章

  1. SQLite 被曝存在漏洞,数千应用受影响
  2. 人才稀缺的区块链,程序员转型入门必看这四项技能
  3. 心电图图平板运动测试软件,心电图和平板运动可以检查出心
  4. wordpress 固定链接变成html,wordpress固定链接只有默认能用,其他链接设置网页打不开怎么办...
  5. py脚本实现用例执行html报告,pytest文档7-pytest-html生成html报告
  6. pycharm 设置为git默认编辑器_pycharm配置使用git
  7. cout不明确什么意思_年轻人不讲武德是什么梗和意思 年轻人不讲武德梗出处
  8. matlab语言主要功能,2014年秋季学期《MATLAB语言及应用》课程试题-2
  9. .unl 文件 导入 mysql,informix导出的unl格式数据怎么导入sql server 2008里呢
  10. matlab课程设计实验,请大神帮我写一个数学实验的课程设计,用MATLAB,