Jupyter notebook使用技巧与JupyterLab

Jupyter Notebook入门

人生就像一只储蓄罐,你投入的每一分努力,都会在未来的某一天,回馈于你。而我们要做的,就是每天多努力一点点,进步一点点。

1. 启动

在终端中输入jupyter notebook是最常用的启动方式,默认在本地的8888端口启动。如果本地已经有一个jupyter正在运行,再启动一个就会运行在8889端口。运行完该命令,会在系统默认的浏览器打开一个网页,网页的地址是:
http://localhost:8888/tree

image

新建
点击右侧的New,选择Python3会在新的页面中建立一个未命名的notebook文件,选择Text File会新的页面中建立一个未命名的txt文件,选择Folder会在当前页面中建立一个未命名文件夹,选择Terminal会在新的页面中建立Terminal。
需要注意的是我们执行该启动命令的目录就是启动之后的根目录。如果你是要打开已经存在的.ipynb文件,最好切换到该文件所在目录再启动,或者启动之后将文件移动(或复制)到启动目录下。


Running选项卡下可以看到当前正在运行的terminal和notebook,使我们可以对目前的资源使用情况进行一个直观了解。

2.退出

如果要停止某个正在执行的notebook文件,可以在file选项卡下勾选该文件,点击shutdown(也可以用其他方式,见后文)。如果要关闭整个jupyter notebook,可以在终端中按下键盘上的Ctrl C即可。

Notebook使用说明

接下来我们重点说明一下新建“python3”之后的操作,这也是最常用的编写python文件的操作。

1.总体布局

image

上面图中大致说明了Notebook中每一部分的作用,对平常使用python运行程序来讲,快捷命令已经足够。快捷命令工具条从左到后的图标依次表示:保存文件,添加新cell,剪切选中的cell,复制选中的cell,粘贴选中的cell,将选中cell上移,将选中cell下移,执行选中的cell,终止kernel,重启kernel,重启kernel并重新运行所有cell。Code点击之后有四个选项,分别是:Code(写python代码),MarkDown(写MarkDown代码,通常用于注释),Raw NBConvert(一个转换工具),Heading(快捷添加MarkDown标题)。最后一个小键盘可以查看和搜索一些快捷键的操作。

2. 常用菜单操作:

  • 修改文件名:可以点击文件名称,在弹出的框中直接修改或者File—>Rename

  • 新建Notebook文件:File—>New Notebook—>python3

  • 下载文件:File—>Download as —> 选择目标格式即可下载

  • 合并cell:Edit—>Merge Cell Above或Merge Cell Below

  • 重启Kernel并清除所有输出:Kernel—>Restart & Clear Output

  • 重启Kernel并运行所有cell:Kernel—>Restart & Run All

  • 停止当前Notebook运行:Kernel—>ShutDown

这里只列出了常用的菜单操作,没有列出的并不表示不常用,而是可以用快捷键或者菜单栏下方的快捷工具代替。如果需要查看每一个菜单选项的含义和作用,推荐文章:https://blog.51cto.com/853056088/2162189,写的非常详细。

3. 命令模式和编辑模式

每一个cell有两种模式:命令模式和编辑模式。如下图所示:最左侧是蓝色的条是命令模式,是绿色的条表示编辑模式(此时cell中有光标,可以进行代码编写)。在命令模式下,按下enter或者鼠标单击代码框可以进入编辑模式。在编辑模式下,按下esc或者鼠标单击代码框左侧区域即可进入命令模式。

image

4. 常用快捷(键)操作:

代码运行:

  • ctrl + enter:运行当前cell的代码,运行完后依然保持在当前cell

  • shift + enter:运行当前cell的代码,运行完后跳转到下一个cell,如果是最后一个cell则会新增一个

  • 工具条上的Run

创建新的cell:

  • 命令模式下,按下字母a(above),会在当前cell上方增加一个cell

  • 命令模式下,按下字母b(blove),会在当前cell下方增加一个cell

  • 工具条上的➕按钮

删除当前侧cell

  • 命令模式下,按下字母x,即可删除当前cell

  • 命令模式下,连续两次按下字母d,即可删除当前cell

  • 工具条上的“剪刀”按钮

合并cell

  • 命令模式下,选中多个cell,shift + M可以进行合并

  • Edit—>Merge Cell Above/Merge Cell Down

拆分cell

  • 编辑模式下,以光标所在之处为分界点,ctrl shift -(减号),可以进cell的拆分

  • Edit—>Split Cell

保存代码

  • 命令模式下,按下字母s,就能创建一个checkpoint

  • 工具条上的保存按钮

  • File—>Save and Checkpoint

查找替换

  • 编辑模式下,ESC + F

  • Edit—>Find and Replace

折叠输出:有时输出过长的情况

  • 编辑模式下,ESC+O

  • 在cell左侧位置上双击即可折叠

  • Cell—>Current Output—>Toggle

显示代码行号

  • 命令模式下,按下字母l(L的小写,键盘k右侧的l)键,就能显示当前cell的行号

  • shift + l,显示所有cell的行号

  • View—>Toggle Line Numbers

切换代码类型

  • 命令模式下,按下m切换到MarkDown模式,再按下y切换到code模式

  • 工具条上手动切换

  • Cell—>Cell Type—>选择相应的代码类型

注释代码

  • 选中代码,command+/ (windows下是control)

    注:其他的快捷键可以点击工具栏最后的小键盘查看。

tab键的使用

  • 只输入变量或者函数的前几个字母,按下tab可以自动补全

  • 已经输入函数,连续按下shift+tab可以查询函数的具体用法,(一直可以按4次)

    image

执行shell命令

  • 英文状态下的感叹号+普通的shell命令,例如:!pwd!ls等,有些时候或许很有用。

5. 魔法函数

image

以上是一些常用的魔法函数,其他的一些魔法函数依然可以查阅上面的链接,https://blog.51cto.com/853056088/2162189吗,读者可以查阅其具体的用法。

Jupyter Notebook扩展

执行以下代码可以安装jupyter notebook扩展

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install

image

安装完之后,重新启动一下jupyter 服务,就可以看到Nbextensions选项卡。我们只需要勾选相应的插件,在每一个notebook的工具条中就会出现相应的扩展。选中每个扩展的时候,在其下方都会出现关于该扩展的说明,演示,配置等情况,通过仔细阅读我们就能得知该扩展的用法。

image

比较好用的几个扩展及其作用如下:

jupyter notebook 修改主题、字体、字号

Jupyter notebook 是个好东西,但是默认皮肤实在是看得人难受,最不能忍的是字号太小。

安装此工具:
pip install --upgrade jupyterthemes

查看可用主题:
jt -l

我自己的设置如下:

jt -t oceans16 -f fira -fs 13 -cellw 90% -ofs 11 -dfs 11 -T

1.Table of Contents

这个扩展一般用于整个文件的目录很多的时候。首先在Nbextensions选项卡中勾选该插件,然后在工具条中就可以看到该扩展按钮。如果我们在notebook中使用了MarkDown设置了我们的标题,点击该扩展,就会在左侧生成目录,点击左侧的齿轮,可以在最顶部添加一个cell专门用来显示目录。点击左侧和顶部的链接都可以快速跳转到相应的位置。还可以进行目录的折叠。注意到此时菜单栏上也多了一个“Navigate”标签,同样显示了目录的情况。

image

2.Autopep8

这是一个将代码按照PEP8进行格式化的插件,前提是需要通过pip install autopep8安装autopep8,安装完之后需要重启jupyter notebook服务才能生效。同样在Nbextention选项卡中勾选Autopep8,在工具栏中会多一个“锤子”一样的按钮,可以帮助我们排版代码,使其符合pep8标准。

image

3.Variable inspector

该插件可以帮助我们查看当前notebook中所有的变量的名称,类型,大小和值。省去了df.shape,type()等语句的执行,也代替了前文提到的魔法函数“%whos”的执行,读者可以自行尝试一下。

4.Code folding

顾名思义,该插件可以对代码进行一定的折叠,例如遇到class,def等关键字,而且主体代码又很长时,折叠代码会方便阅读,这一点也让jupyter notebook更像一个IDE。

5.Execute time

该插件可以显示每一个cell中代码的执行时间。

image

除此之外还有一些其他常见的插件扩展,例如Notify,Collapsible headings等,读者可以自行探索查看,并配置使用。

其他说明
  • 制作幻灯片并放映:参考该链接的第二部分:

    https://blog.csdn.net/qq_27825451/article/details/85050496

  • 数学公式编辑:这个其实是MarkDown功能的延伸,需要将cell的代码类型改为MarkDown,然后在一对美元符号之间写入LaTex公式,(例如$E=mc^2$),运行cell之后就可以正常显示公式了。

  • 关于jupyter lab和jupyter hub

jupyter lab是基于jupyter notebook的新版本,是包括了Notebook的下一代的有模块化的界面,可以在同一个窗口同时打开好几个notebook或文件(HTML, TXT, Markdown等等),都以标签的形式展示,于是就更像是一个IDE。除了界面上存在差异,使用方式上和notebook没有大的差别。

image
jupyter hub是一个支持多用户的 Jupyter Notebook 服务器,用于创建、管理、代理多个 Jupyter Notebook 实例。具有扩展性和可定制性。常见的场景是公司的运维人员对很多人使用的Notebook进行管理和资源分配。这里不太方便演示。
  • 关于jupyter notebook与pycharm的差别

个人认为notebook是更“轻”量级的,适合小白使用。各个cell之间具有相对独立,且变量共享的特点,某些时候特别有用。(例如在爬虫时,请求一次就获得了html源码,后面进行页面解析时就可以以此为基础进行调试,无需再次请求,在处理对请求频次有限制的网站时还是很有用的)。除此外,notebook能够保存中间结果,方便演示,适合数据分析人员或者数据科学家使用。

pycharm更适合大型工程项目的管理,每一个文件是一次执行的。如果一个项目工程中有很多个文件,这时最好使用pycharm。此外pycharm在代码编辑时,随时会有提示,而且支持代码跳转,便于对源码的查看学习。当然工具毕竟只是工具,适合自己的就是最好的,读者可以根据自己的需求和使用习惯进行选择。

JupyterLab——Jupyter Notebooks 的进化

JupyterLab 是今年二月份推出的,被认为是 Jupyter Notebooks 的进一步发展。其支持更加灵活和更加强大的项目操作方式,但具有和 Jupyter Notebooks 一样的组件。JupyterLab 环境与 Jupyter Notebooks 环境完全一样,但具有生产力更高的体验。

JupyterLab 让你能在一个窗口中排布你的笔记本、终端、文本文件和输出结果工作区!你只需拖放你需要的单元即可。你也可以编辑 Markdown、CSV 和 JSON 等常用文件格式并实时预览修改所造成的影响。

如果你想在你的机器上试用 JupyterLab,可查看安装说明:http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html。JupyterLab 的开发者的长期目标是最终替代 Jupyter Notebooks。但目前来看这还需要一些时间。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容