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