收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

cuDF:加快数据处理流程的DataFrame库

[复制链接]
; ]8 U+ S/ i7 P, ]4 r
5 w0 M" K( G- d1 e( i% i* | b
$ Y0 |- M$ F3 }* h( ]* e* I* B4 W
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
( n0 a+ @ t' M1 Z- K. X6 [/ p
7 ?/ D o6 b- S0 t: j& a, w; K. k! ]
^1 U S) x1 }0 z, j
) {! G& e) Z4 u: i5 N

雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。

7 j- P F9 V+ u" H, ]% Y# L

cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。

6 h$ m7 `! S- S3 u; r ]

cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。

" c# e1 c4 @: {: Y$ r$ i7 P% k) j

例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:

" m0 p6 g a0 K: t# V) A

import cudf, io, requests

$ Q* w/ G1 m( V0 A

from io import StringIO

" i7 D* Z' J- a* ~2 L9 f: ^1 Y

url="https://github.com/plotly/datasets/raw/master/tips.csv"

* T: L4 P' E: a \ K( S4 `* y, v5 ^7 y0 b& _5 w# v

content = requests.get(url).content.decode(utf-8)

% ^+ f( G" T# S0 O% J) S

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100 & r n( c [5 p; ~9 i# p$ U0 C9 R5 `0 F1 S" T% r9 I4 V g# Q' |

# display average tip by dining party size

( s. N1 Y7 w9 M/ v* N, ^! F M% u

print(tips_df.groupby(size).tip_percentage.mean())

! F$ S( F0 P1 O6 k4 T 2 j9 h9 E7 c: o7 Q

得到的输出为:

7 A0 i* |5 z; Y6 z6 Z8 d " d9 _3 z& g- g' ^3 f9 I

size

% k; g1 L1 x0 s8 x : V" o7 P8 f* A& c, R$ Z# ?4 h

1    21.729201548727808

/ w# v. `. ^4 v6 p! @8 [ $ Q* c( M1 p5 a, [" T5 m9 R% {

2    16.571919173482897

, r2 l- V# C4 X, F% b/ B; i # ] M5 b, y* G8 g! Y! d

3    15.215685473711837

! d* W8 N9 T' O! `3 L 4 H, u8 H U9 B# x8 F+ g: {6 A& ~

4    14.594900639351332

Z/ f' s9 D; M- L# T$ z$ E- a, n( u ( X9 v, ~% t' o f @% ?, h2 S8 ]

5    14.149548965142023

) e& m b' e& a3 S. B v" h) M- ]; n3 f) n$ {: S, |0 M

6    15.622920072028379

, v0 p7 Y/ D4 u7 ^9 x i, {! a3 C; a4 m/ I. @2 E) D

Name: tip_percentage, dtype: float64

6 o* n: y4 e3 o/ I3 J3 R) ]* C& e2 D& ]

想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。

6 L2 X3 v$ t" q/ a+ n2 D

那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。

% X/ o u; N/ O1 V' }

安装

3 z `6 ?, W# O- A3 {3 v

conda

. O2 O9 d7 {0 y+ o

cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:

% J; q1 s4 E3 A0 N" N X9 z. Y& H6 h

# for CUDA 9.2

; v; D6 A3 C% c1 Y

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \

   cudf=0.6 python=3.6 cudatoolkit=9.2 2 \4 k/ ^: @- X. s 3 c7 Z6 T: P# {% D& l: X- d- k

# or, for CUDA 10.0

2 I% Z4 h1 L' j: R, a# o" I0 ~

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \

7 K U) T6 I7 Q4 o

   cudf=0.6 python=3.6 cudatoolkit=10.0

5 K3 P) H' ~# j% V4 n5 N9 r" ` 4 X- I T+ a0 t) ]2 i; t

我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。

3 K) A+ W& m- ?% n

Pip

L- E; Z0 K+ V) h( E( h

cuDF 也可以用 PyPi 安装。

0 z& E7 G6 `: p* J$ d, G/ f 3 q# Z- q% h0 s1 N6 R3 m, H* ]( {

# for CUDA 9.2

5 k, ^7 s" S6 `

python3.6 -m pip install cudf-cuda92==0.6

* ?* {9 S8 V6 K3 u 5 v5 b" }; y4 s( P" A x9 A3 W; v

# or, for CUDA 10.0

! I% G: C5 Q4 e9 T

python3.6 -m pip install cudf-cuda100==0.6

( H8 q, X" j- ^& V# u- z0 s1 q 4 {* i1 M% `, L; _2 J* R

注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。

- p6 c) s( e$ n6 L0 ]

via : https://github.com/rapidsai/cudf

: \3 y `) D, z

雷锋网雷锋网

" I2 _! B0 H3 r o# c# L6 b+ G2 c1 m$ w% ^6 n$ i: V . j9 e( {, ~7 l( z& n: c6 O C% s4 z4 P* n; o3 @/ Y + }/ K8 E% J, _# t2 {. p
0 U* r" `. E; G% a$ M
: z3 s4 }! I" N
. n2 |+ ?* d4 h" u1 Z) O+ s 4 G7 K) i; a' N/ r2 H 6 _ Z, q5 f6 {7 ?6 z. z. c7 R1 y5 Q% \2 V: l9 d6 v : i& K2 d6 x% X- w; d/ Y$ l
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
礼子
活跃在2026-4-7
快速回复 返回顶部 返回列表