2-Jupyter Notebook介绍、安装、配置与使用
Jupyter Notebook介绍
Jupyter Notebook其实和Pycharm类似,算是一个集成开发环境,把她当成IDE来理解即可,但是又有特殊之处。
Jupyter Notebook 与 SciPy、NumPy、pandas、matplotlib 等库的关系可以概括为 “平台与工具” 的关系。Jupyter Notebook 是一个 交互式计算环境,而 SciPy、NumPy 等是运行在该环境中的 功能库。它们之间没有直接的包含关系,但共同服务于数据分析和科学计算的完整工作流。
1. Jupyter Notebook 的定位
-
核心功能:
-
提供基于 Web 的交互式编程界面,支持代码、文本、图表、公式的混合编写(通过
.ipynb
文件)。 -
支持多种编程语言(如 Python、R、Julia),但主要与 Python 生态结合使用。
-
-
角色:
-
平台:为数据科学家、研究人员提供便捷的探索性分析环境。
-
粘合剂:整合 NumPy、pandas 等库的功能,并实时展示结果(如表格、图表)。
-
2. 与科学计算库的关系
(1) Jupyter Notebook 依赖这些库:
-
Jupyter Notebook 本身不包含数值计算或数据分析功能,需借助第三方库实现具体任务:
-
数据计算:通过 NumPy、SciPy 完成。
-
数据处理:通过 pandas 操作结构化数据。
-
可视化:通过 matplotlib、Seaborn 等生成图表。
-
(2) Jupyter Notebook 增强这些库的体验:
-
交互性:实时执行代码片段,直接展示结果(如
df.head()
直接渲染表格)。 -
可视化嵌入:在 Notebook 中直接显示 matplotlib 图表(通过
%matplotlib inline
魔法命令)。 -
文档整合:将代码、结果、说明文字整合为可分享的文档。
3. 典型协作示例
在 Jupyter Notebook 中,用户通常会按以下流程使用这些库:
# 1. 导入库 import numpy as np import pandas as pd from scipy import stats import matplotlib.pyplot as plt %matplotlib inline # 在 Notebook 内嵌图表 # 2. 数据处理(pandas) data = pd.read_csv("data.csv") cleaned_data = data.dropna() # 3. 数值计算(NumPy) mean = np.mean(cleaned_data["value"]) # 4. 科学计算(SciPy) t_stat, p_value = stats.ttest_ind(cleaned_data["groupA"], cleaned_data["groupB"]) # 5. 可视化(matplotlib) plt.hist(cleaned_data["value"], bins=20) plt.title("Data Distribution") plt.show() # 图表直接显示在 Notebook 中
4. 关键区别
组件 | 角色 | 与 Jupyter Notebook 的关系 |
---|---|---|
Jupyter Notebook | 交互式开发环境 | 平台,提供运行和展示的载体 |
NumPy | 数值计算基础库 | 在 Notebook 中调用,处理数组和矩阵运算 |
pandas | 数据操作与分析库 | 在 Notebook 中调用,处理表格数据 |
SciPy | 高级科学计算工具库 | 在 Notebook 中调用,实现复杂数学算法 |
matplotlib | 数据可视化库 | 在 Notebook 中调用,直接嵌入图表 |
5. 常见误解澄清
-
误解 1:Jupyter Notebook 自带 NumPy/pandas 等功能。
真相:这些库需独立安装,Jupyter 仅提供运行环境(通常通过 Anaconda 等工具链统一安装)。 -
误解 2:Jupyter Notebook 是 IDE(如 PyCharm)的替代品。
真相:Jupyter 适合探索性分析,但缺乏 IDE 的工程化功能(如调试、版本控制)。 -
误解 3:必须用 Jupyter Notebook 才能使用这些库。
真相:这些库可在任何 Python 环境(如脚本、IDE)中使用,但 Jupyter 能显著提升交互体验。
6. 总结
-
Jupyter Notebook 是舞台:提供编写、运行和展示代码的场所。
-
NumPy、SciPy、pandas、matplotlib 是演员:在舞台上执行具体任务。
-
协作价值:Jupyter Notebook 的交互性和可视化能力,使这些库的功能更易被探索和验证。
如果想高效学习数据科学,建议以 Jupyter Notebook 为实验环境,逐步掌握这些库的协同使用!
为什么使用Jupyter Notebook?
- 传统软件开发:工程/目标明确
-
- 需求分析,设计架构,开发模块,测试
- 数据挖掘:艺术/目标不明确
-
- 目的是具体的洞察目标,而不是机械的完成任务
- 通过执行代码来理解问题
- 迭代式地改进代码来改进解决方法
数据展示:
配置Jupyter 默认启动目录
1.打开cmd,输入 jupyter notebook --generate-config
如果出现 'jupyter' 不是内部或外部命令
错误,通常是因为 环境变量未配置。
找到Anaconda安装路径下的:D:\install\tools\Anaconda312\Scripts,添加到环境变量path中
2.打开上个命令生成的jupyter_notebook_config.py配置文件,找到“c.NotebookApp.notebook_dir=‘’ ”, 把路径改成自己的工作目录;“c.NotebookApp.notebook_dir=‘’ ”是设置 Jupyter Notebook 默认启动目录的标准配置项。
注意:
从 Jupyter 4.0 开始,部分配置项名称可能调整。如果 c.NotebookApp.notebook_dir
无效,尝试以下替代项:
- 新配置项名称:
c.ServerApp.root_dir = 'D:\data\jupyter' # JupyterLab 3.0+ 或 Notebook 6.0+
查看版本:
jupyter notebook --version # Notebook 版本 jupyter lab --version # Lab 版本 jupyter --version # 核心包版本
终极解决方案
如果以上方法均无效,直接通过命令行启动并指定目录:
jupyter notebook --notebook-dir="D:\data\jupyter"
或(新版):
jupyter server --ServerApp.root_dir="D:\data\jupyter"
附:配置项历史变化表
Jupyter 版本 | 有效配置项名称 | 说明 |
---|---|---|
< 4.0 | c.NotebookApp.notebook_dir |
传统配置项 |
4.0 ~ 5.0 | c.NotebookApp.notebook_dir |
兼容模式 |
≥6.0 | c.ServerApp.root_dir |
统一为 ServerApp 命名空间 |
3.配置文件修改完成后,验证是否生效
jupyter notebook
以后在jupyter notebook中写的代码等都会保存在 自己创建的目录中。
注意:如果通过 Anaconda Navigator 启动时上述配置未生效,但命令行生效,通常是因为 Anaconda 启动器覆盖了默认配置。
以下是具体原因和解决方案:修改快捷方式属性:删除最后面的“%USERPROFILE%”即可,因为%USERPROFILE%会覆盖我们之前的配置
修改后的完整示例:
"D:\install\tools\Anaconda312\python.exe" "D:\install\tools\Anaconda312\cwp.py" "D:\install\tools\Anaconda312" "D:\install\tools\Anaconda312\python.exe" "D:\install\tools\Anaconda312\Scripts\jupyter-notebook-script.py"
*设置jupyter密码:
方法 1:通过命令行快速设置密码
打开终端/命令提示符,执行以下命令:
jupyter notebook password
输入并确认密码:
Enter password: ********
Verify password: ********
生成密码文件:
-
-
密码会被加密并保存在
~/.jupyter/jupyter_notebook_config.json
(Linux/macOS)或C:\Users\你的用户名\.jupyter\jupyter_notebook_config.json
(Windows)。
-
重启 Jupyter Notebook:jupyter notebook
jupyter notebook
-
下次访问时会要求输入密码,不再需要令牌(Token)。
方法 2:手动生成密码并配置
步骤 1:生成密码哈希值
-
打开 Python 环境(确保已安装 Jupyter):
python
在 Python 中输入以下代码生成密码哈希:
from notebook.auth import passwd passwd()
输入并确认密码后,会返回一个类似 'argon2:...'
的哈希字符串,复制该字符串。
步骤 2:修改配置文件
-
打开配置文件:
-
路径为
~/.jupyter/jupyter_notebook_config.py
(Linux/macOS)或C:\Users\你的用户名\.jupyter\jupyter_notebook_config.py
(Windows)。
-
修改以下配置项:
# 禁用令牌登录(仅用密码) c.ServerApp.token = '' # 设置密码哈希 c.ServerApp.password = 'argon2:...(粘贴生成的哈希字符串)'
步骤 3:重启 Jupyter Notebook
验证密码是否生效
-
访问
http://localhost:8888
或你的 Jupyter 地址。 -
页面会显示 密码输入框,不再自动跳转。
-
输入设置的密码即可登录。
常见问题
1. 忘记密码如何重置?
-
重新执行
jupyter notebook password
或手动生成新哈希并更新配置文件。
2. 密码不生效?
-
检查配置文件路径是否正确。
-
确保未启用其他认证方式(如
c.ServerApp.token
未被覆盖)。 -
清除浏览器缓存或尝试无痕模式访问。
3. 同时使用密码和令牌(可选)
如果希望保留令牌登录(例如临时共享):
不设置 c.ServerApp.token = ''
,并在启动时通过 --no-browser
隐藏令牌:
jupyter notebook --no-browser
附加安全设置
-
绑定特定 IP(仅允许本地访问):
c.ServerApp.ip = 'localhost'
-
禁用 root 权限运行:
jupyter notebook --allow-root
-
启用 HTTPS(需 SSL 证书):
c.ServerApp.certfile = '/path/to/cert.pem' c.ServerApp.keyfile = '/path/to/key.pem'
jupyter notebook的使用
打开:Jupyter notebook:
方式1:开始-》找到Anaconda下面的jupter Noteboot打开即可
方式2:使用cmd命令打开:
jupyter notebook
打开之后,会启动一个服务,浏览器默认会跳转到:
创建项目和文件
内容界面操作-helloworld
文档重命名
创建完成后会新打开一个窗口:并且我们可以对文档进行重命名:
cell操作
- 什么是cell?
- cell:一对In Out会话被视作一个代码单元,称为cell
- cell行号前的 * ,表示代码正在运行
- Jupyter支持两种模式:
- 编辑模式(Enter)
- 命令模式下回车Enter或鼠标双击cell进入编辑模式
- 可以操作cell内文本或代码,剪切/复制/粘贴移动等操作
- 命令模式(Esc)
- 按 Esc 退出编辑,进入命令模式
- 可以操作cell单元本身进行剪切/复制/粘贴/移动等操作
- 编辑模式(Enter)
鼠标操作
快捷键操作
- 两种模式通用快捷键
- Shift+Enter,执行本单元代码,并跳转到下一单元
- Ctrl+Enter,执行本单元代码,留在本单元
- 命令模式:按ESC进入
- Y,cell切换到Code模式
- M,cell切换到Markdown模式
- A,在当前cell的上面添加cell
- B,在当前cell的下面添加cell
- 其他(了解)
- 双击D:删除当前cell
- Z,回退
- L,为当前cell加上行号 <!--
- Ctrl+Shift+P,对话框输入命令直接运行
- 快速跳转到首个cell, Crtl+Home
- 快速跳转到最后一个cell, Crtl+End -->
- 编辑模式:按Enter进入
- 补全代码:变量、方法后跟 Tab键
- 为一行或多行代码添加/取消注释: Ctrl+/ (Mac:CMD+/)
- 复制当前行:Alt+Shift+↓
- 等宽代码选取:Alt+Shif,然后推动鼠标选取目标区域
- 其他(了解):
- 多光标操作: Ctrl键点击鼠标(Mac:CMD+点击鼠标)
- 回退: Ctrl+Z (Mac:CMD+Z)
-
- 重做: Ctrl+Y (Mac:CMD+Y)
markdown演示
作用:用作代码说明(标题)、模块划分
关于markdown的功能,非常多:标题,缩进,插入表格,插入图片等等。。。。
标题
在markdown模式下,标题使用“#”来表示,几个井号就代表几级标题,注意!井号后面要跟一个空格,否则markdowm将其无法识别为标题
缩进
在markdown模式下,缩进使用减号“-”来表示:
Jupyter Notebook功能拓展
在使用Notebook 时,有很多痛点,例如:无法代码格式化、代码补全功能一般,无目录导航、无代码行号。。。等功能,于是就有了一些功能强大的插件来弥补这些功能,jupyter_contrib_nbextensions就是其中之一。
jupyter_contrib_nbextensions 是什么?
jupyter_contrib_nbextensions
是一个由社区维护的扩展集合,为 Jupyter Notebook 提供增强功能。它包含数十个实用插件,可以显著提升 Notebook 的交互性和效率。
- 这是一个为 Jupyter Notebook 提供大量扩展插件的工具包,包含 50+ 个增强功能,例如:
- 目录生成(Table of Contents):自动为 Notebook 生成目录(支持多级标题跳转)。
- 代码折叠(Codefolding):折叠代码块或 Markdown 内容,提升代码可读性。
- 自动补全(Hinterland):类似 IDE 的代码提示(需配合
jupyter_nbextensions_configurator
)。 - 代码执行时间统计(ExecuteTime):显示每个代码单元格的运行时间。
- 代码格式化(Code Prettify):通过快捷键格式化代码(如使用
autopep8
)。 - 主题切换(Theme):切换界面风格
- 拼写检查:对 Markdown 中的英文文本进行拼写检查。
- 适合场景:对 Jupyter Notebook 功能有进阶需求的用户。
是否好用?
优点
- 功能丰富:覆盖了 Notebook 开发的常见痛点(如目录导航、代码优化)。
- 即装即用:通过
nbextensions
配置界面,勾选即可启用插件。 - 社区支持:长期维护,用户基数大,问题解决资源多。
缺点
- 仅支持 Notebook:不兼容 JupyterLab。
- 部分扩展过时:某些插件可能在新版 Jupyter 中失效。
- 性能影响:安装过多扩展可能拖慢 Notebook 启动速度。
总结
- 推荐使用:如果你依赖 Jupyter Notebook 且需要增强功能,它是一个高效的选择。
- 不推荐使用:如果已迁移到 JupyterLab,或追求轻量级工具。
如何安装 jupyter_contrib_nbextensions
注意 较新版本的jupyter notebook按照下述步骤安装可能会报错:ModuleNotFoundError: No module named 'notebook.nbextensions'
根本原因:
Jupyter Notebook ≥7.0 版本重构了代码结构,移除了 notebook.nbextensions
模块,导致依赖此模块的旧版 jupyter_contrib_nbextensions
无法运行。
- 弃用提醒:
jupyter_contrib_nbextensions
已不再积极维护,长期建议转向 JupyterLab。
解决方案
(1) 降级 Jupyter Notebook 到兼容版本
- 环境隔离:专为旧版扩展创建独立环境,避免污染其他项目。
conda create -n jupyter_legacy python=3.9 notebook=6.5.5 -c conda-forge conda activate jupyter_legacy conda install -c conda-forge jupyter_contrib_nbextensions jupyter contrib nbextension install --user
**************************************************************以下步骤在7.0以上版本的jupyter notebook环境下会报错,了解就好******************************************************************************************************
安装jupyter_contrib_nbextensions步骤如下:
# 安装扩展包 pip install jupyter_contrib_nbextensions # 启用配置工具 python -m jupyter contrib nbextension install --user
# 启用扩展 python -m jupyter nbextensions_configurator enable --user # 启动 Jupyter Notebook,在界面中勾选需要的扩展 jupyter notebook
- 启动 Jupyter Notebook,顶部菜单会多出 Nbextensions 标签,勾选所需功能即可。
标题目录:
***********************************************************************上述扩展方式已经不在积极维护,会有很多报错,不建议使用-***********************************************************************************************************
jupyter_contrib_nbextensions平替方案推荐
根据你的需求场景,可以选择以下替代工具:
(1) 针对 JupyterLab 用户
JupyterLab 官方扩展:
- 特点:专为 JupyterLab 设计,模块化程度更高,兼容性更好。
- 推荐扩展:
@jupyterlab/toc
:自动生成目录。@jupyterlab/git
:集成 Git 版本控制。jupyterlab-lsp
:代码自动补全和语法检查(类似 IDE)。jupyterlab-code-formatter
:代码格式化(支持 Black、Prettier)。
安装方式:
# 通过 pip 安装扩展 pip install jupyterlab-git jupyterlab-lsp # 通过 JupyterLab 扩展管理器启用
(2) 轻量级替代工具
单功能插件:
- 如果只需要特定功能,可单独安装小工具:
- 目录生成:使用
nbconvert
导出时自动生成目录,或手动编写 Markdown 锚点。
- 目录生成:使用
- 代码补全:安装
jupyter-lsp
+python-lsp-server
(支持 JupyterLab/Notebook)。
pip install jupyter-lsp python-lsp-server
- 主题切换:直接修改 Jupyter 配置文件(
~/.jupyter/custom/custom.css
)或使用第三方主题库(如jupyterthemes
)。
(3) 现代化开发环境
VS Code + Jupyter 插件:
- 优势:将 Jupyter Notebook 嵌入 VS Code,享受完整的 IDE 功能(调试、Git 集成、终端)。
- 推荐功能:
- 直接运行
.ipynb
文件。 - 使用 VS Code 的代码补全、主题、扩展市场。
- 直接运行
- 安装:
- 安装 VS Code。
- 搜索并安装官方扩展 Jupyter 和 Python。
(4) 其他工具
- Google Colab:
- 云端 Notebook 环境,内置目录生成、GPU 加速等,适合临时实验。
- Deepnote:
- 协作型云端 Notebook,支持实时共享和数据库直连。
综合建议
场景 | 推荐工具 |
---|---|
坚持使用 Jupyter Notebook | jupyter_contrib_nbextensions |
已迁移到 JupyterLab | JupyterLab 官方扩展 + jupyterlab-lsp |
追求 IDE 级功能 | VS Code + Jupyter 插件 |
需要云端协作 | Google Colab 或 Deepnote |
注意事项
- 版本兼容性:确保 Jupyter 版本与扩展兼容(建议使用最新稳定版)。
- 按需启用:避免一次性启用过多扩展,可能引发冲突。
- 备份配置:修改前备份 Jupyter 配置文件(
~/.jupyter
目录)。
小结
- 是什么
- 是一个ipython的web加强版
- 为什么要使用jupyter
- 用于数据探索过程
- 怎么用
- 1.通过jupyter notebook 就可以使用
- 2.保存文件是.ipynb
- 3.每个内容,都对应的是一个cell
- 快捷键
- Shift+Enter,执行本单元代码,并跳转到下一单元
- Ctrl+Enter,执行本单元代码,留在本单元