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/tables或s3://bucket/partition_dir. 引擎{'auto', 'pyarrow', 'fastparquet'}, 默认 'auto'要使用的 Parquet 库。如果为“自动”,则 io.parquet.engine使用该选项。默认io.parquet.engine 行为是尝试“pyarrow”,如果“pyarrow”不可用,则返回“fastparquet”。 当使用'pyarrow'引擎并且未提供存储选项并且文件系统由 和 实现时pyarrow.fs(fsspec 例如“s3://”),则pyarrow.fs首先尝试文件系统。如果您希望使用实例化的 fsspec 文件系统的实现,请使用 filesystem 关键字。 列列表,默认=无如果不是“无”,则只会从文件中读取这些列。 storage_options字典,可选对于特定存储连接有意义的额外选项,例如主机、端口、用户名、密码等。对于 HTTP(S) URL,键值对将urllib.request.Request作为标头选项转发。对于其他 URL(例如以“s3://”和“gcs://”开头),键值对将转发到fsspec.open。请参阅fsspec和urllib了解更多详细信息,有关存储选项的更多示例,请参阅此处。 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