為什麼 Pandas 系列 `s.replace` 透過字典替換值比 `s.map` 慢?

Linda Hamilton
發布: 2024-11-13 16:21:02
原創
144 人瀏覽過

Why is Pandas series `s.replace` slower than `s.map` for replacing values through dictionaries?

透過字典高效率地取代Pandas 系列中的值

經常透過字典取代Pandas 系列中的值(s.replace(d))遇到效能瓶頸,使其比列表理解方法慢得多。雖然 s.map(d) 提供了可接受的效能,但它僅適用於在字典鍵中找到所有系列值的情況。

了解效能差距

主要原因s.replace 緩慢的原因在於其多方面的功能。與 s.map 不同,它處理通常需要更細緻處理的邊緣情況和罕見情況。

最佳方式當所有值都可以映射時使用s.map(d)。

使用 s.map(d).fillna(s['A'] ).astype(int) 當超過 5% 的值可以對應。

字典中的幾個值:

  • 當字典中存在的值少於5% 時,使用s.replace(d)字典。

基準測試結果

廣泛的測試證實了性能差異:
  • 完整地圖:

s.replace:1.98 秒

s.map:84.3毫秒

列表理解:134 毫秒

    部分映射:
  • 部分映射:

部分映射:

    部分圖. :20.1 毫秒
  • s.map.fillna.astype: 111 毫秒
  • 列表理解:243 毫秒

解釋

s.replace 的緩慢源於其複雜的內部架構。它涉及:

    將字典轉換為列表
  • 迭代列表並檢查嵌套字典
  • 將鍵和值的迭代器傳遞給替換函數
相較之下,s.map 的程式碼明顯精簡,結果更優表演。

以上是為什麼 Pandas 系列 `s.replace` 透過字典替換值比 `s.map` 慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板