用法:
dask.dataframe.read_parquet(path, columns=None, filters=None, categories=None, index=None, storage_options=None, engine='auto', gather_statistics=None, ignore_metadata_file=False, metadata_task_size=None, split_row_groups=None, chunksize=None, aggregate_files=None, **kwargs)
将 Parquet 文件读入 Dask DataFrame
这会将 Parquet 数据目录读入 Dask.dataframe,每个分区一个文件。如果存在,它会在已排序的列中选择索引。
- path:字符串或列表
数据的源目录,或各个 parquet 文件的路径。使用
s3://
之类的协议作为前缀,以从替代文件系统中读取。要从多个文件中读取,您可以传递一个 globstring 或路径列表,但需要注意的是它们都必须具有相同的协议。- columns:str 或列表,默认无
作为输出中的列读入的字段名称。默认情况下,将读取所有非索引字段(由 pandas parquet 元数据确定,如果存在)。提供单个字段名称而不是列表以将数据作为系列读取。
- filters:Union[List[Tuple[str, str, Any]], List[List[Tuple[str, str, Any]]]],默认无
要应用的过滤器列表,例如
[[('col1', '==', 0), ...], ...]
。除非还指定了engine="pyarrow-dataset"
,否则使用此参数不会导致对最终分区进行逐行过滤。对于其他引擎,过滤仅在分区级别执行,即防止加载某些row-groups 和/或文件。对于“pyarrow” 引擎,谓词可以用析取范式 (DNF) 表示。这意味着最里面的元组说明了一个单列谓词。这些内部谓词与 AND 连词组合成一个更大的谓词。然后,outer-most 列表将所有组合过滤器与 OR 分离组合。
谓词也可以表示为 List[Tuple]。这些被评估为 AND 连词。要在预测中表达 OR,必须使用(首选 “pyarrow”)List[List[Tuple]] 表示法。
请注意,“fastparquet” 引擎当前不支持使用 DNF 过滤分区列(需要 List[Tuple])。
- index:str,列表或假,默认无
用作输出帧索引的字段名称。默认情况下,将从 pandas parquet 文件元数据(如果存在)推断。使用 False 将所有字段读取为列。
- categories:列表或字典,默认无
对于此处列出的任何字段,如果 parquet 编码为 Dictionary,则将使用 dtype 类别创建列。仅当保证列在所有row-groups 中都被编码为字典时才使用。如果是列表,则假设最多 2**16-1 个标签;如果是 dict,请指定预期的标签数量;如果没有,将为 dask/fastparquet 写入的数据自动加载类别,否则不会。
- storage_options:字典,默认无
要传递到 file-system 后端的键/值对(如果有)。
- open_file_options:字典,默认无
当每个 parquet 数据文件打开以供读取时,要传递给
AbstractFileSystem.open
的键/值参数。可以通过在"precache_options"
键下添加{"method": "parquet"}
来启用远程文件系统(例如 S3、GCS)的实验性(优化)“precaching”。此外,可以使用自定义 file-open 函数(而不是AbstractFileSystem.open
),方法是在"open_file_func"
键下指定所需的函数。- engine:str,默认 ‘auto’
要使用的 Parquet 阅读器库。选项包括:‘auto’, ‘fastparquet’, and ‘pyarrow’。默认为 ‘auto’,如果安装了 fastparquet,则选择 FastParquetEngine(否则选择 ArrowDatasetEngine)。如果指定了‘pyarrow’,将使用 ArrowDatasetEngine(利用 pyarrow.dataset API)。注意:“pyarrow-legacy”选项 (ArrowLegacyEngine) 已弃用。
- gather_statistics:布尔值,默认无
收集每个数据集分区的统计信息。默认情况下,只有在 _metadata 文件可用时才会这样做。否则,只有在 True 时才会收集统计信息,因为每个文件的页脚都会被解析(这在某些系统上非常慢)。
- ignore_metadata_file:布尔值,默认为 False
是否忽略全局
_metadata
文件(存在时)。如果True
或全局_metadata
文件丢失,则可以并行收集和处理镶木 floor 元数据。当前仅ArrowDatasetEngine
支持并行元数据处理。- metadata_task_size:int,默认可配置
如果 parquet 元数据是并行处理的(参见上面的
ignore_metadata_file
说明),则此参数可用于指定 Dask 图中每个任务要处理的数据集文件的数量。如果此参数设置为0
,将禁用并行元数据处理。可以分别使用“metadata-task-size-local” 和“metadata-task-size-remote” 配置字段指定本地和远程文件系统的默认值(请参阅“dataframe.parquet”)。- split_row_groups:bool 或 int,默认无
如果 _metadata 文件可用或数据集由单个文件组成,则默认为 True(否则默认为 False)。如果为 True,则每个输出数据帧分区将对应一个 parquet-file row-group。如果为 False,每个分区将对应一个完整的文件。如果给定一个正整数值,则每个数据帧分区将对应于该数量的镶木 floor row-groups(或更少)。
- chunksize:int 或 str,默认无
每个输出
DataFrame
分区的所需大小,以总(未压缩)镶木 floor 存储空间计。如果指定,相邻的 row-groups 和/或文件将被聚合到同一输出分区中,直到累积的total_byte_size
parquet-metadata 统计数据达到此值。使用aggregate_files
启用/禁用inter-file 聚合。- aggregate_files:bool 或 str,默认无
不同的文件路径是否可以聚合到相同的输出分区中。此参数需要
gather_statistics=True
,并且仅在指定chunksize
或split_row_groups
为 >1 的整数时使用。 True 的设置意味着可以将任意两个文件路径聚合到同一个输出分区中,而 False 意味着禁止inter-file 聚合。对于“hive-partitioned” 数据集,还可以指定“partition”-列名称。在这种情况下,我们允许聚合任何两个共享文件路径的文件,直到并包括相应的目录名称。例如,如果以下目录结构的
aggregate_files
设置为"section"
,则03.parquet
和04.parquet
可以聚合在一起,但01.parquet
和02.parquet
不能。但是,如果aggregate_files
设置为"region"
,01.parquet
可以与02.parquet
聚合,并且03.parquet
可以与04.parquet
聚合:dataset-path/ ├── region=1/ │ ├── section=a/ │ │ └── 01.parquet │ ├── section=b/ │ └── └── 02.parquet └── region=2/ ├── section=a/ │ ├── 03.parquet └── └── 04.parquet
请注意,
aggregate_files
的默认行为是 False。- **kwargs: dict (of dicts):
为读取后端传递 key-word 参数。顶级键对应于适当的操作类型,第二级对应于将传递给底层
pyarrow
或fastparquet
函数的 kwargs。支持的顶级键:‘dataset’(用于打开pyarrow
数据集)、‘file’ or ‘dataset’(用于打开fastparquet.ParquetFile
)、‘read’(用于后端读取函数)、‘arrow_to_pandas’(用于控制参数传递以从pyarrow.Table.to_pandas()
转换)。任何未在这些顶级键下定义的 kwargs 元素都将作为 stand-alone 参数传递给engine.read_partitions
类方法(并且将被dask.dataframe
中定义的引擎实现忽略)。
参数:
例子:
>>> df = dd.read_parquet('s3://bucket/my-parquet-data')
相关用法
- Python dask.dataframe.read_table用法及代码示例
- Python dask.dataframe.read_hdf用法及代码示例
- Python dask.dataframe.read_json用法及代码示例
- Python dask.dataframe.read_fwf用法及代码示例
- Python dask.dataframe.read_sql_table用法及代码示例
- Python dask.dataframe.read_csv用法及代码示例
- Python dask.dataframe.read_orc用法及代码示例
- Python dask.dataframe.reshape.get_dummies用法及代码示例
- Python dask.dataframe.rolling.Rolling.var用法及代码示例
- Python dask.dataframe.rolling.Rolling.count用法及代码示例
- Python dask.dataframe.rolling.Rolling.min用法及代码示例
- Python dask.dataframe.rolling.Rolling.quantile用法及代码示例
- Python dask.dataframe.rolling.Rolling.std用法及代码示例
- Python dask.dataframe.rolling.Rolling.sum用法及代码示例
- Python dask.dataframe.rolling.Rolling.kurt用法及代码示例
- Python dask.dataframe.rolling.Rolling.mean用法及代码示例
- Python dask.dataframe.rolling.Rolling.median用法及代码示例
- Python dask.dataframe.Series.apply用法及代码示例
- Python dask.dataframe.to_records用法及代码示例
- Python dask.dataframe.DataFrame.applymap用法及代码示例
注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.dataframe.read_parquet。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。