pyarrow.parquet.read_pandas#
- pyarrow.parquet.read_pandas(source, columns=None, **kwargs)[source]#
从 Parquet 格式读取一个 Table,如果文件元数据中已知 DataFrame 的索引值,也会将其一并读取。
- 参数:
- source
str,listofstr,pyarrow.NativeFile, 或类文件对象 如果传入的是字符串,可以是单个文件名或目录名。如果传入的是字符串列表,则应为文件名列表。对于类文件对象,仅读取单个文件。使用 pyarrow.BufferReader 读取包含在字节或类缓冲对象中的文件。
- columns
list 如果不为 None,则仅从文件中读取这些列。列名可以是嵌套字段的前缀,例如“a”将选择“a.b”、“a.c”和“a.d.e”。如果为空,则不读取任何列。请注意,即使没有读取任何列,表格仍会设置正确的 num_rows。
- use_threadsbool, 默认
True 执行多线程列读取。
- schema
Schema,可选 可选地提供 Parquet 数据集的 Schema,在这种情况下,它将不会从源中推断。
- read_dictionary
list, 默认值None 要直接读取为 DictionaryArray 的名称列表或列路径(针对嵌套类型)。仅支持 BYTE_ARRAY 存储。要将扁平列读取为字典编码,请传递列名。对于嵌套类型,您必须传递完整的列“路径”,例如 level1.level2.list.item。请参阅 Parquet 文件的 schema 以获取路径。
- binary_type
pyarrow.DataType, 默认值None 如果给定,Parquet 二进制列将以此数据类型读取。如果在 Parquet 元数据中找到序列化的 Arrow schema,则此设置将被忽略。
- list_type
pyarrow.DataType的子类, 默认值None 如果给定,非 MAP 重复列将作为此数据类型(pyarrow.ListType 或 pyarrow.LargeListType)的实例读取。如果在 Parquet 元数据中找到序列化的 Arrow schema,则此设置将被忽略。
- memory_mapbool, 默认值
False 如果源是文件路径,使用内存映射读取文件,这在某些环境下可以提高性能。
- buffer_size
int, 默认值 0 如果为正,则在反序列化单个列块时执行读取缓冲。否则,IO 调用将不进行缓冲。
- partitioning
pyarrow.dataset.Partitioning或str或list的str, 默认值 “hive” 分区数据集的分区方案。默认值“hive”假定目录名采用 key=value 对的形式,如“/year=2009/month=11”。此外,也支持如“/2009/11”这样的方案,在这种情况下,你需要指定字段名称或完整的 schema。更多详细信息,请参阅
pyarrow.dataset.partitioning()函数。- **kwargs
read_table()的附加选项- filesystem
FileSystem, 默认值None 如果未传递任何内容,将根据路径推断。路径将尝试在本地磁盘文件系统中查找,否则将解析为 URI 以确定文件系统。
- filters
pyarrow.compute.Expression或List[Tuple] 或List[List[Tuple]], 默认值None 不匹配筛选谓词的行将从扫描数据中移除。嵌套目录结构中嵌入的分区键将被利用,如果文件不包含匹配的行,则完全避免加载文件。支持文件内级别筛选和不同的分区方案。
谓词使用
Expression或析取范式 (DNF) 表示,例如[[('x', '=', 0), ...], ...]。DNF 允许对单列谓词进行任意布尔逻辑组合。最内层的元组各自描述一个单列谓词。内层谓词列表被解释为合取(AND),形成一个更具选择性的多列谓词。最后,最外层的列表将这些过滤器组合为析取(OR)。谓词也可以作为 List[Tuple] 传递。这种形式被解释为单个合取。要在谓词中表达 OR,必须使用(首选的)List[List[Tuple]] 表示法。
每个元组的格式为:(
key,op,value),用于将key与value进行比较。支持的op包括:=或==,!=,<,>,<=,>=,in和not in。如果op是in或not in,则value必须是一个集合,例如list、set或tuple。示例
使用
ExpressionAPIimport pyarrow.compute as pc pc.field('x') = 0 pc.field('y').isin(['a', 'b', 'c']) ~pc.field('y').isin({'a', 'b'})
使用 DNF 格式
('x', '=', 0) ('y', 'in', ['a', 'b', 'c']) ('z', 'not in', {'a','b'})
- ignore_prefixes
list, 可选 与这些前缀中的任何一个匹配的文件将被发现过程忽略。这与路径的基本名称匹配。默认情况下,这是 [‘.’, ‘_’]。请注意,只有当目录作为源传递时,才会发生发现。
- pre_bufferbool, 默认值
True 并行合并并发出文件读取请求,以提高在高延迟文件系统(如 S3)上的性能。如果设为 True,Arrow 将使用后台 I/O 线程池。如果使用的文件系统层本身执行预读取(例如 fsspec 的 S3FS),为了获得最佳结果,请禁用预读取。
- coerce_int96_timestamp_unit
str, 默认值None 将以 INT96 格式存储的时间戳强制转换为特定分辨率(例如 'ms')。设置为 None 等同于 'ns',因此 INT96 时间戳将被推断为纳秒级时间戳。
- decryption_properties
FileDecryptionProperties或None 文件级解密属性。解密属性可以使用
CryptoFactory.file_decryption_properties()创建。- thrift_string_size_limit
int, 默认值None 如果不是 None,则覆盖解码 Thrift 结构时分配的最大总字符串大小。默认限制应足以满足大多数 Parquet 文件的需求。
- thrift_container_size_limit
int, 默认值None 如果不是 None,则覆盖解码 Thrift 结构时分配的最大容器总大小。默认限制应足以满足大多数 Parquet 文件的需求。
- page_checksum_verificationbool, 默认值
False 如果为 True,则验证从文件中读取的每个页面的校验和。
- arrow_extensions_enabledbool, 默认值
True 如果为 True,则尽可能将 Parquet 逻辑类型读取为 Arrow 扩展类型(例如,将 JSON 读取为规范的 arrow.json 扩展类型,或将 UUID 读取为规范的 arrow.uuid 扩展类型)。
- source
- 返回:
pyarrow.Table文件的内容作为一个列式 Table(包括作为列的 DataFrame 索引)