Jupyternotebook使用教程.docx
Jupyternotebook使用教程Chapter1概述:Jupyter是什么:JupyterNotebook(此前被称为IPythOnnotebook)是一个交互式笔记本,支持运行40多种编程语言。JupyterNotebook的本质是一个Web应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdownO用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等用户可以通过电子邮件,Dropbox,GitHub和JupyterNotebookViewer,将JupyterNotebook分享给其他人。在JUPyterNotebOOk中,代码可以实时的生成图像,视频,LaTeX和JavaScript在数据分析的道路上,你一定曾有过为新发现而激动不已的时刻,此时你急于将自己的发现告诉大家,却遇到了这样的问题:如何将我的分析过程清晰地表述出来呢?为了能与同行们有效沟通,你需要重现整个分析过程,并将说明文字、代码、图表、公式、结论都整合在一个文档中。显然传统的文本编辑工具并不能满足这一需求,而JUPyterNotebOok,不仅能在文档中执行代码,还能以网页形式分享。Jupyter的由来:也许说到JUPyter你会觉得陌生,但想必你或多或少听过鼎鼎大名的IPythOn。其实JUPyter脱胎于IPython项目,IPython顾名思义,是专注于Python的项目,但随着项目发展壮大,已经不仅仅局限于Python这一种编程语言了。Jupyter的名字就很好地释义了这一发展过程,它是JuliaPython以及R语言的组合,字形相近于木星(JUPiter),而且现在支持的语言也远超这三种了。Jupyter的优点:1、极其适合数据分析想象一下如下混乱的场景:你在终端中运行程序,可视化结果却显示在另一个窗口中,包含函数和类的脚本存在其他文档中,更可恶的是你还需另外写一份说明文档来解释程序如何执行以及结果如何。此时JUPyterNOtebOok从天而降,将所有内容收归一处,你是不是顿觉灵台清明,思路更加清晰了呢?2、支持多语言也许你习惯使用R语言来做数据分析,或者是想用学术界常用的MATLAB和Mathematica,这些都不成问题,只要安装相对应的核(kernel)即可。这里列出了JUPyter支持的所有语言,供您参考。3、分享便捷支持以网页的形式分享,GitHub中天然支持Notebook展示,也可以通过nbviewer分享你的文档。当然也支持导出成HTMLMarkdown、PDF等多种格式的文档。4、远程运行在任何地点都可以通过网络链接远程服务器来实现运算,这里给出一个远程运行的例子,可以体验一下JUPyterNotebook05、交互式展现不仅可以输出图片、视频、数学公式,甚至可以呈现一些互动的可视化内容,比如可以缩放的地图或者是可以旋转的三维模型。这就需要交互式插件(Interactivewidgets)来支持Chapter2入门使用启动界面File:浏览器打开jupyter,显示的是在jupyter_notebook_config.py中设置的c.NotebookApp.notebook_dir工作目录F的所有文件,如下图所示:jupyterLogoutFHs Running ClustersSe¼d <erm to perform actions on themUpload Nww 0心m2 LastMoNledAW»Thenotebookkslise11tyRunning:Running页签下显示的是当前正在运行的jupyter程序,包含notebook、terminals终端等,如下图所示:二jupyteruBwt|FHesRUnfW>2OustersCurrentlyrumngJupyterprocesses07ninaH.Tbefearenoterminalsrunning.Itotobooks”Therearcnonoteboolcsrunning.Cluster:CIUSter用作并行计算,现在由IPythOnParalIel提供,需要单独安装,初始安装不包含此部分内容。二jupyter3)。UIFsRunningClustersOusterstab冷nowPnMdgbyPythonParaI城STPythonparai9fornstailabondetails新建notebooklogoutUp3 r4e * 0P>tho3 一' CreMe a new n<×ebo<Mc with Python 3 TWF点击右上角的new按钮可以创建新的notebook、文件、文件夹、shell终端,如下图所示:二JupyterFiRumngQustmSiteditemstop<formJCbonsonthem口。wortTefrwkii新的notebook创建成功之后,编辑界面如下图所示:JUpyt Untitld1 Last Checkpont 4分忡V) (unsmdcha9ts)I® L<wwt每一行称为一个单元格cell,在这里编写和执行你的代码。编辑notebookCode单元编辑模式:在Code编辑模式下,可以对单个CeIl的代码进行执行,执行结果会显示在代码的正下方,运行的快捷键:Ctrl+enter0代码单元左边有In1:这样的序列标记,方便人们查看代码的执行次序。在代码单元格中可以执行多种操作,例如编写代码、给变量赋值、导入包,展示数据分析结果等。在一个单元格中执行的任何代码在所有其他单元格中均可用。二JUpyterUntitledlLMtCh”5不(UnWdchanges)芦LogoutFXEditVwInsertCa-HeiPTtUSte4PythOn3OQ+X¢)¢)MRwCCw网0CodoIMrkdownIIn:RwrNKonvert1HeadmJUpyterUntitiedLastwckpont(unmdchanges)<L090VlFE<MVitwInMrtC11Km*lHpTrUSIgPython3OB+Xr>HRuncCog-aCAeeN运行代叫Xn1:iartaysprint(ay*,ptk>*.'pcwda1:bpython3.zip*,*,optcond<libpyho<3.6,optCondnzHb.ythonXlib-dynid*l,optzcon<Ulibp7th0nX6.site-packages'.*/opt/eonda/lib/pythonX6ite-pack<1es!Uko-l.0.7-w3.6.e<g*.'optcomda2(bFhonX6',site-packAceszIPytho<>zextAsions','hoejvyaft/.Ipythoa*IIn:print,Hogrid,hlloworld可以在CeIl单元格中,像在ide里一样,利用tab进行自动补齐。二JUPyterUntitled5lastOeckpontJlifK(unsavedchanges)fSOMMfitE<MVwSSeItC«lKernelHe<pTruitod,IFyhon3OB+»«¢)¢)NRunCCod-Markdown单元编辑模式:在markdown编辑模式下对文本进行编辑,采用markdown的语法规范,可以设置文本格式、插入链接、图片甚至数学公式。可以使用shift+enter运行markdown单元来显示格式化的文本。JllpyterUntitIedILMICMCkPotflIl手的(UnSaVedChanges)芦LogoutFileEditVwknstCellKtmdHelpTrustedPython3OB*XQ)(S个HRunCMakgwnC3这是Hl这是H2这是H31 Bvd2 McHale3 Pans命令模式:除了Code单元编辑模式和markdown单元编辑模式之外,jupyter还支持命令模式。用于执行键盘输入的快捷命令。通过Esc键进入命令模式,此时单元左侧显示蓝色竖线(编辑模式下,左侧显示绿色竖线)。如果要使用快捷键,首先按Esc键进入命令模式,然后按相应的键实现对文档的操作。比如切换成代码单元(Y)或markdown单元(M),或者在本单元的下方增加一单元(B)。查看所有快捷命令可以按H。常用快捷键:执行当前CeIL并自动跳到下一个cell:ShiftEnter执行当前cell,执行后不自动调转到下一个CeILCtrl-Enter是当前的CelI进入编辑模式:Enter退出当前cell的编辑模式:Esc删除当前的cell:双D为当前的cell加入linenumber:单L将当前的cell转化为具有一级标题的maskdown:单1将当前的cell转化为具有二级标题的maskdown:单2将当前的cell转化为具有三级标题的maskdown:单3为一行或者多行添加/取消注释:Crtl/撤销对某个Ceu的删除:Z浏览器的各个Tab之间切换:CrtlPgUP和CrtlPgDn快速跳转到首个CeILCrtlHome快速跳转到最后一个CeILCrtlEndEsc+F在代码中查找、替换,忽略输出。Esc+0在cell和输出结果间切换。选择多个cell:Shift+J或Shift+Down选择下一个cell。Shift+K或Shift+Up选择上一个CeIL一旦选定cell,可以批量删除/拷贝/剪切/粘贴/运行。当你需要移动notebook的一部分时很有用。Shift+M合并CeIl导入代码:本地导入:1、在本地创建一个demo文件二jupyterLOOOtrtFsRunningQustersSelectte<nstoperformactionsonthemuploadNw*C0'workNameLastModftedCDJlWB口gnoipynbRUnrIrg4分怦箭2、%load+文件名导入,run执行后这段代码会被注释掉LoqouITustM I Python 3 OJUpyt6UntitledLartCheckpom1分IMB(uma*edchanges)FUEdHSwInswtCNKm1Help>c¢)个NRunCCode*cll-te*:*code*,*execution-cownt*:2»Bea<ht>:»*upus*:*nae,:*stdout*l*output.typ*:*streav.*txt*:'*optconda1ibpytboo3.ip'.'oXcoada,/!ibrrthon3.6*.,optcon¼zHbpytbon3.6lib-dynload','cptcctxklib/pythoaXC/iite-p】,'oure:(visortsytn,"print(tys.path)*c.】LtyP:*d*,executi«i_count*:null,edat*:,outputs*:口,source-:口网络导入:%load+文件的Url路径地址。重命名notebook修改notebook名称,参照如下步骤:L090Ut_ JUpyt UntitlGd Last Checkpoint (unsasvd ckangs)Rve<ttoCheckpoint.PnmPm«wDownloadasTrustedFtetebookQomandHaftLOQMlIJUpytU11tltdLastCheckpoint1iHIR(unssvdchanges)Kamd Htlp11VS<JPython3OX¾C)MRunCCo<sRenameNotebkEnter3newnotebooknameUntitJyCancelRCW关闭notebookJupyter中可以在两个地方关闭notebook。LogoutJUpyter Untitled Last Checkpoint n»m (autos»«d)JupyterFsRunrmgCktstorsCunentlyrunningJUPytaprocessesTemwwbItnrus1Nmebookt*WOfkAJnbtfedynb关闭notebook之前,记得保存notebook0分享notebook点击File->Downloadas,你可以选择多种格式下载你的notebook。二 WPyterI F* I EdrtNew NeubOOk (OPenUtitGd Last Checkporrt 36分仲期(*tosmd)View Insert CM Kmd Htlp令 XRUn C Code产 LogoSTfUMed IFVhon 3 OMakeaCoyR11311MSmandCMCkPOmCReVentoCheckpointP11ntPrEgWOovmtodasTrustedNotebookCloseandHaftNOUbook(ipynb)Python(py)HTML(Mml>MdrfcdCMn(md)rST(rst)LeTeX(tx)POFMeLeTeX(Pdf)Chapter3功能进阶1.aTex:1.aTeX不但能实现严格的文档排版,而且能编辑复杂的数学公式。在JUPyterNotebook的markdown单元中我们也可以使用LaTeX的语法来插入数学公式。JJUpytUntiHedLaStCheCkPOlnt:3分钟前(unsavedchanges)FileEditViewInsertCellKernelHelpE)+/t肥)HRunCMarkdownE3SSinjO'÷infty,x2dx$SSP(AnidB)=fracP(BmidA),P(八)P(B)SSSSz=fracxy$S÷Ix1dx'oP(Al 6)=P(8A).P(A)-丽Z=fracxyMatplotlib集成:如果你用Python绘制过图形,那你肯定知道matplotliboMatplotlib是一个用于创建漂亮图形的Python库,结合JUPyternotebook使用时体验更佳。要想在JUPyternotebook中使用matplotlib,需要告诉JUPyter获取matplotlib生成的所有图形,并将其嵌入notebook中,为此,需要计算:%matplotlibinline译注:要想执行成功,需要先PiPinstallmatplotlibo运行这个指令可能要花个几秒钟,但是在notebook中需要执行一次即可。接下来,我们来绘制一个图形,看看具体的集成效果:In1:eJnatplotUbinlineIn2:iportmatplotlib.pyplotaspitinportnumpyasnp×=np.arange2:y=x*2pit.plot(×,y)0ut2:<matplotlib.lines.Line2Datx7f5cd73a588>绘制出的图形直接添加在了notebook中,就在代码的下面。我们可以之后修改代码,重新计算,这时图形也会动态更新。Magicfunctions:MagiC命令的官方介绍“IPythonhasasystemofcommandswecall,magics,thatprovideeffectivelyaminicommandlanguagethatisorthogonaltothesyntaxofPythonandisextensiblebytheuserwithnewcommands.Magicsaremeanttobetypedinteractively,sotheyusecommand-Iineconventions,suchasusingwhitespaceforseparatingarguments,dashesforoptionsandotherconventionstypicalofacommand-Iineenvironment”%lsmagic,罗列所有的magic命令_JUpytrUntitlodLastCheckpoint11Af1K(unsavedchanges)“LoeoufFiREdtViewInsertC«flKernelHWTrustedPython3OB+K¢)C)MRUnilCComVQIn(1':%lsaa<icOut*1.:vilablHnaafict:WliasliasMcicWutocallWutocNigicutotaveookaarkScat%cd%clear%c«lor»confi<cwmt-ifo%cpSdebucMhitdirsVloctestjiode*dedienvguihisthistorySkillbcscriptsldirlesslflk11loa4load-extlodpyloffofflogonlofstartlogstatelogstoplslsatfiiclxacrougic¼mnmplolibakdirSBOrenooebookHPageQastbinpdb¼pdfQpdoc¼filpinfo%pinfo2popdpp<rintrcisioorofxlrunps>rchpsourcpuahdvdretpylbqt811gh%Quickrfr*c11SrhashxQrloLEM,pQrnmr8uamdirrn、“*x、“_nr¼storesxsysteatbMineMiaeituMlias%unload>extVbobo-lsVbosxdel>odeAvailablec11aagics:¾:M11K.SVCb>hcapturMbuffi!W)taljavascriptj1ixmrkdm¼prlprunypypythnpythcn2¼pytkon3rubycrxptAhv1Mx¼yt<*¾tinetitxtWritfilAutOMficisON,prefixISNOTneededforlinesagics.IXnt):|%run,运行代码In2:rund4o.ipynb,ho'jovyanwork,'',opt>*condr>zHb>>pybon36.zip'roptcondHbpython3.6',',optcon4<HbZpythonX6Hb-dynlod,f'optcndaHbpbon3.6/site-packages'.,optcondAlibpython3.6sit-ftckagesMako-l.O.i-pyS.6egg'.'/opt/conda1ibpthon3.6site-packagesIP7bonxtensions',Ojcckjovyan/.WTthon':%store,在notebook文件之间传递变量In7:data-,thisisthetestforstoremagicCOenIand$'%storedatadeldata*ThishasdeletedthevariableStored*data*(str)In4:%store-rdataprint(data)thisisthetestforstoremagiccommands%who:列出所有的全局变量In2:one="testone”two-"testtwo*three="testthree*%whostronethreetwo%time提示CeII内代码的单次运行时间信息In5:%timeimporttimefor_inrange(1000):time,sleep(0.01)*sleepfor0.OlsecondsCPUtimes:user49.3ms,sys:S.28ms,total:57.6msWalltime:10.2s%writefile将Cell中的内容写入到外部文件当中In8:%writefiletestdemo,pyimportsysprintsys.pathWritingtestdemo,py%pycat弹窗显示外部文件的内容In8:%writefiletestdemo,pyimportsysprintsys.pathWritingtestdemo,pyIn10:%pycattestdemo,pyimportsysprintsys.path