首頁 >後端開發 >Python教學 >在 Pandas DataFrame 中建立新列哪種方法比較快:Pandas Apply 或 NumPy Vectorize?

在 Pandas DataFrame 中建立新列哪種方法比較快:Pandas Apply 或 NumPy Vectorize?

Linda Hamilton
Linda Hamilton原創
2024-10-26 14:40:03800瀏覽

Which Method is Faster for Creating New Columns in a Pandas DataFrame: Pandas Apply or NumPy Vectorize?

Pandas apply 與NumPy vectorize 在建立列時的效能注意事項

雖然Pandas apply 被廣泛使用,但在建立列時其效能落後於NumPy vectorize來自現有欄位的新欄位。這種差異歸因於這樣一個事實:apply 函數是 Python 層級的循環,會產生大量開銷。相較之下,向量化將輸入函數轉換為通用函數,顯著提高了效率。

效能基準

比較Python等級的循環並應用raw=True,我們觀察:

  • 使用zip 進行映射、列表理解和矢量化表現出相似的性能。
  • 使用 raw=True 的應用比不使用 raw=True 的速度顯著更快。

真正的向量化

但是,apply 和vectorize 都被真正的向量化操作(例如np.where)所掩蓋,這些操作在NumPy數組上按元素執行計算。這種方法速度明顯更快,無需循環。

進一步的效能注意事項

對於關鍵瓶頸,請考慮 numba,這是一個將 Python 函數編譯為高度最佳化的 C 語言的工具程式碼。使用 numba,可以進一步加速運算。

結論

當從現有欄位建立新欄位時,NumPy 向量化由於其原生向量化而提供了比 Pandas apply 更優越的效能能力。為了獲得最佳效率,應在適用的情況下採用真正的向量化。

以上是在 Pandas DataFrame 中建立新列哪種方法比較快:Pandas Apply 或 NumPy Vectorize?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn