pandas.read_parquet #

熊猫。read_parquet (路径,引擎= '自动' ,=, storage_options =, use_nullable_dtypes = _NoDefault.no_default , dtype_backend = _NoDefault.no_default ,文件系统=,过滤器=, ** kwargs ) [来源] #

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

参数
path str,路径对象或类文件对象

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

引擎{'auto', 'pyarrow', 'fastparquet'}, 默认 'auto'

要使用的 Parquet 库。如果为“自动”,则 io.parquet.engine使用该选项。默认io.parquet.engine 行为是尝试“pyarrow”,如果“pyarrow”不可用,则返回“fastparquet”。

当使用'pyarrow'引擎并且未提供存储选项并且文件系统由 和 实现时pyarrow.fsfsspec 例如“s3://”),则pyarrow.fs首先尝试文件系统。如果您希望使用实例化的 fsspec 文件系统的实现,请使用 filesystem 关键字。

列列表,默认=无

如果不是“无”,则只会从文件中读取这些列。

storage_options字典,可选

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

1.3.0 版本中的新增功能。

use_nullable_dtypes bool, 默认 False

如果为 True,则使用用作pd.NA生成的 DataFrame 的缺失值指示符的 dtypes。 (仅适用于引擎)随着将来pyarrow 添加支持的新数据类型,此选项的输出将更改为使用这些数据类型。pd.NA注意:这是一个实验性选项,行为(例如附加支持数据类型)可能会更改,恕不另行通知。

自 2.0 版本起已弃用。

dtype_backend {'numpy_nullable', 'pyarrow'}, 默认 'numpy_nullable'

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

  • "numpy_nullable":返回 nullable-dtype-backed DataFrame (默认)。

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

2.0版本中的新增内容。

文件系统fsspec 或 pyarrow 文件系统,默认 None

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

2.1.0 版本中的新增功能。

过滤器List[Tuple] 或 List[List[Tuple]],默认 None

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

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

2.1.0 版本中的新增功能。

**夸格

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

返回
数据框

也可以看看

DataFrame.to_parquet

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

例子

>>> 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 引擎的过滤器参数来过滤 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