首頁  >  文章  >  後端開發  >  np.vectorize 與 Pandas apply:對於大型資料集,哪個更快?

np.vectorize 與 Pandas apply:對於大型資料集,哪個更快?

DDD
DDD原創
2024-10-27 07:16:02539瀏覽

np.vectorize vs. Pandas apply: Which is Faster for Large Datasets?

np.vectorize 與 Pandas apply:效能比較

Pandas 使用者通常會遇到基於現有列建立新列的需要。用於此任務的兩種流行方法是 Pandas 的 apply 函數和 NumPy 的向量化。然而,這些方法之間的速度差異是一個尚未徹底研究的問題。

預期行為

根據觀察和實驗,預期np.vectorize 明顯快於 df.apply,特別是對於較大的資料集。

速度差異的原因

效能差距的主要原因在於每種方法的本質。

df.apply 的工作原理是迭代 DataFrame 中的每一行並評估給定的函數。這涉及到 Pandas 系列物件的建立和操作,由於它們的索引、值和屬性,這些物件會帶來很大的開銷。

另一方面,np.vectorize 將輸入函數轉換為通用函數(ufunc )直接對 NumPy 陣列進行運算。這允許進行高度優化的向量化計算,並避免 Python 層級的循環。

效能基準

該問題的實驗展示了 np.對 df.apply 進行向量化以適應不同的資料集大小。對於具有 100 萬行的 DataFrame,np.vectorize 的速度快了 25 倍以上。

其他注意事項

雖然np.vectorize 通常更快,有一些重要的注意事項需要考慮:

  • 對於小型資料集,設定向量化計算的開銷可能會抵消任何效能提升。
  • 對於不容易向量化的操作,例如條件賦值,df.apply 可能是更好的選擇。
  • 透過 NumPy 運算或 numba 最佳化進行真正的向量化可以提供更高的效率。

以上是np.vectorize 與 Pandas apply:對於大型資料集,哪個更快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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