rapidsai/cudf
GitHub: rapidsai/cudf
cuDF是NVIDIA RAPIDS生态中的GPU加速DataFrame库,提供与pandas兼容的API,让大规模表格数据处理获得GPU带来的显著性能提升。
Stars: 9550 | Forks: 1026
#
cuDF - 一个用于表格数据处理的 GPU 加速 DataFrame 库
cuDF(发音为 "KOO-dee-eff")是一个基于 [Apache 2.0 许可证](LICENSE)的 GPU 加速 DataFrame 库,用于表格数据处理。cuDF 库是 [RAPIDS](https://rapids.ai/) GPU 加速数据科学库套件的一部分。
## 关于
cuDF 由多个库组成,包括:
* [libcudf](https://docs.rapids.ai/api/cudf/stable/libcudf_docs/):一个 CUDA C++ 库,包含符合 [Apache Arrow](https://arrow.apache.org/) 标准的数据结构和用于表格数据的基础算法。
* [pylibcudf](https://docs.rapids.ai/api/cudf/stable/pylibcudf/):一个 Python 库,为 libcudf 提供 [Cython](https://cython.org/) 绑定。
* [cudf](https://docs.rapids.ai/api/cudf/stable/user_guide/):一个 Python 库,提供
- 一个镜像 [pandas](https://pandas.pydata.org/) API 的 DataFrame 库
- 一个零代码更改的加速器 [cudf.pandas](https://docs.rapids.ai/api/cudf/stable/cudf_pandas/),用于现有的 pandas 代码。
* [cudf-polars](https://docs.rapids.ai/api/cudf/stable/cudf_polars/):一个为 [Polars](https://pola.rs/) 提供 GPU 引擎的 Python 库
* [dask-cudf](https://docs.rapids.ai/api/dask-cudf/stable/):一个为 [Dask](https://www.dask.org/) DataFrames 提供 GPU 后端的 Python 库
使用 cuDF 的知名项目包括:
* [Spark RAPIDS](https://github.com/NVIDIA/spark-rapids):[Apache Spark](https://spark.apache.org/) 的 GPU 加速器插件
* [Velox-cuDF](https://github.com/facebookincubator/velox/blob/main/velox/experimental/cudf/README.md):一个 [Velox](https://velox-lib.io/) 扩展模块,用于在 GPU 上执行 Velox 计划
* [Sirius](https://www.sirius-db.com/):一个原生 GPU SQL 引擎,为 [DuckDB](https://duckdb.org/) 等库提供扩展
## 安装
### 系统要求
操作系统、GPU 驱动程序和支持的 CUDA 版本信息可以在 [RAPIDS 安装指南](https://docs.rapids.ai/install/#system-req)中找到。
### pip
每个 cudf 库的稳定版本均可在 PyPI 上获取。从 PyPI 安装时,您需要将已安装的 CUDA 版本的主要版本号与 `-cu##` 后缀进行匹配。
每个库的开发版本均可作为夜间版本(nightly release)通过包含 `-i https://pypi.anaconda.org/rapidsai-wheels-nightly/simple` 索引获取。
```
# CUDA 13
pip install libcudf-cu13
pip install pylibcudf-cu13
pip install cudf-cu13
pip install cudf-polars-cu13
pip install dask-cudf-cu13
# CUDA 12
pip install libcudf-cu12
pip install pylibcudf-cu12
pip install cudf-cu12
pip install cudf-polars-cu12
pip install dask-cudf-cu12
```
### conda
每个 cudf 库的稳定版本均可通过指定 `-c rapidsai` 频道,使用 conda 包管理器进行安装。
每个库的开发版本均可作为夜间版本(nightly release)通过指定 `-c rapidsai-nightly` 频道来获取。
```
conda install -c rapidsai libcudf
conda install -c rapidsai pylibcudf
conda install -c rapidsai cudf
conda install -c rapidsai cudf-polars
conda install -c rapidsai dask-cudf
```
### 源码
要从源码安装 cuDF,请遵循详述如何设置构建环境的[贡献指南](CONTRIBUTING.md#setting-up-your-build-environment)。
## 示例
以下示例展示了读取 parquet 文件、删除具有空值的缺失行以及对数据执行 groupby 聚合操作。
### cudf
`import cudf`,其 API 与 pandas 大致相似。
```
import cudf
df = cudf.read_parquet("data.parquet")
df.dropna().groupby(["A", "B"]).mean()
```
### cudf.pandas
对于一个包含 pandas 代码的 Python 文件:
```
import pandas as pd
df = pd.read_parquet("data.parquet")
df.dropna().groupby(["A", "B"]).mean()
```
通过使用 `-m cudf.pandas` 调用 `python` 来使用 cudf.pandas。
```
$ python -m cudf.pandas script.py
```
如果在交互式 Jupyter 环境中运行 pandas 代码,请在导入 pandas 之前调用 `%load_ext cudf.pandas`。
```
In [1]: %load_ext cudf.pandas
In [2]: import pandas as pd
In [3]: df = pd.read_parquet("data.parquet")
In [4]: df.dropna().groupby(["A", "B"]).mean()
```
### cudf-polars
使用 Polars 的 [lazy API](https://docs.pola.rs/user-guide/lazy/),在调用 `collect` 时使用 `engine="gpu"` 以在 GPU 上运行该操作。
```
import polars as pl
lf = pl.scan_parquet("data.parquet")
lf.drop_nulls().group_by(["A", "B"]).mean().collect(engine="gpu")
```
## 问题与讨论
对于 Bug 报告或功能请求,请在 GitHub issue 跟踪器上[提交 issue](https://github.com/rapidsai/cudf/issues/new/choose)。
有关 cuDF 和 GPU 数据处理的问题或讨论,请随时在 [RAPIDS Slack](https://rapids.ai/slack-invite) 工作区发帖。
## 贡献
cuDF 欢迎社区贡献!请参阅我们的[cuDF 贡献指南](CONTRIBUTING.md)以获取更多信息。
cuDF - 一个用于表格数据处理的 GPU 加速 DataFrame 库标签:Apache Arrow, Apache Spark, C++, CUDA, Cython, Dask, DataFrame库, ETL, JavaCC, Pandas加速器, Polars, Pylibcudf, Python, SQL引擎, Vectored Exception Handling, 代码示例, 大数据, 开源库, 搜索引擎爬虫, 数据分析, 数据擦除, 数据清洗, 数据科学, 无后门, 机器学习基础库, 目录扫描, 表格数据, 资源验证, 逆向工具, 零代码修改, 高性能计算