Pandas 是最受歡迎的庫之一,當我在尋找一種更簡單的方法來加速其性能時,我發現了 FireDucks 並對它產生了興趣!
Pandas 程式可能會遇到嚴重的效能問題,這取決於其編寫方式。然而,作為一名數據科學家,我想花越來越多的時間分析數據,而不是提高程式碼效能。因此,如果它能夠執行諸如交換進程順序並自動加速程式效能之類的事情,那就太好了。例如,Process A =>Process B 會比較慢,所以我們將其替換為 Process B =>Process A。 (當然,結果保證是一樣的。)據說資料科學家花費了大約 45%他們準備資料的時間,當我考慮做一些事情來加速這個過程時,我遇到了一個名為 FireDucks 的模組。
從 FireDucks 文件來看,它似乎只支援 Linux 平台。由於我在我的主機上使用 Windows,因此我想從 WSL2(Windows Subsystem for Linux)嘗試一下,這是一個可以在 Windows 上運行 Linux 的環境。
我嘗試的環境如下
WSL 是在以下 Microsoft 文件的幫助下安裝的; Linux 發行版是 Ubuntu 22.04.1 LTS。
然後實際安裝FireDucks。不過安裝起來非常容易。
pip install fireducks
安裝 FireDucks(以及 pyarrow、pandas 和其他庫)需要幾分鐘時間。
我嘗試執行下面的程式碼,載入速度非常快,pandas 花了 4 秒,fireDucks 只花了 74.5 ns。
# 1. analysis based on time period and creative duration # convert timestamp to date/time object df['timestamp_converted'] = pd.to_datetime(df['timestamp'], unit='s ') # define time period def get_part_of_day(hour): if 5所有這些數據預處理和分析在 pandas 中大約需要 8 秒,而使用 FireDucks 時可以在 4 秒內完成。幾乎可以實現2倍的加速。
提高性能
使用pandas最有壓力的事情之一是載入大數據集時的等待,然後我必須等待像groupby這樣的複雜操作。另一方面,由於FireDucks進行惰性評估,加載本身根本不需要時間,因此在需要的地方進行處理,我覺得這非常重要,大大減少了總等待時間。
至於其他性能,據該組織官方宣布,與 pandas 相比,似乎已經實現了高達 16 倍的速度提升。 (下次我將與各種競爭庫進行效能比較。)
零學習成本
無需考慮任何事情就能遵循精確的 pandas 符號的能力是一個巨大的優勢。除了FireDucks之外,還有其他資料幀加速庫,但它們學習成本太高且太容易被遺忘。
例如,如果你想添加帶有極坐標的列,你必須這樣寫。
# pandas df["new_col"] = df["A"] 1 # polars df = df.with_columns((pl.col("A") 1).alias("new_col"))幾乎不需要更改現有程式碼
我有幾個 ETL 和其他使用 pandas 的項目,如果僅通過安裝 FireDucks 並替換 import 語句就能看到性能改進,那就太好了。
如果您想進一步添加,請隨時在下面評論。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3