首頁 >後端開發 >Python教學 >為什麼 Pandas `iterrows` 這麼慢,如何提升效能?

為什麼 Pandas `iterrows` 這麼慢,如何提升效能?

Patricia Arquette
Patricia Arquette原創
2024-12-26 16:58:10864瀏覽

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