gpt4 book ai didi

python - 将 PyArrow Parquet 加速到 Pandas 以获取具有大量字符串的数据帧

转载 作者:行者123 更新时间:2023-12-04 15:26:55 24 4
gpt4 key购买 nike

我有一个想要经常查询的 Pandas DataFrame(通过 API 在 ray 中)。我正在尝试加快加载速度,但是将其转换为 Pandas 需要花费大量时间(3+s)。对于我的大多数数据集,它很快,但这个不是。我的猜测是因为其中 90% 是字符串。

[742461 rows x 248 columns]

磁盘上大约有 137MB。为了消除磁盘速度的影响,我将 .parq 文件放在了 tmpfs 挂载中。

现在我试过了:
  • 使用 pyArrow Parquet (read_table) 读取 parquet,然后将其转换为 pandas(立即读取 table,但使用 to_pandas 需要 3 秒)
  • 在 pyarrow/parquet 中使用几乎所有我能想到的 to_pandas 设置
  • 使用 pd.from_parquet 阅读
  • 从 Plasma 内存存储 ( https://arrow.apache.org/docs/python/plasma.html ) 中读取并转换为 Pandas。同样,阅读是即时的,但 to_pandas 需要时间。
  • 将所有字符串转换为类别

  • 任何人都有关于如何在处理字符串时加速 Pandas 转换的好技巧?我有很多内核和内存。

    我的最终结果想要成为一个 Pandas DataFrame,所以我不受 Parquet 文件格式的约束,尽管它通常是我最喜欢的。

    问候,
    尼克拉斯

    最佳答案

    最后,我通过更仔细地处理数据来减少时间,主要是通过删除空白值,确保我们有尽可能多的 NA 值(而不是空白字符串等),并使所有文本数据的类别具有小于 50% 的唯一性内容。

    我最终通过 PyArrow 生成了模式,因此我可以创建具有自定义索引大小(int64 而不是 int16)的分类值,以便我的类别可以包含更多值。最终数据量减少了 50%。

    关于python - 将 PyArrow Parquet 加速到 Pandas 以获取具有大量字符串的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62073065/

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