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