pandas.read_parquet#

pandas.read_parquet(path, engine='auto', columns=None, storage_options=None, use_nullable_dtypes=_NoDefault.no_default, dtype_backend=_NoDefault.no_default, filesystem=None, filters=None, **kwargs)[源代码]#

从文件路径加载 parquet 对象,返回一个 DataFrame。

Parameters:
pathstr、path 对象或文件类对象

字符串、路径对象(实现 os.PathLike[str])或实现了二进制 read() 函数的文件类对象。字符串可以是 URL。有效的 URL 方案包括 http、ftp、s3、gs 和 file。对于 file URL,需要主机名。本地文件可以是:file://localhost/path/to/table.parquet。文件 URL 也可以是指向包含多个分区 parquet 文件的目录的路径。pyarrow 和 fastparquet 都支持目录路径和文件 URL。目录路径可以是:file://localhost/path/to/tabless3://bucket/partition_dir

engine{‘auto’, ‘pyarrow’, ‘fastparquet’},默认值为 ‘auto’

要使用的 Parquet 库。如果为 ‘auto’,则使用选项 io.parquet.engine。默认的 io.parquet.engine 行为是尝试 ‘pyarrow’,如果 ‘pyarrow’ 不可用则回退到 ‘fastparquet’。

当使用 'pyarrow' 引擎且未提供存储选项,并且 pyarrow.fsfsspec 都实现了文件系统(例如 “s3://”)时,将首先尝试 pyarrow.fs 文件系统。如果要使用 fsspec 的实现,请使用带有已实例化 fsspec 文件系统的 filesystem 关键字。

columnslist, default=None

如果不是 None,则只从文件中读取这些列。

storage_optionsdict, 可选

适用于特定存储连接的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将作为标头选项转发给 urllib.request.Request。对于其他 URL(例如,以 “s3://”, 和 “gcs://” 开头的 URL),键值对将转发给 fsspec.open。更多详情请参阅 fsspecurllib,有关存储选项的更多示例,请参阅 here

在 1.3.0 版本加入.

use_nullable_dtypesbool,默认 False

如果为 True,则使用将 pd.NA 作为缺失值指示符的 dtype 来创建 DataFrame。(仅适用于 pyarrow 引擎)随着将来添加支持 pd.NA 的新 dtype,此选项的输出将更改为使用这些 dtype。注意:这是一个实验性选项,行为(例如,支持的额外 dtype)可能会在未经通知的情况下更改。

自 2.0 版本弃用.

dtype_backend{‘numpy_nullable’, ‘pyarrow’}, 默认 ‘numpy_nullable’

应用于结果 DataFrame 的后端数据类型(仍处于实验阶段)。行为如下:

  • "numpy_nullable":返回支持可空 dtype 的 DataFrame (默认)。

  • "pyarrow":返回 pyarrow 支持的可空 ArrowDtype DataFrame。

在 2.0 版本加入.

filesystemfsspec 或 pyarrow 文件系统,默认为 None

读取 parquet 文件时使用的文件系统对象。仅对 engine="pyarrow" 实现。

在 2.1.0 版本加入.

filtersList[Tuple] 或 List[List[Tuple]], default None

用于过滤数据。过滤语法:[[(column, op, val), …],…] 其中 op 是 [==, =, >, >=, <, <=, !=, in, not in]。最里面的元组被转置为一组通过 AND 操作应用的过滤器。最外层的列表通过 OR 操作将这些过滤器组合起来。也可以使用单个元组列表,这意味着不会在过滤器组之间进行 OR 操作。

使用此参数不会导致对最终分区进行逐行过滤,除非同时指定了 engine="pyarrow"。对于其他引擎,过滤仅在分区级别执行,即防止加载某些行组和/或文件。

在 2.1.0 版本加入.

**kwargs

任何额外的 kwargs 都会传递给引擎。

Returns:
DataFrame

参见

DataFrame.to_parquet

创建一个序列化 DataFrame 的 parquet 对象。

Examples

>>> original_df = pd.DataFrame(
...     {"foo": range(5), "bar": range(5, 10)}
...    )
>>> original_df
   foo  bar
0    0    5
1    1    6
2    2    7
3    3    8
4    4    9
>>> df_parquet_bytes = original_df.to_parquet()
>>> from io import BytesIO
>>> restored_df = pd.read_parquet(BytesIO(df_parquet_bytes))
>>> restored_df
   foo  bar
0    0    5
1    1    6
2    2    7
3    3    8
4    4    9
>>> restored_df.equals(original_df)
True
>>> restored_bar = pd.read_parquet(BytesIO(df_parquet_bytes), columns=["bar"])
>>> restored_bar
    bar
0    5
1    6
2    7
3    8
4    9
>>> restored_bar.equals(original_df[['bar']])
True

该函数使用直接传递给引擎的 kwargs。在以下示例中,我们使用 pyarrow 引擎的 filters 参数来过滤 DataFrame 的行。

由于 pyarrow 是默认引擎,我们可以省略 engine 参数。请注意,filters 参数由 pyarrow 引擎实现,该引擎可以受益于多线程,并且在内存方面也可能更经济。

>>> sel = [("foo", ">", 2)]
>>> restored_part = pd.read_parquet(BytesIO(df_parquet_bytes), filters=sel)
>>> restored_part
    foo  bar
0    3    8
1    4    9