news 2026/9/11 16:38:09

Data-Science-For-Beginners Jupyter 笔记本运行缓慢怎么优化?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Data-Science-For-Beginners Jupyter 笔记本运行缓慢怎么优化?

Data-Science-For-Beginners Jupyter 笔记本运行缓慢怎么优化?

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

在 Data-Science-For-Beginners 仓库中按 INSTALLATION.md 搭建好 Python 虚拟环境并用jupyter notebook在仓库根目录启动课程后,运行各课目的.ipynb练习时,可能出现仓库故障排查文档中记录的两类现象:笔记本整体运行非常缓慢(Notebooks run very slowly),或某个单元格长时间卡在In [*]状态、执行“takes forever”。这篇文章按 TROUBLESHOOTING.md 中给出的处理路径,从内核层面、代码层面、数据层面到浏览器层面,给出文档中实际记录的优化步骤,每一步都标注了对应的现象和适用条件。

优化前的基准状态:标准方式启动 Jupyter

执行任何优化前先确认环境处于 USAGE.md 描述的标准状态:先激活虚拟环境,再从仓库根目录启动 Jupyter。

source venv/bin/activate # On macOS/Linux # OR venv\Scripts\activate # On Windows # Start Jupyter from the repository root jupyter notebook

课程要求 Python 3.7 或更高版本,依赖包(jupyter、pandas、numpy、matplotlib、seaborn、scikit-learn)需已按 INSTALLATION.md 安装。

单元格卡在 In [*] 时:先中断,再重启内核

TROUBLESHOOTING.md 记录的对应问题是 “Cell stuck onIn [*]or takes forever”。按文档给出的顺序处理:

  1. 中断内核:点击工具栏的 “Interrupt” 按钮,或按快捷键I, I
  2. 重启内核:Kernel 菜单 → Restart。
  3. 检查代码中的死循环(Check for infinite loops in your code)。
  4. 清空输出:Cell → All Output → Clear。

判断依据:单元格不再停留在In [*],能够正常执行完毕。若重启后仍反复出现卡死或内核报错(如 “Kernel keeps dying”),TROUBLESHOOTING.md 提供了重装内核的命令作为另一条路径:

python -m ipykernel install --user --name=datascience --display-name="Python (Data Science)"

整体缓慢时:重启并清空输出、关闭多余笔记本

针对 “Notebooks run very slowly” 这一现象,TROUBLESHOOTING.md 列出的前两项处理是内核层面的:

  1. Restart kernel and clear output:Kernel → Restart & Clear Output。
  2. Close unused notebooks:关闭当前没有在工作中的其他笔记本,只保留正在练习的课目文件。

这两步不涉及修改任何仓库文件,是文档中给出的最低成本尝试,应先于代码和数据的修改执行。

代码层面:用向量化操作替换 Python 循环

文档 “Optimize code” 条目给出的示例是:逐元素循环拼接结果属于慢写法,NumPy/Pandas 的向量化表达式是快写法。

# Use vectorized operations instead of loops # Bad: result = [] for x in data: result.append(x * 2) # Good: result = data * 2 # NumPy/Pandas vectorization

其中data为文档示例中的变量,对应你笔记本里的 NumPy 数组或 Pandas 列/索引。这个模式适用于你自己在练习中写的逐行循环;课程自带 notebook(如2-Working-With-Data/07-python/notebook.ipynb)里已有的代码若运行慢,可按同样原则改写。

数据层面:用采样和受限读取降低加载开销

课程的数据文件位于仓库的data/目录(见 AGENTS.md 的 “Working with Data Files” 说明)。数据层面有两类文档记录的手段,分别对应不同现象:

开发阶段用采样代替全量数据。文档 “Sample large datasets” 条目的说明是 “Work with sample during development”,即练习、调试阶段先在小样本上跑通,最后再考虑全量:

# Work with sample during development df_sample = df.sample(n=1000) # or df.head(1000)

加载大文件时限制读取范围。TROUBLESHOOTING.md 将以下代码放在 “Memory Errors with Large Datasets”(加载大文件时出现MemoryError)一节的解决方案中,三种写法分别对应分块读取、只读指定列、指定更紧凑的数据类型:

# Read in chunks chunk_size = 10000 chunks = [] for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size): # Process chunk chunks.append(chunk) df = pd.concat(chunks) # Or read specific columns only df = pd.read_csv('file.csv', usecols=['col1', 'col2']) # Use more efficient data types df = pd.read_csv('file.csv', dtype={'column_name': 'int32'})

三个占位符需要替换:large_file.csvfile.csv替换为你实际加载的数据文件名(仓库自带数据如data/birds.csvdata/taxi.csv);col1col2替换为你真正需要读取的列名;column_name替换为要指定类型的列名。注意文档把这组代码标注为MemoryError场景的解法,如果你的现象只是运行慢而没有MemoryError,可以按同样方式限制读取范围,但文档没有给出慢场景下的固定预期收益。

现象是浏览器卡死时:可选的替代路径

如果你的现象不是单元格执行慢,而是浏览器崩溃或失去响应(文档中 “Browser crashes or becomes unresponsive”),TROUBLESHOOTING.md 给出的处理是:

  1. 关闭浏览器中不使用的标签页;
  2. 清除浏览器缓存;
  3. 提高浏览器内存设置(文档以 Chrome 为例:chrome://settings/system);
  4. 改用 JupyterLab:
pip install jupyterlab jupyter lab

这条分支只在你观察到浏览器层面的卡死时适用,与单元格执行慢是两种不同的现象,不要混在同一次排查里做。

文档记录的已知限制

AGENTS.md 的 “Performance Considerations” 一节明确记录了两点课程仓库范围内的固有限制:

  • Large datasets may take time to load in notebooks(大数据集在笔记本中加载需要时间);
  • Visualization rendering can be slow for complex plots(复杂图表的渲染可能缓慢)。

也就是说,即便完成了上述全部步骤,大文件首次加载和复杂图形的出图仍可能较慢,文档将其列为已知特性而非可通过配置消除的问题。

仍无法解决时

按照 TROUBLESHOOTING.md “Getting Additional Help” 的要求,向社区提问时需要附上四项信息:操作系统、Python 版本(python --version)、完整报错信息、出错前的操作步骤,以及你已经尝试过的解决方案。排查前可再对照 INSTALLATION.md 与 USAGE.md 确认环境搭建是否偏离了文档标准路径。

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 16:36:24

BERT+BiLSTM+CRF四种变体:中文命名实体识别对照实验设计

简介:这是一份基于Pytorch框架实现BERTBiLSTMCRF命名实体识别的毕业设计源码,面向NLP方向的学生和研究者,帮助解决文本中的人名、地名、机构名等实体自动抽取问题。项目完整覆盖数据准备、模型构建、训练与评估流程,采用预训练BER…

作者头像 李华
网站建设 2026/9/11 16:35:06

基于OpenPose与YOLOv3的静态图像手语识别技术解析

简介:面向计算机视觉与手语识别研究场景,这份基于OpenPoseYOLOv3的人体动作识别资源,适合需要完成手势检测、姿态估计与动作分类任务的开发者、研究生或毕设学生使用,也可为手机端手语视频采集应用提供算法原型。资源包共42个文件…

作者头像 李华
网站建设 2026/9/11 16:34:59

基于Django的酒店推荐系统设计与实现

1. 项目概述:基于Django的酒店推荐系统设计与实现这个毕业设计项目采用PythonDjango技术栈构建了一套完整的酒店推荐系统。作为全栈开发框架,Django提供了从数据库建模到前端展示的一站式解决方案,特别适合在校学生快速实现具备商业价值的毕业…

作者头像 李华