尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Jupyter Notebook零基础入门:环境安装、核心操作与效率技巧

Jupyter Notebook零基础入门:环境安装、核心操作与效率技巧 1. 先搞清楚Jupyter Notebook到底解决了什么问题1.1 从“写代码”到“讲代码”的转变我最早接触Jupyter Notebook是在一次数据分析分享会上当时看到讲师把代码、图表、说明文字放在同一个页面上还以为是某个定制IDE。后来才知道这就是Jupyter Notebook的标准用法一个以“单元格”为单位、支持代码与富文本混排的交互式编程环境。如果你之前只用过PyCharm或者VS Code写Python脚本第一次用Notebook时最大的感受大概是“别扭”——不是先写好整个文件再运行而是一段一段执行每段代码的输出立刻显示在下方。这种模式听起来简单但它彻底改变了代码的书写和思考方式。Jupyter Notebook的核心价值不在于“能写代码”而在于“能边想边写、边写边看、边看边改”。它非常适合四类工作场景教学演示一边讲概念一边跑示例学生不需要先装完整环境探索性数据分析加载数据、清洗、画图、调整参数整个过程都留存在页面上实验记录每个步骤的结果、产出图、中间数据全都能留档方便回溯快速原型验证想验证一个函数、一段算法逻辑开个Notebook就能跑不用建工程。换句话说Notebook是“思考过程的草稿纸”而不只是“最终的代码交付物”。这一章我会从安装开始带你完整走一遍Jupyter Notebook的基础实操包括界面逻辑、快捷键、Magic命令、内核机制以及新手最容易踩的坑。1.2 为什么值得花时间学好它很多初学者会问既然以后做工程要用PyCharm那Notebook是不是学着玩玩就够了我的看法是Notebook的定位和你写正式项目时的工具并不冲突。恰恰相反Python社区里大量数据科学、机器学习方向的教程、开源项目、论文复现代码都以.ipynb格式分发。你不熟悉Notebook就意味着连下载别人的代码、跑通别人的实验都费劲。另外Notebook天然适合“探索-验证-沉淀”的节奏。你在里面完成的分析过程本身就是一份可读性很高的技术文档。很多团队的数据分析报告、模型选型调研、算法方案评审都是一份Notebook直接发出来别人点开就能看到每一步是怎么做的。我见过不少新手花了很多时间背Python语法却在“跑通一个带图表的数据分析流程”上被卡住卡点往往不是代码本身而是对工具不熟悉。Jupyter Notebook就是这个帮你把“学过的语法”串联成“完整流程”的关键工具。2. 环境安装用Anaconda最省心的落地方案2.1 三个选择Anaconda、Miniconda、纯pip安装安装Jupyter Notebook市面上主要有三条路我先把差异讲清楚你再决定选哪条。第一种Anaconda。这是一个Python发行版自带了Python解释器、conda包管理器、Jupyter Notebook、JupyterLab、Spyder以及pandas、numpy、matplotlib等200多个常用科学计算包。优点是省心装完基本什么都齐了缺点是体积大安装包接近1GB装完占用空间更可观。第二种Miniconda。它只包含conda和Python体积小很多装完后再按需通过conda install jupyter notebook来安装。适合那种不想被“全家桶”绑架、但对conda管理环境的机制很认可的人。第三种纯pip安装。前提是你电脑里已经有Python环境然后执行pip install jupyter或pip install notebook也能装好Jupyter Notebook。这套方案最轻量但包依赖冲突的风险比较大尤其是Mac和Windows系统上系统自带的Python版本往往比较老容易在装某个科学计算库时触发编译报错。我在实战中给出的建议是新手直接装Anaconda或者对体积敏感就选Miniconda不要在还没理解Python环境管理之前就用pip走天下。等你对virtualenv、conda、pip的关系都清楚了再慢慢换成更灵活的方式也不迟。2.2 Anaconda安装步骤与细节下面以Anaconda为例演示Windows系统和macOS系统下的完整安装过程。第一步去Anaconda官网下载对应系统的图形化安装包。这里有个细节官网默认展示的可能是最新版本一般对应Python 3的最新稳定版直接下载就行。第二步双击安装包进入安装向导。Windows用户需要注意的是安装过程中有一个“Add Anaconda3 to my PATH environment variable”的选项默认是不勾选的很多教程建议勾上。但从经验来看我个人建议如果你对命令行环境不熟就勾上会省很多事如果你已经在用别的Python开发环境那就不勾通过Anaconda Navigator或开始菜单启动避免PATH变量冲突。macOS用户安装时在“Installation Type”页面会看到“Install for me only”和“Install for all users of this computer”两个选项选“Install for me only”即可不需要管理员权限。第三步安装完成后验证是否成功。Windows在开始菜单里打开“Anaconda Prompt”macOS打开“Terminal”输入下面的命令conda --version出现类似conda 24.1.2的输出说明conda已就绪。接着执行jupyter notebook --version如果能正常显示版本号比如7.0.8说明Jupyter Notebook已经装好了。2.3 三个典型安装坑安装部分我踩过几次坑比较有代表性的是下面三个第一下载速度慢。Anaconda官网在国外国内网络环境下下载安装包经常只有几十KB/s。解决办法是找清华大学开源软件镜像站或阿里云镜像站的Anaconda安装包下载页选择对应系统的版本速度会快很多。第二conda创建环境或安装包时超时。默认conda使用的是官方源可以替换成国内镜像源。执行下面的命令把conda的channel配置指向清华源conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes替换后安装包速度会有质的提升。第三Anaconda装完后终端里python还是系统自带版本。这通常是因为系统PATH里Python的优先级更高或前面提到的“Add to PATH”选项没有勾选。解决方法是在命令行里手动激活conda基础环境conda activate base激活后命令行提示符前面会出现(base)标记这时再执行python调用的就是Anaconda自带的解释器了。2.4 四种启动方式按场景挑选Jupyter Notebook启动方式很多说说我最常用的四种。第一种最直接的方式在终端或Anaconda Prompt里进入你想工作的目录然后执行jupyter notebook执行后终端会输出一段日志并自动打开默认浏览器进入http://localhost:8888。这个“先cd到目标目录再启动”的习惯非常重要因为Notebook的文件浏览器默认显示的就是启动目录下的文件。我见过不少人不管在哪个目录都直接双击图标启动结果每次都要在网页里一层层点进去找文件效率非常低。第二种在Anaconda Navigator里启动。Navigator是Anaconda自带的图形化管理界面点击“Launch”按钮就能启动Notebook适合不习惯命令行的用户。第三种使用JupyterLab。启动命令是jupyter labJupyterLab会在同一个端口上运行但界面更接近IDE支持多标签页、拖拽分屏。后面的章节会专门讲两者的区别。第四种后台启动并指定端口。如果8888端口被占用或者想在远程服务器上启动可以执行jupyter notebook --port9999 --no-browser--no-browser的意思是启动后不自动打开浏览器适合在服务器上运行时用。本地访问时手动打开http://localhost:9999即可。3. Jupyter Notebook与JupyterLab到底选哪个更合适3.1 两者的血缘关系很多刚接触的人会把Jupyter Notebook和JupyterLab当成两个完全不同的软件其实它们是同一个Jupyter生态的不同阶段产物。Jupyter Notebook是Jupyter项目的经典形态从2011年前后的IPython Notebook演化而来核心就是一个支持代码、文本、公式、图表的网页编辑器。JupyterLab是Jupyter团队后来推出的“下一代界面”目的不是替代Notebook文件格式而是提供一个更像现代IDE的交互平台Notebook能做的事它都能做同时还能在同一个页面里打开终端、编辑器、文件管理器、数据查看器。不过网上关于“JupyterLab是不是要取代Notebook”的讨论一直没停过。实际情况是Jupyter生态里两位都活得好好的。Notebook因为上手门槛低、界面简洁依然是很多课程和教学场景的默认选择JupyterLab则被越来越多的人用作日常开发环境。3.2 核心差异对比为了让你更直观地理解差异我整理了一张对比表对比维度Jupyter NotebookJupyterLab界面布局单页单文档顶部有菜单栏和工具栏多标签页、可拖拽分屏类似IDE多文档操作不方便打开多个Notebook会在多个标签页跳转支持在一个页面里并排查看多个Notebook终端支持需要用命令方式或另开页面直接新建终端面板与Notebook同窗口文件管理只有简单的文件列表页面内置文件浏览器可拖拽上传、右键操作Markdown预览需要在单元格里运行切换支持侧边实时预览插件生态主要靠nbextensions提供更现代的扩展机制JupyterLab extensions适合人群刚入门的新手、教学场景有编程基础、需要多任务并发的人直观来说Notebook适合“一次只处理一件事”JupyterLab适合“同时处理多件事”。我之前带新人第一周都建议用Notebook因为界面简单能更快理解“单元格-运行-输出”这套逻辑第二周开始就会建议切到JupyterLab因为实际做项目时你往往需要一边看数据文件、一边写代码、一边开个终端跑命令JupyterLab的标签页和分屏功能特别吃香。3.3 我的选型建议如果你在纠结我给三条比较具体的建议如果你是零基础从Jupyter Notebook开始没错。它的界面和信息结构更直观不会一开始就面对一堆面板和快捷键。如果你已经会基础Python语法想提升Notebook使用体验直接迁移到JupyterLab。因为Notebook文件和操作逻辑完全通用学习成本极低。如果你只是偶尔跑个数据分析、并不想研究工具本身那就继续用Notebook别折腾。还有一个容易被忽略的点如果你在远程服务器上跑代码JupyterLab的体验会远好于Notebook。因为JupyterLab自带的终端面板可以让你直接在网页里操作服务器不用在本地和服务器之前来回切换SSH窗口。这个优势在做深度学习训练的时候特别明显。3.4 两者共用的配置与文件机制我想强调一个经常被误解的东西Notebook和JupyterLab共用同一套配置文件和同一个内核机制不是说你在Notebook里保存的文件到了JupyterLab里就打不开了。无论你使用哪个界面代码文件都是.ipynb格式本质是JSON结构包含元数据、单元格内容、输出结果。Notebook和JupyterLab只是同一套后端的不同前端你启动哪一个取决于你执行的命令是jupyter notebook还是jupyter lab。配置文件都写在~/.jupyter/目录下比如jupyter_notebook_config.py里面的设置对两者同时生效。这意味着你可以放心地在两者之间切换不会丢失任何数据学习成本也被大大降低了。4. 基础实操单元格、快捷键、运行机制4.1 理解单元格的两种类型Jupyter Notebook的整个页面由一个一个小方格组成这些小方格叫单元格。每个单元格的类型决定了它里面能装什么内容以及运行时会发生什么。最常见的两种类型是代码单元格和Markdown单元格。代码单元格就是你输入Python代码的地方写完按ShiftEnter运行代码的输出会直接显示在单元格下方。在代码单元格里你可以写多行代码、定义函数、 import库、执行数据分析没有任何特别的限制。Markdown单元格是写说明文字的地方支持标准的Markdown语法也可以嵌套HTML和LaTeX公式。写完后运行它单元格内的原始Markdown文本会被渲染成带有格式的富文本比如标题、加粗、列表、数学公式等。有一点需要注意Markdown单元格里写的文字不会在运行时产生代码执行结果它只是“排版”一下显示给你看。这跟你用Markdown编辑器写博客是一个道理。4.2 命令模式与编辑模式Notebook的心智模型新手用Notebook的时候最不习惯的地方是它的模式切换。整个单元格区域有两种模式编辑模式光标进入某个单元格可以输入代码或文字此时单元格边框是绿色命令模式没有光标聚焦在单元格内部此时单元格边框是蓝色按下快捷键可以操作整个单元格。这两种模式之间的切换也很简单在编辑模式下按Esc离开并进入命令模式在命令模式下按Enter或双击单元格进入编辑模式。这个设计是理解所有快捷键的钥匙。绝大多数快捷键都是“命令模式”下按的例如按A在当前单元格上方插入新单元格按B在下方插入按D按两次删除选中单元格按M把单元格变成Markdown类型按Y变成代码类型。如果你发现快捷键没生效十有八九是当前正处于编辑模式先按Esc退出来再按。我刚开始用Notebook那会儿经常犯一个低级错误在编辑模式里按B结果只是代码里多了一个字母b然后对着屏幕疑惑为什么没插入单元格。后来我才彻底理解“先Esc、再按快捷键”这套规则。4.3 高频快捷键速查与记忆技巧我整理了一份新手最应该尽快掌握的快捷键清单每一项都配了简单说明建议刚开始用的时候贴在屏幕旁边快捷键作用记忆技巧ShiftEnter运行当前单元格并跳转到下一个最常用的操作没有之一Esc切换到命令模式像退出编辑状态Enter切换到编辑模式进入单元格内容A在上方插入单元格Above上方B在下方插入单元格Below下方D D连续按两次D删除单元格DeleteM把单元格转为MarkdownMarkdownY把单元格转为代码代码黄色不必硬记ShiftTab查看函数文档或参数提示Tab键增强版CtrlEnter运行当前单元格不跳转适合想留在原位看结果AltEnter运行当前单元格并在下方新建适合写逐段演示的笔记CtrlS保存Notebook随时保存别等自动保存CtrlZ撤销单元格或代码操作后悔药快捷键看起来多但真正高频的其实就那几个ShiftEnter、A、B、DD、M、Y。我在带人入门时要求他们至少把前面这六个练到不用过脑子就能按出来。等这些形成肌肉记忆了写Notebook的效率会明显提升。4.4 代码执行顺序与变量共享的陷阱这里有一个新手特别容易掉进去的坑Notebook代码的运行顺序不等于单元格的书写顺序。Notebook是基于“交互式会话”运行的所有代码单元格共享同一个全局命名空间。你可以理解为整个Notebook是一个一直在运行的Python进程每个单元格相当于往这个进程里输入一段代码。你运行哪一个单元格哪个单元格的代码就被执行和它在页面上的位置没有必然关系。我举一个真实踩过的例子。某个数据分析流程里一个单元格先把数据df加载进来另一个单元格做清洗第三个单元格画图。有一次我切到画图的单元格按快捷键“Run All”跑了一遍结果居然报错NameError: name df is not defined。原因是我Run All之前手滑把加载数据的单元格删了但画图的单元格还在副本里留着。这种问题的排查思路非常明确先点菜单栏的“Kernel然后选Restart Kernel and Run All Cells让Notebook按从上往下的顺序重新执行一遍。如果还是报错那就说明“逻辑顺序有问题”而不是“中间某一步漏跑了”。处理代码时我会强烈建议你养成定期“Restart Run All”的习惯确保整个Notebook从空白状态能够完整跑通而不是只依赖已有的变量内存。5. 提升效率的隐藏技能Magic命令与文件交互5.1 Magic命令到底是什么“Magic命令”是Jupyter Notebook里一种以%或%%开头、用来控制Notebook运行行为的指令。它不是Python语言的一部分而是IPython内核提供的便捷工具。用%开头的叫行魔法命令只对当前行生效用%%开头的叫单元格魔法命令对整个单元格生效。比如你只想查看一行代码的运行时间用%time想查看整个单元格的运行时间就用%%time。新手可能觉得Magic命令是个“高级话题”但其实它恰恰是提升Notebook使用效率的最直接手段。下面我挑几个最常用的讲透。5.2 最常用的Magic命令速查与演示第一个%matplotlib inline。在Notebook里画图时如果不执行这行命令plt.show()出来的图可能会在一个独立的窗口里弹出有时候还会不显示。执行%matplotlib inline之后所有matplotlib绘制的图表都会直接嵌入到Notebook单元格的下方方便查看和保存。这段命令在Notebook里需要单独占一个单元格并且要在import matplotlib之前运行。第二个%timeit。它用来精确测量一行代码的执行时间会运行多次取平均值避免单次运行带来的随机误差。比如%timeit sum(range(1000))输出类似20.3 µs ± 1.2 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)。注意它的单位是微秒不是毫秒。初学者看到这种输出往往一脸懵其实你只需要关注第一个数字和单位它代表平均耗时。第三个%%time。它是单元格魔法命令放在单元格的第一行可以查看这个单元格整体代码的执行时间。它只执行一次适合用来评估完整的数据处理步骤。%%time data [i**2 for i in range(1000000)] print(len(data))第四个%run。在Notebook里执行外部Python脚本效果相当于把脚本里的代码放到当前单元格中运行。这个命令在做项目时特别有用比如你有一个preprocess.py文件里面定义了数据清洗函数可以直接在Notebook里%run preprocess.py然后Notebook会话里就可以直接使用preprocess.py里的函数和变量。第五个%whos。一条命令列出当前Notebook会话中已经定义的所有变量包括变量类型、大小和数值摘要。调试的时候非常有价值尤其当你不确定某个变量是否因为执行顺序问题丢失时。除了上面这五个还有几个我很常用的比如%ls查看目录文件、%pwd查看当前路径、%reset重置所有变量、%history查看历史输入。它们的共同点都是用一条命令替代了重复的鼠标操作。5.3 文件读写与目录切换在Notebook里操作文件有两种思路一种是在代码单元格里用Python原生方式写文件另一种是使用Magic命令和文件浏览器。读文件最常见的做法是在代码单元格里with open(data.csv, r, encodingutf-8) as f: lines f.readlines() print(len(lines))但有时候你只是想知道当前目录下有哪些数据文件用上面这种代码就有点杀鸡用牛刀的感觉。更快的办法是执行import os os.listdir()或者直接用Magic命令%ls运行Notebook时当前工作目录默认是启动Notebook时所在的目录而不是Notebook文件本身所在的目录。这个细节也会坑到人你把Notebook文件移动到新目录双击打开但代码里相对路径data.csv指的可能是启动目录下的data.csv如果该目录没有这个文件就会报FileNotFoundError。遇到这种问题可以在Notebook里执行%pwd查看当前目录再用%cd切换到期望的目录。不过这只是临时方案更稳妥的做法是用os.path.abspath(__file__)或pathlib.Path来动态获取当前Notebook文件的位置。只是注意Notebook里__file__这个变量并非始终可用如果报错可以用os.getcwd()来辅助定位。5.4 扩展插件让Notebook更好用基础Notebook的功能其实比较克制真正让它强大的还有插件生态。最经典的是nbextensions它提供了一系列增强工具比如Table of Contents自动在顶部生成目录长Notebook导航方便得多Variable Inspector实时显示当前所有变量的值、类型和大小像IDE里的调试器Code prettify一键格式化代码Autopep8把代码改成符合PEP8规范的风格。安装nbextensions的方式随着Notebook版本不同有所变化我用的是比较通用的方案pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user安装完成后重新启动Notebook页面上方会出现一个“Nbextensions”标签页勾选需要的插件即可。不过我提醒一句插件不要装太多否则页面会变卡。我自己只常开Table of Contents和Variable Inspector其他的用到时再开。6. 常见问题与排查技巧安装、启动、内核、显示6.1 常见错误速查表Jupyter Notebook的报错千奇百怪但高频场景也就那么十几种。我整理了一个排查清单你遇到问题可以直接对照着翻症状可能原因解决方法jupyter不是内部或外部命令没有安装或PATH未配置检查Anaconda安装路径用Anaconda Prompt启动启动后浏览器一直转圈防火墙拦截本地端口检查8888端口是否被占用换用--port指定其他端口Kernel Error内核挂了或版本不匹配重启kernel或执行python -m ipykernel install --user重新安装内核No module named pandas当前环境中未安装该包在Notebook所在环境执行conda install pandas打开.ipynb显示Too large文件过大或输出过多清理输出后重新保存或把大数据输出转为文件Notebook保存失败磁盘空间不足或文件被移动检查磁盘确认文件路径是否仍有效Markdown不渲染忘记运行Markdown单元格单击该单元格按ShiftEnter运行图表不显示缺少%matplotlib inline在绘图前执行%matplotlib inline代码缩进报错复制代码时缩进被替换成空格或制表符用编辑器的“显示空格/制表符”功能排查远程连接失败服务器防火墙或配置问题检查端口开放情况使用--ip0.0.0.0启动6.2 内核连接失败的排查流程“Kernel Error”或者“connecting to kernel”卡住是做Notebook开发时最让人头疼的问题之一。它本质上不是Notebook前端出错而是Python内核无法跟浏览器端建立通信。我的排查流程一般是这四步第一步在Notebook菜单栏选择“Kernel - Restart Kernel”看是否能恢复。这个操作只重置内核不会删除你写好的代码绝大多数临时性卡顿都能解决。第二步如果重启没用就直接在终端里把进程杀掉重来。先CtrlC停掉当前启动的jupyter notebook进程再执行一次jupyter notebook重新打开页面。第三步确认当前环境的内核路径是否正确。在Notebook里执行import sys print(sys.executable)输出的路径应该指向你期望的Python解释器。如果显示的是系统自带的Python路径说明Notebook被错误绑定到了别的环境可以执行python -m ipykernel install --user --name myenv --display-name myenv把当前conda环境注册成Notebook的一个可选内核。第四步查看终端日志。启动Notebook的终端窗口会输出完整的错误日志很多报错的具体原因浏览器里看不到但终端里写得明明白白。比如缺依赖、端口占用、权限不够在日志里都有线索。不要只知道刷新浏览器学会看终端日志是排查故障的基本功。6.3 给初学者的几个实用建议最后分享几个我实际使用中养成的习惯不算技巧但能少踩很多坑第一按CtrlS的频次要高。虽然Notebook默认有自动保存但没有谁规定自动保存的时间间隔适合所有场景。在跑耗时长的计算前我会手动保存一次免得计算结果还没落盘、Notebook先崩了。第二定期用“Restart Run All”验证整个Notebook。这个习惯能帮你发现自己代码中隐藏的“顺序依赖”问题比如某些变量是运行过前面单元格才存在但文件一旦从头开始运行就报错。作为一份能交付的报告或教程必须保证从头到尾能一键跑通。第三输出内容不要无限制堆积。如果某个单元格打印了大量日志动辄几MBNotebook文件会变得越来越大打开越来越慢。需要大量输出时可以只输出摘要信息比如每隔100行打印一次进度完整日志写到文件里。第四给Notebook文件起有意义的文件名并考虑加版本号。比如02-数据清洗-v3.ipynb比未命名1.ipynb强烈推荐。不是小题大做等你隔三周再回来找之前的分析流程就会感谢当年这个命名习惯。第五不要把密码、API密钥直接写在Notebook里。Notebook里的代码和执行结果会原样保存到.ipynb文件里一旦你把它分享出去、传到代码托管平台等于把密钥公开了。需要用到密钥时建议用os.environ从环境变量读取。这也是一个职业习惯问题越早养成越好。7. 从第一章迈向更多可能写到这里Jupyter Notebook的基础操作基本覆盖完了安装、启动、界面逻辑、快捷键、Magic命令、内核概念、常见问题排查每一块都是在实际使用中反复碰到的东西。以我自己的体验来说用Notebook最奇妙的时刻不是第一次成功运行出图表而是某天突然意识到这个工具不仅改变了你的写码方式还改变了你组织思路的方式。以前我写分析代码总是先想着“功能再复杂一点”现在则会先规划“这一段是说明文字、这一段是数据读取、这一段是可视化”代码结构和叙事结构天然合二为一。如果你刚接触Jupyter Notebook别急着把所有快捷键都背下来。先保证能启动、能建单元格、能跑代码、能写Markdown然后在这个基础上慢慢探索自然就会形成自己顺手的一套用法。这一章打底子下一章就可以拿真实数据练手了。
返回列表