【发布时间】:2020-09-16 06:17:19
【问题描述】:
我有一个我想经常查询的 pandas DataFrame(通过 API 以 ray 形式)。我正在尝试加快它的加载速度,但是将其转换为熊猫需要大量时间(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 文件格式的约束,尽管它通常是我的最爱。
问候, 尼克拉斯
【问题讨论】: