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

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

[复制链接]
$ B( X- Q7 F( Y% a2 b$ B- ^% ?0 e3 ^
, [* H9 p* s8 Q
1 F# \* a1 I4 i. o# n
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
% H% {4 {( y5 [* t$ m8 k
' Y7 M; [0 {) G4 G
7 o6 j% i& U: c S
6 }! m% z3 l; J

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

5 s7 h! G K n/ y+ g1 E+ s9 D

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

' a9 g* j1 o# D0 w! G

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

: e7 U; |1 U; i. z

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

# f8 B# d7 p* t% r3 k7 w

import cudf, io, requests

* g6 q+ A8 q" S: j* m* Z" X

from io import StringIO

/ H: {5 f/ ?! S. P# ~5 @/ `* F+ D" J, K

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

" N9 n X6 n2 q& [# {8 i8 A4 f & v1 l! d1 b1 F: m. t7 h4 O

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

: G2 w/ B# a; \! i' p

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100% p) f/ w3 w4 S7 Y$ y# P: V% ?9 l , r; j: N, H: G

# display average tip by dining party size

. N5 s( ]; P- t0 Z) D/ U

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

8 A; W6 S- e! K2 b7 f( G" `/ k# ]* x1 g/ C' _

得到的输出为:

$ A/ ]7 x# {; H" g' X3 I , K( B4 C0 h3 _2 ^ ?# S

size

9 \. _+ B7 U8 r. B v 5 D( R) F2 J% u. g$ T7 ^

1    21.729201548727808

( }& V4 k- S2 z+ F4 X 3 v4 y7 c/ [ D. S+ Y/ h

2    16.571919173482897

! R- l0 W0 b2 Z0 Y6 G9 o W& v+ k8 r! H; u c& b/ o

3    15.215685473711837

5 P5 r7 a, I0 o2 K 1 K3 j) E" X% i0 i* i" D

4    14.594900639351332

# p) `7 l/ S1 K/ T( B/ K. B; N9 Q, C

5    14.149548965142023

4 o: S) e% E* [1 v" ?, I: E % w# m; s. \$ \1 Z1 V) s

6    15.622920072028379

" e( D/ x1 X2 `( a% L0 {6 h6 _2 P: m0 F8 Y8 F4 F) `2 A4 M

Name: tip_percentage, dtype: float64

% X+ r# L0 E+ S" H7 Y) n. A/ F1 a + @ W3 M# C8 n3 q, S) {2 B- p

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

' V6 g3 J1 u; u, E P. H- E6 A% z

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

1 l' {: x' z! X5 p- \( R! B

安装

4 Z: S. m, ?: G. T

conda

% ?9 }! F* `% l& I7 L0 X% E3 R: l

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

: o1 m* r0 F G+ J4 r9 d1 i ) p" E3 L0 T: F4 P7 o- v5 M8 s

# for CUDA 9.2

/ m% ^8 U' v+ e! S

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

   cudf=0.6 python=3.6 cudatoolkit=9.2* T* N- w3 E6 m* F , S7 x/ o" g$ m7 C) c, y

# or, for CUDA 10.0

: Z, n$ Z3 T8 [9 c Q

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

9 k& R3 H5 N v! c# V5 [' q9 t# T

   cudf=0.6 python=3.6 cudatoolkit=10.0

# d5 i: H' t& v. P, Z/ U* k3 x 1 ]& F7 T- s W; c

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

b3 t; ^, o& D l0 e% `2 U$ ]7 E

Pip

r' Q A: M1 ~0 P3 p- t, a

cuDF 也可以用 PyPi 安装。

9 k6 J) X+ |$ f5 c1 y+ _0 K! Y# Q& A; t2 g( g: \

# for CUDA 9.2

$ k- Y! E3 v2 M# ^5 J9 D

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

6 Q3 `4 w$ R: |1 u 6 r$ d+ |2 g8 w( r

# or, for CUDA 10.0

8 f) M1 L* I* l a& `

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

( A7 J0 f0 u# D+ f5 i7 N + c' Y1 D3 O4 ?; @# e

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

5 \8 {; @: _3 v f) i3 L% N! q

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

! ?; W( @" G+ X& k

雷锋网雷锋网

9 z$ {' C5 K) Q3 k) F & t8 c" U5 {1 v 0 {+ t& Y; ^7 w2 W3 I* d2 V + C9 q: T1 x: U- B* C+ C& _- w . U. @( s! D1 i0 y+ A% O7 x2 [- j
0 g9 Q5 \* A7 \" M4 l
, }1 Y! d6 \" v% p/ H0 p7 i
" J, m3 N7 |2 y6 A9 }$ f ; ?, y& T0 i( H, S3 Q2 `) l R6 O/ M6 N/ a/ w+ x! D; G2 a8 h M ; ~ L4 m2 S" T 5 m* ~ a4 |4 f* y
回复

举报 使用道具

相关帖子

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