admin管理员组

文章数量:1567041

更多详情请点击查看原文:Python 教学 | Jupyter Notebook 中那些十分有用的魔术命令

本文目录

一、引言

二、Jupyter Notebook 安装及使用

三、Jupyter Notebook 中的实用魔术命令

  1. 计时三件套 %%time、%time、%timeit

  2. %store

  3. %quickref

  4. %history

四、总结

五、相关推荐

本文共2843个字,阅读大约需要8分钟,欢迎指正!

一、引言

Jupyter Notebook 是一个开源的交互式笔记本应用程序,你可以使用它创建和共享文档,其中包含代码、公式、可视化图形、文本以及 HTML 等内容,广泛用于 Python 数据分析、机器学习、科学计算等领域。它所提供的交互式编程环境对 Python 入门者来说非常友好,你可以逐步执行代码块(cell)并查看结果,它可以帮助你及时发现代码中可能出现的问题,以便于及时修复代码和理解代码含义;在进行数据可视化时也可以即时显示图形,便于我们调整图形细节,可以说它是最适合进行数据处理和数据分析的 Python 工具之一。

本期文章我们将分享几个 Jupyter Notebook 中非常实用的魔术命令,让好用的 Jupyter Notebook 更加好用。

二、Jupyter Notebook 安装及使用

如果你是通过安装 Anaconda 而安装的 Jupyter Notebook,那么直接使用即可,因为 Python、常用科学计算库以及 Jupyter Notebook 都是内嵌在 Anaconda 中的。

如果你通过安装 Miniconda 或安装原生 Python 而得到的 Python,则需要另外主动安装 Jupyter Notebook,当它作为一个第三方库出现,在终端中使用下面的命令即可完成安装。

pip install jupyter
# 或者
pip install jupyter notebook

安装完成后即可在终端中输入命令“jupyter notebook”启动它,启动后 Jupyter Notebook 将会在浏览器中弹出主页,使用过程中,不可以关闭启动它所使用的终端栏。

此外还有一种比较方便的使用方式,那就是在 IDE 中使用 Jupyter Notebook,例如可以在Visual Studio Code中依赖扩展(插件)来使用 Jupyter Notebook。不过即便是利用扩展来使用它,也需要事先在 Python 中安装第三方库 “jupyter notebook” 或者 “ipykernel”。

*图片与正文内容无关

三、Jupyter Notebook 中的实用魔术命令

Jupyter Notebook 中的魔术命令,简单来说就是 Jupyter Notebook 内置的一些命令,这些命令一般都通过符号 ‘%’(或‘%%’) + 关键字触发,用于实现各种有助于编程的功能。‘%’+关键字 为行魔术命令,一般只对一行代码生效;而‘%%’+关键字 为单元格魔术命令,对整个单元格生效。

下面笔者来介绍几个相对实用的魔术命令。

1. 计时三件套 %%time、%time、%timeit

%%time是一个纳秒级的计时工具,用于计算一个代码单元格从开始运行到运行结束所花费的总时间和 CPU 时间。在 Jupyter Notebook 的一个代码单元格的第一行单独使用该命令,那么在代码运行结束后,就会返回代码运行所花费的总时长,就像下面这样:

其中CPU times表示代码在 CPU 上花费的时间,这包括了所有的用户态和内核态 CPU 时间的总和,CPU times: total: 13.8 s指的是执行这段代码所花费的总 CPU 时间为 13.8 秒;Wall time指的是从这段代码开始执行到结束所花费的实际时间,也称为挂钟时间或真实时间。

%time是一个与 %%time 十分相似的记时魔术命令,不同的是,%time是一个行魔术命令,仅对一行代码生效,用于计算%time所在行代码的运行时间,如下图所示:

%timeit%time的优化版本,它的功能是计算一行代码运行所花费的平均时长,如下图所示:

这段代码的含义是在 500 次循环中,每次都计算一个长度为10000的整数序列中的最大值,并将计算得到的最大值添加到一个列表中,最终将会得到一个长度为 500 的列表 [9999,9999,9999,……]。计时结果为:103 ms ± 481 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)。它表示这一行代码一共运行了 7 次独立的测试,在每次独立测试运行中,代码被执行了 10 次。这有助于得到更准确的平均值。而mean ± std. dev.表示平均值+标准偏差,其结果为103 ms ± 481 µs,这表示这段代码大约需要 103 毫秒,执行时间的标准偏差为 481 微秒,也就是说,不同次执行之间的时间可能会有一些波动,大约在 481 微秒左右。

%timeit会根据代码运行实际时长自动设置测试次数,不过也支持手动设置,方法如下:

%timeit -n 200 -r 100 [max(range(10000)) for i in range(500)]
# -r 参数指定运行多少轮,-n 参数指定每轮运行多少次
# 这里表示指定运行 100 轮,每轮 200 次

计时魔术命令可以精确计算 Python 中代码的运行时间,最高可以精确到纳秒,这个功能可以帮助我们测试代码的运行效率,了解 Python 的运行逻辑。假设实现同一个功能有多种方式,那我们就可以通过上述计时命令找到最节省时间的一种方式,那么在后续使用中,我们就可以使用省时的代码写法。

*图片与正文内容无关

2. %store

这个命令的功能是在不同的 Notebook 之间传递变量,这让同时使用多个 Notebook 时的标量共享和测试工作变得更加方便。

用过 Jupyter Notebook 的都知道,我们可以同时使用多个代码,即多个 Notebook,但是每一个 Notebook 都具备独立的变量空间,多个 Notebook 之间的变量互不影响,当然也不能跨代码访问变量。但是有了这个命令之后我们就可以用一个 Notebook 去访问另一个 Notebook 中的变量,这样就可以更加方便的进行测试、调试等操作,%store的具体使用方法如下:

(1)存储(上传变量):首先由一个 Notebook 分享其中的变量,类似于将独立变量空间中的变量上传到一处可以被其他 Notebook 访问的共享变量空间。注意该操作将会复制要分享的变量,如果变量占用空间较大可能导致内存过载,需要谨慎操作。

%store Table
# 将变量 Table 上传到共享变量空间

(2)加载变量:将共享变量空间中的变量加载到当前(另外一个) Notebook 中。

%store -r Table

变量一旦分享,就变成了两个 Notebook 中的两个独立变量,一个变量发生变化,另一个变量不会跟着变化。

此外还有以下几个命令可供使用:

%store
# 查看存储的变量

%store -d my_variable
# 删除存储的变量

%store -z
# 清空所有存储的变量

3. %quickref

这个魔术命令详细记录了各个魔术命令及其功能和用法,就像下面这样。

4. %history

如果你的代码经过反复修改,已经不记得之前做过什么了,这时候就可以使用这个魔术命令,它可以显示所有的历史操作,帮助你找到需要的代码。

四、总结

💡本期文章我们介绍了几个比较实用的 Jupyter Notebook 魔术命令,在学习它们之后,我们将更加了解和熟悉 Jupyter Notebook,许多使用过程中遇到的问题也将迎刃而解。希望本期文章能对大家有所帮助。

如果你想学习各种 Python 编程技巧,提升个人竞争力,那就加入我们的数据 Seminar 交流群吧,欢迎大家在社群内交流、探索、学习,一起进步!同时您也可以分享通过数据 Seminar 学到的技能以及得到的成果。

五、相关推荐

Python 教学

  • Python 教学 | 学习 Python 第一步——环境安装与配置

  • Python 教学 | Python 基本数据类型

  • Python 教学 | Python 字符串操作(上)

  • Python 教学 | Python 字符串操作(下)

  • Python 教学 | Python 变量与基本运算

  • Python 教学 | 组合数据类型-列表

  • Python 教学 | 组合数据类型-集合(内含实例)

  • Python 教学 | 组合数据类型 - 字典&元组

  • Python 教学 | Python 中的分支结构(判断语句)

  • Python 教学 | Python 中的循环结构(上)

  • Python 教学 | Python 中的循环结构(下)

  • Python 教学 | Python 函数的定义与调用

  • Python 教学 | Python 内置函数

  • Python 教学 | 最常用的标准库之一 —— os

  • Python 教学 | 盘点 Python 数据处理常用标准库

  • Python 教学 | “小白”友好型正则表达式教学(一)

  • Python 教学 | “小白”友好型正则表达式教学(二)

  • Python 教学 | “小白”友好型正则表达式教学(三)

  • Python 教学 | 数据处理必备工具之 Pandas(基础篇)

  • Python 教学 | 数据处理必备工具之 Pandas(数据的读取与导出)

  • Python 教学 | Pandas 数据索引与数据选取

  • Python 教学 | Pandas 妙不可言的条件数据筛选

  • Python 教学 | Pandas 缺失值与重复值的处理方法

  • Python 教学 | Pandas 表格数据行列变换

  • Python 教学 | Pandas 表格字段类型精讲(含类型转换)

  • Python 教学 | Pandas 数据合并(含目录文件合并案例)

  • Python 教学 | Pandas 数据匹配(含实操案例)

  • Python 教学 | Pandas 函数应用(apply/map)【上】

  • Python 教学 | Pandas 函数应用(apply/map)【下】

  • Python 教学 | Pandas 分组聚合与数据排序

  • Python 教学 | Pandas 时间数据处理方法

  • Python 教学 | 列表推导式 & 字典推导式

  • Python 教学 | 一文搞懂面向对象中的“类和实例”

  • Python 教学 | Python 学习路线+经验分享,新手必看!

  • Python 教学 | 解密 Windows 中的 Path 环境变量

Python实战

  • Python实战 | 如何使用 Python 调用 API

  • Python 实战 | 使用正则表达式从文本中提取指标

  • 大数据分析 | 用 Python 做文本词频分析

  • 数据治理 | 从“今天中午吃什么”中学习Python文本相似度计算

  • 数据治理 | 省下一个亿!一文读懂如何用python读取并处理PDF中的表格(赠送本文所用的PDF文件)

  • 数据治理 | 还在人工识别表格呢?Python 调用百度 OCR API 又快又准

  • 数据治理 | 如何用 Python 批量压缩/解压缩文件

  • 案例分享:使用 Python 批量处理统计年鉴数据(上)

  • 案例分享:使用 Python 批量处理统计年鉴数据(下)

  • Python 实战 | ChatGPT + Python 实现全自动数据处理/可视化

  • ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙

  • Python 实战 | 文本分析之文本关键词提取

  • Python 实战 | 文本分析工具之HanLP入门

  • Python 实战 | 进阶中文分词之 HanLP 词典分词(上)

  • Python 实战 | 进阶中文分词之 HanLP 词典分词(下)

  • Python实战 | 文本文件编码问题的 Python 解决方案

  • Python 实战 | 从 PDF 中提取(框线不全的)表格

  • Python 实战 | 利用 Python 做长宽面板转换(附数据&代码)

  • Python 实战 | 拆分、合并、转换……请查收这份 PDF 操作手册

  • 答疑解惑 | 云桌面用户如何使用 Python 连接数据库读写、处理数据

数据可视化

  • 数据可视化 | 讲究!用 Python 制作词云图学问多着呢

  • 数据可视化 | 地址数据可视化—教你如何绘制地理散点图和热力图

  • 数据可视化 | 太酷了!用 Python 绘制3D地理分布图

  • 数据可视化 | 用 Python 制作动感十足的动态柱状图

  • 数据可视化 | Python绘制多维柱状图:一图展示西部各省人口变迁【附本文数据和代码】

  • 数据可视化 | 3D 柱状图一览各省农民合作社存量近十年变化

本文标签: 魔术有用命令Pythonjupyter