首页 >后端开发 >Python教程 >为什么 Pandas `iterrows` 这么慢,如何提高性能?

为什么 Pandas `iterrows` 这么慢,如何提高性能?

Patricia Arquette
Patricia Arquette原创
2024-12-26 16:58:10860浏览

Why is Pandas `iterrows` So Slow, and How Can I Improve Performance?

Pandas iterrows 的性能问题

iterrows 是一个用于逐行迭代的 pandas 函数,已被观察到表现出性能缺陷。虽然该问题可能与数据帧中的混合数据类型有关,但即使没有此问题的简单场景也会表现出显着的性能滞后。

向量化操作(例如 apply)通常优于 iterrows,引发了关于是否需要 row-by 的问题-行迭代。然而,在某些情况下,iterrows 仍然是不可避免的。

Iterrows 性能问题的原因

通常,由于性能特征,iterrows 的效率低于矢量化、apply 和 itertuples :

  • 向量化:向量运算可以实现高效
  • Apply:Apply 由 pandas 优化,部分操作在 Cython 中执行,提供显着的性能提升。
  • Itertuples:Itertuples 避免数据装箱,以元组形式检索数据。
  • Iterrows:Iterrows 将数据装箱到 Series 对象中,从而提高性能

最佳性能指南

要优化性能,请考虑以下指南:

  1. 尽可能优先考虑矢量化。
  2. 未进行矢量化时使用 apply可行。
  3. 在特定场景中考虑使用 itertuples 进行非装箱。
  4. 尽可能避免 iterrow,因为它会引入性能瓶颈。
  5. 构建新的结构并连接以避免 row-对空数据帧进行逐行更新。

以上是为什么 Pandas `iterrows` 这么慢,如何提高性能?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn