资讯详情

资讯详情

Jupyter Notebook 从入门到实践:交互式数据分析与 ipynb 使用指南

1. Jupyter Notebook 到底是什么先直接说结论不绕弯子Jupyter Notebook 是一个基于网页的交互式开发环境核心价值就一句话——把「代码」「运行结果」「说明文档」「可视化图表」全部揉进同一个文件里让你一边写代码一边看结果随时还能留下备注。以前写 Python 脚本写完一小段要跑一次才能看到输出看完了再回头补注释编辑器和终端来回切换整个过程是割裂的。用了 Notebook 之后代码和思考过程被放在同一张“纸”上一个.ipynb文件从头读到尾就是一份可以随时重新执行的实验报告。很多人把它看作 IDE 的替代品我觉得这种理解有点浪费。它更像一种写作方式。不需要一次性把整个程序写完再运行、想一段段推进、边做边记的地方它都能派上用场。写分析报告、记学习笔记、给同事交代数据处理流程最合适的载体往往不是 Word、不是 PPT恰恰就是 Notebook。我第一次接触这个工具是在某公司接一个数据清洗的交接任务。对方 Leader 直接丢给我一个.ipynb文件我当时心里嘀咕“代码不应该是 .py 吗”打开之后才发现每一段代码下面都跟着输出、图表和中文说明整个清洗逻辑从头到尾一条线走下来根本不用追着人问。那次之后我的日常分析工作流基本就离不开它了。项目本身不是新鲜事物前身叫 IPython Notebook后来升级成 Jupyter 项目名字里的 Ju 来自 Julia、Py 来自 Python、R 来自 R寓意支持多语言交互式计算。对绝大多数用 Python 做数据分析、机器学习的人来说Jupyter Notebook 基本就是入行后接触的第一个“正式”工具。1.1 一个能装“代码活页纸”的笔记本Notebook 组织内容的最小单位叫单元格Cell一组单元格从上排到下就构成一个长的“笔记本页面”。每个单元格要么装代码、要么装说明文字你可以在中间随意穿插先写思路再写代码或者先跑代码再补一段结论全看自己的习惯。这种组织方式最大的好处是“能回头看”。传统脚本写错了只能靠调试器输出Notebook 里运行状态直接留在原地哪一步把数据变成了什么样一目了然。尤其是处理数据的时候跑完一步就打印一份中间结果数据表格显示得整整齐齐这种感觉就像在真正的笔记本上打草稿很踏实。代码和文字混排还有一层隐藏优点表达逻辑会变清楚。写.py文件时人很容易陷入“赶紧把代码跑通”的状态思路被细节带跑而在 Notebook 里每写一段代码前先写一段 Markdown逼着自己先把目标想明白。长期用下来对分析思路的帮助比想象中要大。1.2 谁在用用在什么场景我把接触过的使用者大致分成了四类数据分析师做数据清洗、统计汇总、图表探索跑一步看一步报告直接导出成 HTML 交付。算法工程师调模型、看训练曲线、比较参数效果训练日志和可视化尝试都会留在 Notebook 里。教学与学习者老师做一个带代码、公式、插图的讲义学生边读边改参数比纯文字教材直观多了。研究人员实验过程、结果记录、图表生成全在一个文件里整理成论文附件的素材也方便。场景上临时算点数据、做五分钟演示、给团队讲一条清洗逻辑都是它的主场。但真要写大型工程、跑正式的后端服务Notebook 并不合适。这个定位要清醒它是一个探索和表达的工具不是一个生产级的应用环境。2. 安装与启动从零到能跑通2.1 两条安装路线怎么选安装 Jupyter Notebook 不复杂就是选一条适合自己的路。第一条是用 Python 自带的包管理工具直接装终端执行pip install jupyter装完后输入jupyter notebook就能启动默认端口 8888。如果本机 8888 被占用程序会自动去试 8889、8890……这个自动避让机制很容易被忽略但实际用起来挺省心。第二条是装一个带图形界面的科学计算发行版。这种方式会把 Notebook、常用科学计算库、配套工具一次性装好适合不想折腾环境的人。装好后桌面或开始菜单里会出现 Jupyter 的入口图标点开就能用省去命令行操作。缺点是安装包体积比较大而且预装库版本相对固定想用最新版某个库时反而要多费点劲。不管走哪条路我都建议把包装在虚拟环境里。见过不少人图省事装进系统级 Python结果项目 A 依赖某个库的 1.x项目 B 需要同一个库的 2.x装来装去把环境搞成一团浆糊最后只能重装。虚拟环境相当于给每个项目开一个独立小房间互不干扰环境坏了删掉重建就行这条教训值得前置。如果用的是 conda 类工具常见的操作是先建一个隔离环境再装conda create -n myenv python3.10 conda activate myenv pip install jupyter2.2 启动命令和浏览器访问细节环境准备好后启动很简单就一行命令jupyter notebook终端会打出一段地址形如http://localhost:8888/tree浏览器自动打开文件列表页。如果浏览器没自动打开手动复制终端里的地址也行不用慌。注意终端窗口别关它后面是实际的工作进程关掉就等于把整个 Notebook 服务停了。这里有个小细节值得说明jupyter notebook默认把当前终端所在目录当根目录所以启动之前先cd到项目目录比启动之后再去找文件省事得多。文件列表页右上角的 New 下拉菜单选择 Python 3 就能新建笔记本。如果在服务器或远程机器上使用还需要加--ip和--port参数来指定监听地址。不过内网使用要谨慎因为不加认证会允许局域网内其他人直接访问进来执行代码。安全起见远程使用一般要配合密钥或密码这个主题后面讲进阶内容时再展开。3. 操作界面的整体认识3.1 菜单栏和工具栏各有什么进入笔记本页面后最上方是菜单栏File、Edit、View、Insert、Cell、Kernel、Widgets、Help。File 管理新建、保存、下载Edit 负责单元格的复制粘贴删除Insert 专门用来插入单元格Cell 管单元格的运行方式Kernel 管后台计算内核Help 提供快捷键清单和官方文档入口。多数功能在右键菜单和快捷键里也有菜单栏属于兜底。工具栏在菜单栏下一排基本是菜单功能的快捷按钮保存、添加单元格、剪切粘贴、上下移动、运行、中断、重启内核。特别注意一个按钮叫“Cell Toolbar”展开后可以给单元格标记额外属性比如设为幻灯片页面。做演示汇报时这个功能能把 Notebook 当成 PPT 来用虽然玩得溜的人不多但知道有这回事就行。对新手的建议很直接先别背菜单只要记住“保存”和“运行”两个按钮的位置其余功能遇到具体需求再去菜单里翻。界面要素先记三样——菜单栏、工具栏、单元格列表其他都是围绕这几样打转。熟悉之后再慢慢扩展就能顺手。3.2 编辑模式、命令模式的区别Notebook 的单元格有蓝色和绿色两种边框状态。蓝色代表命令模式绿色代表编辑模式。命令模式是你站在“笔记本管理层”的待命状态按键操作是对整个单元格生效比如按 B 在当前单元格下方插入新单元格编辑模式下你才真正在单元格内部输入字符。切换规则很简单按 Enter 进入编辑模式按 Esc 退出到命令模式。我见过不少人半天摸不清“为什么按 B 没反应”绝大多数都是因为当前正处在绿色编辑模式按出来的是字母 b 而不是插入单元格的命令。识别方法就是看边框颜色蓝色按快捷键绿色敲内容。熟练之后整套操作可以完全不依赖鼠标Esc 退出编辑、B 插入单元格、ShiftEnter 运行并跳到下一个。节奏感很强写代码效率能提高不少。这也是我从命令行时代带过来的习惯——能用键盘就不用鼠标这个工具完全能满足这种偏好。4. 单元格与运行逻辑这是 Jupyter 的灵魂4.1 代码单元格和 Markdown 单元格Notebook 里的单元格按类型分成两大类Code 和 Markdown。Code 单元格装代码运行后输出直接显示在单元格正下方Markdown 单元格装排版文本运行后变成渲染好的标题、列表、链接和图表说明。两者就是“干活”和“记录”的关系。新建单元格默认是 Code要切换成 Markdown在命令模式下按字母 M切回代码按 Y。这个切换非常频繁因为一份像样的 Notebook 本身就是“文档里穿插代码”而不是“代码堆里穿插文档”。输出方面也有讲究代码最后一行如果是表达式或变量会自动把值显示出来那行代码如果画图图形会直接嵌入输出区还能双击放大看细节。还有个细节容易被忽视Markdown 单元格写错语法或者反引号数量没配对运行后排版会错乱比如整段内容被当成代码块高亮。这时候只需切回编辑模式重新修改再运行即可不会影响其他单元格。我开始时不熟悉常把反引号数错后来就养成了写完 Markdown 先运行预览一遍再继续的习惯。4.2 执行顺序不是从上往下的最重要的一条认知放在这里Notebook 里的代码执行顺序不等于页面上的视觉顺序。你点哪个单元格的按钮、按哪个快捷键哪个单元格就被执行变量被随之更新而页面上的位置永远不变。如果你跳过前面的单元格直接运行后面的很容易拿到旧的变量状态结果对不上还发现不了。举个例子你在第 3 个单元格定义了x 10第 5 个单元格输出x。单独重跑第 5 个依然显示 10因为变量活在内存里但如果重启内核后直接跑第 5 个就会报 NameError因为定义 x 的代码还没执行过。这种“状态依赖”是新手最容易踩的坑。我的标准做法是改过前面的代码之后用菜单 Kernel Restart Run All 从第一个单元格顺序运行到最后一个把整个 Notebook 从头到尾干净执行一遍。别怕慢慢一点换来的是结果可信很值。这一条如果你只能记住一个建议记这条。4.3 内核幕后计算进程的生存法则每个笔记本背后都有一个内核Kernel对应一个独立的 Python 进程。运行单元格时代码先发给内核执行结果再传回页面。所以那个终端窗口不能随便关关了内核就断了页面会显示“连接已断开”之类的提示看起来像浏览器问题实际是后台进程没了。Kernel 菜单里几个操作要练熟。Interrupt 中断当前正在运行的单元格代码陷入死循环时点它可以让它停下来Restart 重启内核清空所有变量相当于开一个全新的进程Restart Run All 就是重启后从头跑全部单元格是交付前必做的一步。内核数量的概念也要建立打开多个 Notebook等于开了多个进程每个进程都占内存。我试过一次性开四五个带大数据集的 Notebook内存直接顶满机器风扇狂转。后来学会了用“运行中内核”面板集中管理不需要的立刻关掉内存压力小很多这个习惯现在一直保持。5. 用 Markdown 把笔记本变成报告5.1 标题、列表、表格、公式都支持Markdown 单元格是 Jupyter 作为“文档工具”的另一半灵魂。语法学起来十分钟就够一个井号加空格是标题星号是列表方括号加圆括号是链接加粗是两个星号包起来。会这几样就能写出像样的说明文字比空荡荡的代码注释观感好太多。它还支持表格和数学公式。表格示例| 方案 | 优点 | 缺点 | |------|------|------| | A | 简单 | 较慢 | | B | 快速 | 复杂 |渲染出来就是规整的表格非常适合放对比内容。公式用美元符号包住就能渲染比如$y ax b$支持 LaTeX 语法写机器学习推导、数学公式时非常顺手。我写技术文档时很多公式直接在 Notebook 里用 LaTeX 现场排版比复制 Word 公式截图强太多。5.2 从草稿到正式交付的整理动作如果 Notebook 只是给自己看怎么乱都可以。但一旦要交出去就得花几分钟做“排版收尾”。我习惯的三步是删掉没用的实验单元格清理长输出尤其是一大屏的数据预览在开头写一段摘要说明这份笔记解决什么问题、结论在哪些单元格。其中“清理输出”这步很多人会漏。交付前如果不做别人拿到手看到的都是你机器上的旧结果重跑一遍输出不同很容易造成误解。我交付之前会用菜单里的清除所有输出让 Notebook 回到“还没运行过”的状态重新 Run All 一遍再保存确保导出的内容真实反映当前代码。Markdown 单元格还兼容 HTML 标签。偶尔需要嵌一张本地图片、做一个居中的彩色提示块可以直接写 HTML。但我不建议重度使用跨工具打开时兼容性容易打折扣保持简单更稳妥。真要做复杂排版导出去用专门的文档工具处理反而更快。6. 效率操作记住这些快捷键鼠标使用频率自然降下来6.1 核心快捷键一页纸命令模式下Enter进入编辑模式B在下方插入单元格A在上方插入单元格DD删除当前单元格M切换为 MarkdownY切换为 CodeShiftEnter运行并移到下一个单元格CtrlEnter运行并留在当前单元格AltEnter运行并在下方插入新单元格编辑模式里主要用 CtrlEnter 运行、Esc 退出。全量快捷键可以在 Help Keyboard Shortcuts 里查看。负责任地说熟练用 B、M、ShiftEnter 之后日常效率提升非常明显整个编辑节奏像是连续的而不是点一下鼠标再敲一下键盘那种断裂感会少很多。6.2 单元格操作和运行历史的几个技巧除了快捷键几个小操作也值得记。按住 Shift 点选可以连续选中多个单元格再按 ShiftEnter 一次性运行整组命令模式下 C、X、V 对单元格整体复制、剪切、粘贴和文本的复制不是一回事刚开始容易混用两次就记住了。CtrlShift减号可以把一个单元格从光标处拆成两个合并几个单元格用 ShiftM。长代码写多了想拆开这两个操作很实用。还有一个实用小技巧在代码单元格里写函数名加?再运行会弹出函数帮助面板用??能看到源码。排查第三方库问题特别方便比开浏览器搜索快。运行历史也藏在上下方向键里同一个单元格内可以翻之前执行过的命令和终端体验一致。这个功能很多人不知道知道之后基本就回不去了。我自己写代码时经常在同一个单元格里反复修改试验用方向键翻历史能少打很多字。7. 文件保存与导出别让笔记本烂在浏览器里7.1 为什么偏偏是 .ipynbNotebook 文件后缀是.ipynb本质是一个 JSON 文本文件存放单元格内容、输出结果、元数据。JSON 的好处是机器可解析、版本管理工具能跟踪内容变更坏处也很直观用文本编辑器打开就是大段带反斜杠转义的字符串没法直接读所以日常使用都在界面里操作。保存是自动加手动的组合。Notebook 默认会自动保存间隔可以设置但强烈建议在重要节点手动 CtrlS。尤其准备关页面、提交代码前手一抖关掉浏览器的事太平常了自动保存偶尔也会来不及多按一下保存没坏处这是成本最低的保护手段。.ipynb还记录输出和元数据所以同样一份代码在不同机器打开输出内容可能不同时间、环境、依赖版本都会造成差异。如果只给别人发一个文件对方可能跑不出你那个输出。交付时我会同时附一个依赖列表把版本固定下来不然复现困难来回扯皮更费时间。7.2 导出成多种格式按场景选格式File Download as 提供了多种导出选项HTML、Markdown、Python、PDF、LaTeX。最常用的是 HTML导出后任意浏览器都能打开不需要装 Jupyter。我跟同事分享分析结论时基本都是导出 HTML对方零成本查看也不会出现环境对不上的问题。导出为 Python 脚本则能把所有代码单元格按顺序拼接成一个.py文件Markdown 和输出都会去掉。这个能力适合把 Notebook 里的代码迁移到正式脚本、跑定时任务。注意导出后的脚本没有单元格状态隔离变量依赖关系要自己理清楚否则搬过去跑会连环报错。PDF 导出需要额外组件想省事可以先导出 HTML再用浏览器打印成 PDF效果基本一样。总结我的选型习惯给同事看用 HTML继续维护逻辑用 .ipynb要部署上线再抽成 .py。别指望一个格式打天下按场景选择才是正解。8. 几个我实际踩过的坑希望你能绕开8.1 四个高频故障与解决办法第一个启动后浏览器打不开。终端明明提示服务启动了页面却白屏或者连接失败。排查方向通常是端口被占用、代理设置影响。我有一次系统代理开着localhost 请求被代理转发到外部导致失败关掉代理就好了。遇到问题可以先手动访问命令行里给出的http://127.0.0.1:8888/tree绕开可能存在的代理解析。第二个误删单元格心态崩溃。命令模式里按 DD 删掉单元格后其实可以找回用 Edit Undo Delete Cells快捷键是 Z。这个功能救过我很多次删错了不要慌先按 Z 再想别的事大部分时候能恢复。第三个内核崩溃导致输出全没。跑大模型推理时内核断掉前面的变量、进度全部消失。事后后悔没用正确习惯是长任务完成一个重要阶段就保存文件能写成中间结果的尽量落地。要始终记着自动保存保存的是代码和输出不是内核内存里的临时变量这点很关键。第四个全选运行后结果跟之前不一样。这是顺序陷阱的典型案例因为之前手动运行过部分单元格内存里变量状态已经乱了。统一处理方式就是 Restart Run All清掉旧状态从零跑出来的结果才真正可信。这个动作我现在已经形成肌肉记忆了。8.2 使用 Notebook 的长期习惯建议最后聊几个长期形成的工作习惯不一定适合所有人但值得参考。第一一个主题尽量开一个文件别把不相干的分析塞进同一个 Notebook文件一乱找东西的时间比运行时间还长。第二文件名带上日期或版本比如销量分析_20250614_v2.ipynb避免出现“最终版”猜谜游戏。第三写代码时尽量每个单元格只做一件事出问题定位快也方便后面复用。我还有一个“三次原则”同一段数据处理逻辑如果要在两个以上 Notebook 里重复用就把它抽成一个公用模块而不是复制粘贴到每个文件。Notebook 适合探索不适合当代码仓库把稳定逻辑沉淀成独立模块之后维护成本会大幅下降。把上面这些坑绕开之后Jupyter Notebook 的日常使用基本不会再有大的阻碍。我越来越觉得它真正改变的不是“写代码的方式”而是“思考问题的方式”。用习惯以后你会自然地倾向把一个大问题拆成很多小段一段段推进每段留下中间结论。这种工作流试错成本低出错也好定位。这一期先讲清楚安装、界面、单元格、内核、Markdown 和快捷键这些基础下一期可以接着聊 JupyterLab、多环境配置、远程使用和交互式控件到时候再展开说。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →