API 参考#
Dask cuDF 实现了 Dask-DataFrame API,使用 cudf
对象代替 pandas
对象。正如介绍中所建议的,使用 dask_cudf
的最佳方法是使用 Dask DataFrame API,并将后端设置为 cudf。
>>> import dask
>>> dask.config.set({"dataframe.backend": "cudf"})
本页的其余部分文档化了您可能明确使用 dask_cudf
的 API。
创建和存储 DataFrames#
与 Dask 类似,Dask-cuDF 支持从各种存储格式创建 DataFrames。除了那里文档化的方法之外,Dask-cuDF 还提供了一些 cuDF 特定的方法。
- dask_cudf.from_cudf(data, npartitions=None, chunksize=None, sort=True, name=None)#
从
cudf.DataFrame
创建dask.dataframe.DataFrame
。此函数是
dask.dataframe.from_pandas()
的一个轻量级包装,接受相同的参数(如下所述),不同之处在于它操作的是 cuDF 对象而不是 pandas 对象。从 Pandas DataFrame 构造 Dask DataFrame
这将内存中的 Pandas dataframe 分割成几个部分,并从这些部分构造一个 dask.dataframe,以便 Dask.dataframe 可以并行操作。默认情况下,输入的 dataframe 将按索引排序,以生成清晰划分的分区(具有已知划分)。要保留输入顺序,请确保输入索引是单调递增的。
sort=False
选项也将避免重新排序,但不会导致已知划分。- 参数:
- datapandas.DataFrame or pandas.Series
用于构造 Dask DataFrame/Series 的 DataFrame/Series
- npartitionsint, 可选, 默认 1
要创建的索引分区数。请注意,如果
data.index
中存在重复值或元素不足,输出的分区数可能少于请求的数量。- chunksizeint, 可选
每个索引分区期望使用的行数。请注意,根据 dataframe 的大小和索引,实际分区大小可能会有所不同。
- sort: bool
首先按索引对输入进行排序,以获得清晰划分的分区(具有已知划分)。如果为 False,则输入将不排序,所有划分都将设置为 None。默认为 True。
- name: string, 可选
dataframe 的可选键名。默认为对输入进行哈希
- 返回:
- dask.DataFrame or dask.Series
沿索引分区的 dask DataFrame/Series
- 引发:
- TypeError
如果传入的不是
pandas.DataFrame
或pandas.Series
。
另请参阅
dask.dataframe.from_array
从具有 record dtype 的数组构造 dask.DataFrame
dask.dataframe.read_csv
从 CSV 文件构造 dask.DataFrame
示例
>>> from dask.dataframe import from_pandas >>> df = pd.DataFrame(dict(a=list('aabbcc'), b=list(range(6))), ... index=pd.date_range(start='20100101', periods=6)) >>> ddf = from_pandas(df, npartitions=3) >>> ddf.divisions (Timestamp('2010-01-01 00:00:00'), Timestamp('2010-01-03 00:00:00'), Timestamp('2010-01-05 00:00:00'), Timestamp('2010-01-06 00:00:00')) >>> ddf = from_pandas(df.a, npartitions=3) # Works with Series too! >>> ddf.divisions (Timestamp('2010-01-01 00:00:00'), Timestamp('2010-01-03 00:00:00'), Timestamp('2010-01-05 00:00:00'), Timestamp('2010-01-06 00:00:00'))
对于 Dask-cuDF 不直接支持的磁盘数据,我们建议使用以下方法之一:
Dask 的数据读取设施,然后使用
dask.dataframe.DataFrame.to_backend()
并设置"cudf"
来获取 Dask-cuDF 对象