ITPub博客

首页 > 数据库 > 数据库开发技术 > 关于 Pandas 的 Inplace 操作你可能有所误解

关于 Pandas 的 Inplace 操作你可能有所误解

原创 数据库开发技术 作者:jackzhang 时间:2024-06-21 06:30:00 0 删除 编辑

大多数 Pandas 用户对它的就地操作属性(inplace)都存在误解。他们深信使用该属性可以达到以下目的:

  • 运行时间更短

  • 降低内存使用量

当然,这种推理也是符合直觉的。

Inplace,顾名思义,必须在不创建新副本的前提下就地修改 DataFrame。因此,期待 inplace 会更高效是没问题的。

然而,很多时候往往事与愿违,使用 inplace 反而会降低性能,从下图中也可以明显看出:

显然,在大多数情况下,就地操作的速度是比较缓慢的。

为什么会发生这种情况呢?

与普遍看法相反,Pandas 的 inplace 操作从来不会阻止创建新副本。只是这些操作给新副本分配了相同的地址,所以给你的感觉好像没有创建副本。

但是在这个分配步骤中,Pandas 必须执行一些额外的检查——例如,SettingWithCopy,以确保 DataFrame 被正确修改。

有时,这可能是一个昂贵的操作。一般来说,并不能保证就地操作会更快,上图中的对比结果也证实了这一点。

此外,我特别不喜欢就地操作的一点就是它们会抑制方法链接的使用,用了 inplace 操作后,就不能再使用方法链接了。如下所示:

因此,如果非必要的话,我从不喜欢在 Pandas 中使用就地操作。当然事无绝对,存在即合理,是否使用 inplace 操作,取决于具体需求。

文末小问题👇

那么,在什么情况下你仍然更喜欢在 Pandas 中使用 inplace 操作呢?欢迎留言讨论。


推荐阅读👇👇👇

10个Python自动化脚本,简化日常工作任务,看看有没有适合你的!

Visual Studio Code:10个显著提升编码效率的关键功能和技巧!

Python自动化:10个令人惊叹的自动化脚本,拿来即用,总有一款适合你!

Python高级编程:Functools模块的8个高级用法,强烈建议添加到你的开发工具箱中!

Python编程技巧:那些年后悔没有早知道string模块的这些宝藏功能~~~

- END -

🌟 喜欢这篇文章吗?给个赞支持一下吧!🌟

如果你发现今天的内容对你有帮助,不妨点个赞并关注我,第一时间接收更多关于Python、数据分析和机器学习的深入分析和最新趋势。我们一起探索数据的力量,解锁AI的潜能。你的每一次互动都是对我的极大鼓励,也是我们共同成长的动力!

👇👇👇 关注并开启星标提醒,让知识与技能的火花不断在你的职业道路上燃烧吧!

原文作者:数据派探险家;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-12-19

  • 博文量
    119
  • 访问量
    55941