了解Pandas 中s.replace 和其他值替換方法之間的表現差距
使用字典替換Pandas 系列中的值是一個Pandas 系列中的值是一個共同任務。然而,與列表推導等替代方法相比,s.replace(此操作的建議方法)通常表現出明顯較慢的性能。
s.replace 緩慢的根本原因
s.replace 除了簡單的字典映射之外還執行其他處理。它處理邊緣情況和罕見情況,這需要更複雜和耗時的操作。具體來說,s.replace 將字典轉換為列表,檢查巢狀字典,並迭代列表以將鍵和值提供給單獨的替換函數。這種開銷會顯著減慢流程。
最佳化值替換
要最佳化值替換,應遵循以下準則:
基準測試
基準測試結果顯示了各種替換方法之間的性能差異:
測試1 -完整Map
%timeit df['A'].replace(d) # 1.98s %timeit df['A'].map(d) # 84.3ms %timeit [d[i] for i in lst] # 134ms
測試2 -部分Map
%timeit df['A'].replace(d) # 20.1ms %timeit df['A'].map(d).fillna(df['A']).astype(int) # 111ms %timeit [d.get(i, i) for i in lst] # 243ms
這些結果清楚地表明s.map 及其修改版本的執行速度明顯快於s .replace,特別是當系列值的很大一部分被字典鍵覆蓋時。
以上是為什麼 Pandas 的 `s.replace` 基於字典的值替換速度很慢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!