日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】Pandas groupby加速处理数据

發布時間:2025/3/12 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】Pandas groupby加速处理数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用pandas的時候,經常會用到groupby這個函數來對數據進行分組統計,同時可以使用 apply函數很方便的對分組之后的數據進行處理。

def data_process(x):# processreturn ...result?=?df.groupby('user_id').apply(data_process)

使用joblib進行加速

但是如果數據非常多的時候(比如幾千萬條數據),運行的效率是比較低的,因為這個時候只使用了一個CPU線程,所以當數據非常多的時候,處理起來會很慢。這個時候CPU其他的核是空閑的,所以考慮使用joblib來多線程加速。

from joblib import Parallel, delayeddef data_process(x):# processreturn ...def applyParallel(dfGrouped, func):res = Parallel(n_jobs=4)(delayed(func)(group) for name, group in dfGrouped)return pd.concat(res)result?=?applyParallel(df.groupby('user_id'),?data_process)

使用pandarallel進行加速

除了使用joblib之外,還可以使用pandarallel進行加速,使用pandarallel無需編寫函數,只需要提前初始化pandarallel即可。

from pandarallel import pandarallel pandarallel.initialize(progress_bar=True) # 可選參數: # nb_workers:用于并行化的工作程序數。數值類型,如果未設置,則將使用所有可用的CPU。 # progress_bar:如果設置為,則顯示進度條True。(False默認為布爾) # verbose:詳細級別(2默認為int ) # 0-不顯示任何日志 # 1-僅顯示警告日志 # 2-顯示所有日志 # use_memory_fs:(None默認為布爾)如果設置為None且內存文件系統可用,Pandarallel將使用它在主進程和工作進程之間傳輸數據。 # 如果內存文件系統不可用,則Pandarallel將默認進行多處理數據傳輸(管道)。如果設置為True,則Pandarallel將使用內存文件系統在主進程和工作進程之間傳輸數據,SystemError如果內存文件系統不可用,則會引發。 # 如果設置為False,則Pandarallel將使用多處理數據傳輸(管道)在主進程和工作進程之間傳輸數據。def data_process(x):# processreturn ...result?=?df.groupby('user_id').parallel_apply(data_process)

需要說明的是,pandarallel目前只能在Linux和OS X上運行。使用內存文件系統(參數use_memory_fs控制)可以減少主進程與工作進程之間的數據傳輸時間,尤其是對于大數據而言。僅當目錄/dev/shm存在且用戶對其具有讀寫權限時,才認為內存文件系統可用。基本上,內存文件系統僅在某些Linux發行版(包括Ubuntu)上可用。

并行化具有成本(實例化新進程,通過共享內存發送數據等),因此,只有在要進行并行化的計算量足夠高的情況下,并行化才有效。對于很少的數據,使用并行化并不總是值得的。

參考:https://github.com/nalepae/pandaralle

往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件

本站qq群554839127,加入微信群請掃碼:

總結

以上是生活随笔為你收集整理的【Python】Pandas groupby加速处理数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。