cuDF (Pandas GPU 平替),用于加載、連接、聚合、過濾和其他數(shù)據(jù)操作。
cuDF介紹
cuDF是一個(gè)基于Apache Arrow列內(nèi)存格式的Python GPU DataFrame庫,用于加載、連接、聚合、過濾和其他數(shù)據(jù)操作。cuDF還提供了類似于pandas的API。
相關(guān)框架介紹
cuDF:cuDF是一個(gè)Python GPU DataFrame庫,它基于Apache Arrow的列式內(nèi)存格式,用于加載、連接、聚合、過濾和以類似pandas的DataFrame風(fēng)格API操縱表格數(shù)據(jù)。它允許數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家通過類似于pandas的API輕松加速其工作流程,而無需深入研究CUDA編程的細(xì)節(jié)。cuDF的設(shè)計(jì)旨在在GPU上處理大規(guī)模數(shù)據(jù)集,提供了對(duì)數(shù)據(jù)處理任務(wù)的高性能支持。
Dask:Dask是一個(gè)靈活的Python并行計(jì)算庫,使得在工作流程中平滑而簡單地實(shí)現(xiàn)規(guī)?;?。在CPU上,Dask使用Pandas來并行執(zhí)行DataFrame分區(qū)上的操作。它允許用戶以更大規(guī)模處理數(shù)據(jù),充分發(fā)揮計(jì)算資源,而無需對(duì)代碼進(jìn)行大規(guī)模更改。
Dask-cuDF:Dask-cuDF在需要的情況下擴(kuò)展Dask,以允許其DataFrame分區(qū)使用cuDF GPU DataFrame而不是Pandas DataFrame進(jìn)行處理。例如,當(dāng)調(diào)用dask_cudf.read_csv(...)時(shí),集群的GPU通過調(diào)用cudf.read_csv()來執(zhí)行解析CSV文件的工作。這使得在GPU上利用cuDF的高性能數(shù)據(jù)處理能力,從而加速大規(guī)模數(shù)據(jù)處理任務(wù)。
cuDF和Pandas比較
cuDF是一個(gè)DataFrame庫,它與Pandas API密切匹配,但直接使用時(shí)并不是Pandas的完全替代品。在API和行為方面,cuDF和Pandas之間存在一些差異。以下是cuDF和Pandas之間的相似之處和差異的對(duì)比:
支持的操作:
cuDF支持許多與Pandas相同的數(shù)據(jù)結(jié)構(gòu)和操作,包括Series、DataFrame、Index等,以及它們的一元和二元操作、索引、過濾、連接、分組和窗口操作等。
數(shù)據(jù)類型:
cuDF支持Pandas中常用的數(shù)據(jù)類型,包括數(shù)值、日期時(shí)間、時(shí)間戳、字符串和分類數(shù)據(jù)類型。此外,cuDF還支持用于十進(jìn)制、列表和“結(jié)構(gòu)”值的特殊數(shù)據(jù)類型。
缺失值:
與Pandas不同,cuDF中的所有數(shù)據(jù)類型都是可為空的,意味著它們可以包含缺失值(用cudf.NA表示)。
迭代:
在cuDF中,不支持對(duì)Series、DataFrame或Index進(jìn)行迭代。因?yàn)樵贕PU上迭代數(shù)據(jù)會(huì)導(dǎo)致極差的性能,GPU優(yōu)化用于高度并行操作而不是順序操作。
結(jié)果排序:
默認(rèn)情況下,cuDF中的join(或merge)和groupby操作不保證輸出排序。與Pandas相比,需要顯式傳遞sort=True或在嘗試匹配Pandas行為時(shí)啟用mode.pandas_compatible選項(xiàng)。
浮點(diǎn)運(yùn)算:
cuDF利用GPU并行執(zhí)行操作,因此操作的順序不總是確定的。這影響浮點(diǎn)運(yùn)算的確定性,因?yàn)楦↑c(diǎn)運(yùn)算是非關(guān)聯(lián)的。在比較浮點(diǎn)結(jié)果時(shí),建議使用cudf.testing模塊提供的函數(shù),允許您根據(jù)所需的精度比較值。
列名:
與Pandas不同,cuDF不支持重復(fù)的列名。最好使用唯一的字符串作為列名。
沒有真正的“object”數(shù)據(jù)類型:
與Pandas和NumPy不同,cuDF不支持“object”數(shù)據(jù)類型,用于存儲(chǔ)任意Python對(duì)象的集合。
.apply()函數(shù)限制:
cuDF支持.apply()函數(shù),但它依賴于Numba對(duì)用戶定義的函數(shù)(UDF)進(jìn)行JIT編譯并在GPU上執(zhí)行。這可以非??焖?,但對(duì)UDF中允許的操作施加了一些限制。
何時(shí)使用cuDF和Dask-cuDF
cuDF:
當(dāng)您的工作流在單個(gè)GPU上足夠快,或者您的數(shù)據(jù)在單個(gè)GPU的內(nèi)存中輕松容納時(shí),您會(huì)希望使用cuDF。
當(dāng)數(shù)據(jù)量不大,可以在單個(gè)GPU內(nèi)存中處理時(shí),cuDF提供了對(duì)單個(gè)GPU上高性能數(shù)據(jù)操作的支持。
Dask-cuDF:
當(dāng)您希望在多個(gè)GPU上分布您的工作流程時(shí),或者您的數(shù)據(jù)量超過了單個(gè)GPU內(nèi)存的容量,或者希望同時(shí)分析許多文件中分布的數(shù)據(jù)時(shí),您會(huì)希望使用Dask-cuDF。
Dask-cuDF允許您在分布式GPU環(huán)境中進(jìn)行高性能的數(shù)據(jù)處理,特別是當(dāng)數(shù)據(jù)集太大,無法容納在單個(gè)GPU內(nèi)存中時(shí)。
cuDF代碼案例
審核編輯:湯梓紅
-
gpu
+關(guān)注
關(guān)注
28文章
4729瀏覽量
128890 -
編程
+關(guān)注
關(guān)注
88文章
3614瀏覽量
93685 -
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
40121 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84627
原文標(biāo)題:再見Pandas,又一數(shù)據(jù)處理神器!
文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論