Pandas 多進程處理數據,速度快了不少!
前言
python 有自己的多進包 multiprocessing 去實現並行計算,但在 pandas 處理數據中,使用 multiprocessing 並不好使,只聽見風扇轉啊轉,就不見運行完畢。
爲了提高一點數據清洗的速度,找到一個 pandas 多進程的方法,pandarallel 庫,做了一下測試。
小數據集(先試過了 1w)可能多進程還沒單進程快,因爲進程開啓關閉也要一點時間;於是我弄了 100w 數據來測試:
利用以上數據做以下處理:
-
剔除 titile,comment 兩列文本中的表情符號
-
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