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.2
8 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, }