编者按:对于机器学习和数据科学的入门者来说,“有什么好用的IDE/环境/工具?”是他们提出的最常见的问题之一。这确实也是个不怎么好回答的问题,因为它没有具体选项——从面向特定语言的IDE(如R Studio、PyCharm)到Sublime Text、Atom等编辑器——它们都很优秀,所以如果你有选择恐惧症,你最好读读论智的这篇文章,从Jupyter Notebook开始学起。
如果每个数据科学家都应该使用或必须使用一种工具,毫无疑问,它就是Jupyter Notebook(曾用名iPython Notebook)。Jupyter Notebook是一个交互式笔记本,它功能强大,支持40多种编程语言,可共享,并提供在同一环境中构建可视化应用的服务。
数据科学家可以在上面创建和共享自己的文档,从实现代码到全面报告,Jupyter Notebook大大简化了开发者的工作流程,帮助他们实现更高的生产力和更简单的多人协作。也正是因为如此,它一直以来都是数据科学家们最喜欢的工具之一。
本文将全面介绍笔记本的安装、操作方法,并深入探讨它的特性和优势。当你读完全文后,我们希望你能找到用Jupyter Notebook帮助自己实现机器学习项目的灵感,也能真正感受到,为什么Jupyter Notebook会比其他工具更受欢迎!
1. 什么是Jupyter Notebook?
2. 如何安装Jupyter Notebook?
3. 入门
4. Jupyter Notebook的魔术命令
5. 不仅限于Python
6. Jupyter Notebook的交互式控制面板
7. 快捷键
8. 有用的扩展
9. 保存和共享你的笔记本
10. JupyterLab
11. 实践和技巧
Jupyter Notebook是一个开源的Web应用程序,旨在方便开发者创建和共享代码文档。
它提供了一个环境,用户可以在里面写代码、运行代码、查看结果,并在其中可视化数据。鉴于这些优点,Jupyter Notebook成了数据科学家眼里的一款人见人爱的工具,它能帮助他们便捷地执行各种端到端任务,如数据清洗、统计建模、构建/训练机器学习模型等。
而对于初学者,Jupyter Notebook也独具魅力。它的一个特色是允许把代码写入独立的cell中,然后单独执行。这样做意味着用户可以在测试项目时单独测试特定代码块,无需从头开始执行代码。虽然其他的IDE环境(如RStudio)也提供了这种功能,但就个人使用情况来看,Jupyter Notebook的单元结构是设计的最好的。
这个笔记本的优势还体现在灵活性和交互性上。Jupyter Notebook支持的编程语言数量高达40余种,除了最基础的Python,它还允许用户在上面运行R语言和SQL等语言。由于它比IDE平台更具交互性,用户也更乐于在各种教程中用它展示代码。
Jupyter Notebook原来也叫iPython Notebook,顾名思义,它和Python关系紧密。如果要在PC上安装笔记本,首先你要确保自己已经安装了Python(2.7/3.3或更高),这是必备条件。
Anaconda
官方在文档中强烈建议新用户用Anaconda打包安装Python和Anaconda——所谓懒人方法,小白必备。其实除了提到的两个工具,Anaconda还包含数据科学和机器学习中经常需要用到的各种软件包,只需下载、解压、安装,所有工具就都一步到位了。
下载地址:https://jupyter.readthedocs.io/en/latest/install.html
pip
如果你很欣赏自己,或者因为某些因素就是不想用Anaconda,你也可以用pip。当然首先,你得确保自己的机器上有pip的最新版本。
#Linux和OSX
pip install -U pip setuptools
#Windows
python -m pip install -U pip setuptools
然后,安装Jupyter Notebook:
#Python2用户看这里
pip install jupyter
#Python3用户不要跑
pip3 install jupyter
如果还是有疑问,请看官方文档(英)、官方文档翻译(中)。
安装完成后,如果要运行Jupyter Notebook,你只需在控制台输入以下命令:
jupyter notebook
你会看到笔记本打开了你的默认浏览器,网址为http:// localhost:8888/tree。
一般情况下,当你输入命令行后,控制台会出现一行“The Jupyter Notebook is running at……”,如果浏览器因为某些原因无法打开,你就需要复制这个URL,手动打开相应网址。
当笔记本打开后,它的顶部有Files、Running和Clusters三个选项。其中Files中列出了所有文件,Running显示了你已经打开的终端和笔记本,Clusters则是IPython parallel提供的。
如果你想新建一个笔记本,单击面板右侧的“New”,它会跳出4个选项:
Python 3
Text File
Folder
Terminal
选择Text File后,你会得到一个空白的页面。它相当于一个文本编辑器(类似于Ubuntu上的应用程序),你可以在上面输入任何字母、单词和数字,所以选择好编程语言后,你是可以在上面写脚本的。此外,它还提供查找和替换文件中的单词的功能。
选择Folder后,你其实是在编辑文件夹列表。你可以创建一个新文件夹,把所需文档放进里面,或者修改它的名称、直接把它删除。
而Terminal的工作方式和Mac、Linux计算机上的Terminal一样,都是在Web浏览器中创建终端支持。只需在终端输入Python
,一个Python脚本就写好了。
由于本文重点介绍的是笔记本,下面我们会重点展示新建“Python 3”后的结果:
导入最常见的Python库来启动笔记本,如pandas和numpy。在代码上方的菜单中,那些图标依次表示添加、编辑、剪切、向上移动cell、向下移动cell、运行代码、停止运行和撤销。
这个下拉的列表提供了四个选项:
Code:这个不言自明,就是你写代码的地方;
Markdown:非常常见的轻量级标记语言,用来为代码添加注释和结论;
Raw NBConvert:一个命令行工具,可以把你的笔记本转换成另一种格式,如HTML;
Heading:添加标题,使你的文档看起来更干净整洁,它现在已经变成Markdown里的一个语法,用两个#表示。
作为iPython的继承者,开发人员已经在Jupyter Notebook中加入预定义的魔术命令(magic function)。这是一种增加便捷性和互动性的工具,如果要查看命令列表,你可以输入(注:通常不需要“%”):
%lsmagic
当看到那一串函数列表时,也许你能从中认出几张老面孔,如%clear、%autosave、%debug和%mkdir。只要你以前写过代码,这些函数就几乎是不可避免的。
在Jupyter Notebook中,魔术命令有两种运行方式,一是Line-wise,而是Cell-wise。顾名思义,Line-wise就是当你想执行一个命令行的时候需要用到的,而Cell-wise面向的就不单单是一行了,它作用的是整个cell的代码块。
为了区分两种运行方式,如果是Line-wise,所有命令必须以%字符打头;如果是Cell-wise,则用%%。
Line-wise:
%time a = range(10)
Cell-wise:
%%timeit a = range (10)
min(a)
以上只是两个最简单的示例,你可以试着自己运行这些命令,看看其中有什么区别。
之前也提到了,Jupyter Notebook的成功离不开它的灵活性,虽然Python在数据科学和机器学习中都占局主导地位,但对于数据分析任务,其他语言也有各种各样的特色和优势,比如R语言的'ggplot2'软件包就非常好用。在这一点上,Jupyter Notebook的态度是开放的。
如果想在Jupyter Notebook中启用R,你需要先去GitHub上下载'IRKernel'(R的专用kernel),然后按以下8个步骤依次执行(附图解地址):
步骤一:用Anaconda安装Jupyter Notebook;
步骤二:完成下载后,打开Anaconda命令提示符;
步骤三:输入ipython notebook
新建ipython笔记本
步骤四:用conda update ipython-notebook
这个命令行更新笔记本;
步骤五:输入conda install -c r ipython-notebook r-irkernel
安装IRkernel;
步骤六:用R.exe
打开R;
步骤七:输入install.packages(c('rzmq','repr','IRkernel','IRdisplay'), repos = 'http://irkernel.github.io/', type = 'source')
安装必要软件包;
步骤八:输入IRkernel::installspec()
后再输入quit()
,完成操作。
如果是Julia用户,你也可以在Jupyter Notebook中“畅所欲言”。考虑到篇幅因素,有需要的读者请前往www.analyticsvidhya.com/blog/2017/10/comprehensive-tutorial-learn-data-science-julia-from-scratch/查看图文攻略。
和R语言一样,JavaScript用户也需要去Github先下载‘IJavascript’ kernel:github.com/n-riesco/ijavascript。文档里已经明确写出了安装kernel所需的步骤,但要注意的是,记得先装Node.js和npm,这是大前提!
在添加小部件前,你需要先导入小部件包:
from ipywidgets import widgets
小部件的基本类型是典型的基于输入和按钮的文本输入。你可以参考下面这幅动图,了解交互式小部件的外观:
既然Jupyter Notebook的主打优势是便捷,那它自然少不了方便操作的快捷键。事实上,当你想运行任意代码块时,只需按下Ctrl + Enter就可以了。
下面是本文挑选的一些实用快捷键,有需要的读者可以视情况逐个阅读+尝试,如果今后你会经常用到Jupyter Notebook,那不会这些组合键的你就几乎已经是条咸鱼了。
Jupyter Notebook提供了两种不同的键盘输入模式——Command和Edit。其中Command模式是将键盘和计算机命令绑定在一起,这时单元框线是灰色的(左侧蓝色粗线)。Edit模式允许你将文本(或代码)键入活动单元,这时单元框线是绿色的。
用Esc和Enter分别在Command和Edit模式之间跳转。
更多快捷键介绍(中文):blog.csdn.net/lawme/article/details/51034543
添加扩展是提高Jupyter Notebook效率的一种非常有效的方式,那么安装和使用扩展哪家强?这里我们推荐Nbextensions。
先是安装(pip):
pip install jupyter_contrib_nbextensions
安装关联的JavaScript和CSS文件:
jupyter contrib nbextension install --user
完成此操作后,你会在Jupyter Notebook主页顶部看到一个'Nbextensions'选项卡。
如果要启用一个扩展,只需点击来激活。下面是4个比较有用的扩展。
Code prettify:它可以让你的代码更美观。
Printview:生成预览,新增的按钮叫jupyter nbconvert。
Scratchpad:生成一个实验环境(副本)跑代码,不会对笔记本代码造成影响。
Table of Contents (2):抓取所有标题,并显示在浮动窗口中。
此外,小编也曾经写过一篇《Top 5:五大最实用的Jupyter Notebook扩展插件》,介绍了另外5种好用的扩展,有兴趣的读者可以一起看一看。
这是Jupyter Notebook中最重要和最棒的功能之一。有过写博客经历的读者也许知道这种痛,当你一腔热血想把自己的成果分享给别人时,可能代码格式还没转完你就放弃了。大多数笔记本都采用json格式,它不是很适合共享,也不利于在博客中发布不同的单元块。
但Jupyter Notebook不一样,点击进入“file”后,你会看到一个“Download as”:
看到这7个选项后你就很开心了,其中最常用的是.ipynb文件。你也可以用nbconvert选项手动将笔记本转换为不同的格式,如HTML和PDF。
此外,你还可以使用jupyterhub,它允许你在其服务器上托管笔记本并与多个用户共享。许多顶尖的研究项目都把这作为协作方式。
JupyterLab是今年2月推出的一个工具,从某种程度上来说,它是Jupyter Notebook的一个发展——拥有同样的组件,但允许更灵活和更强大的项目工作方式。换句话说,它的用户体验更好。
JupyterLab的特色是允许用户在一个窗口内安排笔记本、终端、文本文件和输出的工作区。你可以把窗口拖到你想要的位置,也可以通过实时预览编辑常用文件格式,如Markdown、CSV和JSON,实时查看项目进展。
虽然自己钻研很有趣,但无论是学习还是工作,大部分时候你是在一个团队中工作的。在这种情况下,你要规范自己的操作和实践,确保笔记本中的代码和注释都是正确的,方便其他人阅读、理解。以下是一些实践指标,仅供参考:
对每个程序员来说最重要的事:要好好注释!
确保你保存了代码文档。
形成一套命名体系,并在实践中落到实处,方便自己和他人理解。
在刚开始的时候导入所需的库,并在旁边注释导入目的。
确保代码行距合适,你也不想别人因为看不懂你的循环和函数疯掉,对吧?
当代码越来越多时,隐藏不重要代码,确保干净整洁。
此外,当你需要把成果演示给别人看时(是的你又要做该死的PPT了),你是可以偷懒直接在Jupyter Notebook里做演示的。
找到“View”,点开其中的“Cell Toolbar”,然后是“Slideshow”。每个代码块都在右侧显示一个名为“Slide Type”的下拉选项:
具体效果如何,请自己尝试。
写到这里,本文也就已经差不多结束了,虽然在一篇文章内塞进这么多内容可能会影响阅读体验,但我们还是真诚地希望新手能从中找到一些有用的东西。
最后,如果你看到了最后,我们再向你推荐一个Github(地址:,这是一个Jupyter/IPython笔记本的精选集合,相信你一定能从中找到不少有用的东西!
原文地址:www.analyticsvidhya.com/blog/2018/05/starters-guide-jupyter-notebook/