gpt4 book ai didi

python-3.x - 使用 read_parquet 从 Parquet 文件中获取带有分类列的 Pandas DataFrame?

转载 作者:行者123 更新时间:2023-12-02 02:57:38 51 4
gpt4 key购买 nike

我正在将大型 CSV 文件转换为 Parquet 文件以进行进一步分析。我将 CSV 数据读入 Pandas 并指定 dtypes 列,如下所示

_dtype = {"column_1": "float64",
"column_2": "category",
"column_3": "int64",
"column_4": "int64"}

df = pd.read_csv("data.csv", dtype=_dtype)

然后,我进行更多数据清理,并将数据写入 Parquet 供下游使用。

_parquet_kwargs = {"engine": "pyarrow",
"compression": "snappy",
"index": False}

df.to_parquet("data.parquet", **_parquet_kwargs)

但是当我使用 from_parquet 将数据读入 Pandas 进行进一步分析时,我似乎无法恢复类别数据类型。以下内容

df = pd.read_parquet("data.parquet")

生成一个 DataFrame,其中使用 object 数据类型代替所需的类别

以下内容似乎按预期工作

import pyarrow.parquet as pq

_table = (pq.ParquetFile("data.parquet")
.read(use_pandas_metadata=True))

df = _table.to_pandas(strings_to_categorical=True)

但是我想知道如何使用pd.read_parquet来完成此操作。

最佳答案

这已在 Arrow 0.15 中得到修复,现在下一个代码将列保留为类别(并且性能明显更快):

import pandas

df = pandas.DataFrame({'foo': list('aabbcc'),
'bar': list('xxxyyy')}).astype('category')

df.to_parquet('my_file.parquet')
df = pandas.read_parquet('my_file.parquet')
df.dtypes

关于python-3.x - 使用 read_parquet 从 Parquet 文件中获取带有分类列的 Pandas DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54731396/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com