Pandas 多進程處理數據,速度快了不少!

圖片

前言

python 有自己的多進包 multiprocessing 去實現並行計算,但在 pandas 處理數據中,使用 multiprocessing 並不好使,只聽見風扇轉啊轉,就不見運行完畢。

爲了提高一點數據清洗的速度,找到一個 pandas 多進程的方法,pandarallel 庫,做了一下測試。

小數據集(先試過了 1w)可能多進程還沒單進程快,因爲進程開啓關閉也要一點時間;於是我弄了 100w 數據來測試:

圖片

利用以上數據做以下處理:

  1. 剔除 titile,comment 兩列文本中的表情符號

  2. title,comment 兩列做一個分詞處理,覆蓋原來的列

單進程

圖片

圖片

在單進程的情況下,可以看到用時 294s,接近 5min 了。

多進程

multiprocessing 多進程寫法,這種寫法網上一搜一大把,代碼沒有錯,多進程任務可以執行。

例如 run_task 函數中的任務是爬蟲代碼時,沒有什麼問題,但如果是數據清洗的代碼,我測試就很久都跑不出來:

圖片

接下來換成 pandas 多進程 pandarallel 的寫法就可以:

圖片

圖片

可以看到改寫後時間用時 154s,2min30s,比單進程快了一倍。

關於 pandarallel  可以查看文檔:

https://github.com/nalepae/pandarallel/tree/v1.5.2

對應的多進程寫法函數對照表,pandas 中的 apply,applymap,map 三個函數的區別,寫對應的代碼:

圖片

源碼獲取

https://blog.csdn.net/zjkpy_5/article/details/123974556?spm=1001.2014.3001.5501

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/RCOq3naoZSQLat6BzO5aoA