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

[复制链接]
9 A* b( }. ^9 I7 }1 Z$ _* @7 e
S- N: ]% T1 g) m& Z" F/ N
) _& F+ {1 c+ B- t! y6 M, k2 |' w
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
7 T$ k7 K& t2 c/ d& X, J% y
/ p# r4 B$ i5 H" \5 M
3 g1 |1 o, y* c1 ?% P# X0 A* e2 z" T
1 n- C" p- Y5 Y" [8 B8 S) u9 p

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

% c+ A# q9 N4 ^; K

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

: M$ [+ u- H2 J6 Q4 \1 S

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

+ a$ r0 u; {5 J+ z9 Y$ n+ N# l2 l' w$ C

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

/ R3 W: [4 A) L

import cudf, io, requests

# y# @) q1 ^. m2 V

from io import StringIO

7 K+ v# j J+ d0 V

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

9 C& i7 w' N+ P# [- Y$ ^" h n0 k; G: ~2 C5 _/ ?. d

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

( p1 I) H; [1 q Q% D4 ?/ \

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100$ V' p6 Z& I- O- M& ^1 x' B1 F' d8 t# \ - F3 w* U. m( y+ r

# display average tip by dining party size

( F. o+ s7 V# q$ `7 E4 m

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

; `- V5 L: y4 S1 R% y2 A9 |' ~% j7 g$ S3 k

得到的输出为:

! w# ^% v3 x7 o6 n# ~* O- s1 O: _: p* v" V( A6 ~0 U C$ Z$ c2 k

size

1 W& C1 u8 r- G! P* u& n8 J6 J & ]6 q5 b( s. h! p* h* m1 d* T

1    21.729201548727808

3 y5 l+ H$ U9 m) @, \ : ~! U9 p9 X* R6 Y$ n4 V

2    16.571919173482897

& h8 C! O# i6 m1 D9 x1 ? v. h 3 N% M, F8 T t9 T) |- l. k

3    15.215685473711837

( Q& x) m% S. N l# J1 _* T" Z$ w9 y# G/ M# B1 ?. x. }

4    14.594900639351332

M7 Y% B; P* p7 \ r$ P A, ?# ~$ a) m, Z5 R

5    14.149548965142023

: k& m+ {' ^9 N2 q. H7 M 6 R# ?" H) v* ~, g `

6    15.622920072028379

% z! ]5 j- B$ ]* M( Q( z. a0 F! F0 J1 L- _4 P

Name: tip_percentage, dtype: float64

( h/ K9 D; q' h) o! \8 g C3 u" |# Q( _0 j+ h

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

0 m C8 w0 q& P

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

% I; V+ Q) U4 L

安装

% h. a5 _# f$ k: h0 @6 X# y

conda

1 Z: |0 \" ]' [- l

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

" B+ l! c2 z0 \8 \1 \. {; L# y8 l# ]% p- Y

# for CUDA 9.2

0 p5 C- x* Z' l0 p* G9 S, G1 b

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

   cudf=0.6 python=3.6 cudatoolkit=9.28 V1 z! u6 ]: r& I 8 O. l5 \6 h; @+ Y$ j9 X" d2 c. p

# or, for CUDA 10.0

% m* r! y, R: t

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

* L( ?# ?$ A) o2 T

   cudf=0.6 python=3.6 cudatoolkit=10.0

8 n" w9 o' D* ]0 B. w # \* J2 v7 v( L- F9 W# y6 o( Y

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

1 v0 e' @' X9 {# W' _7 v

Pip

% }: l' Y6 K: i, `3 f% [7 D

cuDF 也可以用 PyPi 安装。

1 y& X) i# p' D; z- D 7 j9 g' K' b; E9 N* J2 D: l/ k

# for CUDA 9.2

6 Z$ e& k3 O! J6 e

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

! Q" F5 j! K1 X+ U1 n6 n1 F 9 q X' D/ q$ q6 P

# or, for CUDA 10.0

% N9 G) S3 R; ~8 o$ v. [3 U% V! v' `

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

0 H* ~* ]4 y5 o3 C2 U " A, T& z! {1 q% W8 l2 O9 u' b

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

' t/ t& [! n! p# T2 B) E# Q

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

) Q3 R- D( I/ z2 L" m) J" G

雷锋网雷锋网

* n0 y; a& c; ~& O! P + ^8 _1 V) d+ y$ j- P9 w. B ! S6 y6 p7 ^" M " P1 x+ k* r7 @4 c( ]) k # V5 i5 a' b, }
2 Z- T* z; A1 ]
/ H9 n2 Q& z# q" ]( P0 ]6 s$ B
! ]! f$ d4 s0 B/ b( ^) P' v d: i$ o$ W/ h1 D5 F# j, y 9 \# G B4 ~% H, q) |3 P+ O1 N" t m2 ?) h) H0 f$ j * s7 f. v6 N, S7 @$ x1 \% M, u
回复

举报 使用道具

相关帖子

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