6 @# [6 X/ N; N. e
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
* P$ V) N5 T0 \! H% E- Y
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
6 Z0 y( o; v$ j) C cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
% o( ^* E' |' e/ Y( J 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
: c: y: g) W2 H1 S( G% E
import cudf, io, requests
/ |1 E0 x) s; b$ Z2 z: \; t. {. ]
from io import StringIO
, B! |2 M' Y' m4 c) D8 s url="https://github.com/plotly/datasets/raw/master/tips.csv"
0 \4 d! N8 k6 j! z
4 K$ m: B# i3 g, H( k5 l: r1 d3 m content = requests.get(url).content.decode(utf-8)
9 J9 l- @' m) U2 @7 p6 C8 h
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
$ B/ _) H0 _3 }0 |6 f3 t5 r7 i
* x/ E9 S( K) o# W # display average tip by dining party size
2 ^/ @3 f( {+ |- {( @ print(tips_df.groupby(size).tip_percentage.mean())
* C. o0 C0 ]* d3 z5 e/ O
o& W* i" Y5 y8 m( C+ f' A 得到的输出为:
: {0 b: q1 z* E0 \9 R$ n% t. T, f. ]$ [9 C$ l/ v$ A* A# y; w9 | Z
size
- y- j; e8 p3 i9 n J: O5 N, {, Y; _: g
1 21.729201548727808
: h6 M6 V) p9 ?3 P2 T0 n
: `* T" N# Z; k& A( R/ \7 u 2 16.571919173482897
5 B8 G+ l, r# ? F0 ^2 }; s K+ m! s& }" i
3 15.215685473711837
) M: n! Y8 l# U! V; z& \. q! n
9 D z0 c9 R1 d( o8 I' q( W( }' O 4 14.594900639351332
* a x6 }1 n9 p! T; e1 N
4 i& U, P+ e8 B. s
5 14.149548965142023
' p+ V- Q! `: D. O2 u3 n2 k
1 g1 j3 J( Y, Q a! T8 t 6 15.622920072028379
( l- s1 ]8 @( x, I Q A
! R7 C$ W* B% o7 z
Name: tip_percentage, dtype: float64
: l) Y( }' r/ z" q( {7 Q h/ X
4 F$ G2 \6 N: P- o' R9 P
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
# S/ M& ?# l/ H: J' Z- _ 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
5 e5 _+ r$ ~: t 安装
* r! y ]( s8 B4 c. |; p- t conda
2 r2 k z) V7 x- b0 @6 a8 V cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
: Y8 S) v0 k+ e8 ]* Y4 B
; o7 |$ V' W! d2 H: ~+ m # for CUDA 9.2
, V% p3 @. J) N0 ]1 @/ A$ b
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
! w5 [- M( U. h9 N3 ?5 M; l. u8 u( i# ?, y+ z
# or, for CUDA 10.0
/ m2 e2 H1 A- S9 w. k% b) m$ O9 {
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
# Y7 K9 f) k: u2 ?# v3 J cudf=0.6 python=3.6 cudatoolkit=10.0
* V* R( p+ @6 \& ~: {
2 H4 ^' f3 I# ]9 o6 ~ 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
9 B1 m* Z \1 A! t' o- E Pip
; m5 V% M7 y7 L. G cuDF 也可以用 PyPi 安装。
2 C( X1 p9 @- M# t* m' x
C" y% w/ I& D" l/ x) T! i # for CUDA 9.2
- B$ F$ Z) y1 {8 z
python3.6 -m pip install cudf-cuda92==0.6
Y. y- I/ _. W* n) |- n
* N7 D: U6 N# l/ f( O% x f # or, for CUDA 10.0
8 o( r% R/ L) D. n
python3.6 -m pip install cudf-cuda100==0.6
! q P- R8 z0 q
1 l5 y8 G2 b, n 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
, `. {( c6 W! @9 @& e3 V
via : https://github.com/rapidsai/cudf
7 }2 B" ?+ G6 A$ j8 P" H 雷锋网雷锋网
9 U9 P7 H0 ` U$ o4 C4 [" n' E2 `. k
9 F' C% S4 G3 A F1 `3 K+ W4 v) Y+ A
- ?# i) Z9 H- L- O1 g! H9 S
/ O3 L, `+ C+ H/ t7 e7 W) z