基於Rust的資料框架庫Polars會取代Pandas嗎?

banq發表於2022-05-26

Polars 是一個為 Python 和 Rust 提供記憶體資料幀的開源專案。儘管它還很年輕(它的第一次提交是在僅僅兩年前,在 COVID-19 大流行期間),但由於其“閃電般”的效能和 API 的表現力,它已經獲得了廣泛的歡迎。

Polars 最有趣的事情之一是它提供了兩種操作模式:
  • Eager模式有點類似於 pandas 的工作方式:操作立即執行,其結果可在記憶體中使用。然而,鏈中的每個操作都需要分配一個 DataFrame,這並不理想。
  • 另一方面,惰性模式構建了一個儘可能利用並行性的最佳化查詢計劃:Polars 應用了幾種簡化技術並推動計算以儘可能加快執行時間。


Polars 的另一個秘訣是 Apache Arrow。雖然其他庫使用 Arrow 來讀取 Parquet 檔案,但 Polars 與之緊密結合:透過使用Arrow 記憶體格式的 Rust 原生實現來進行列式儲存,Polars 可以利用高度最佳化的 Arrow 資料結構並專注於資料操縱操作。

如果您正在為大於 RAM 的資料集尋找終極解決方案,Polars 可能不適合您。它的惰性處理能力可以帶你走很遠,但在某些時候你將不得不面對這樣一個事實,Polars 是一個記憶體資料幀庫,類似於 pandas。

總之:
  • 如果您願意學習不同但功能強大的新 API,如果您的資料適合記憶體,如果您的工作流程涉及大量列表列操作,並且通常如果您想探索比 pandas 更快的替代方案,請使用 Polars。
  • 如果您的資料比 RAM 大得多,如果您正在尋找快速遷移大型 pandas 程式碼庫的解決方案,或者如果您正在尋找久經考驗的舊庫,請不要使用 Polars。


詳細點選標題

相關文章