如何将 Parquet 文件读入 Pandas DataFrame?

新手上路,请多包涵

如何在不设置 Hadoop 或 Spark 等集群计算基础设施的情况下将中等大小的 Parquet 数据集读入内存中的 Pandas DataFrame?这只是我想在笔记本电脑上使用简单的 Python 脚本读取内存中的少量数据。数据不驻留在 HDFS 上。它要么在本地文件系统上,要么可能在 S3 中。我不想启动和配置其他服务,如 Hadoop、Hive 或 Spark。

我认为 Blaze/Odo 会让这成为可能:Odo 文档提到了 Parquet,但这些示例似乎都是通过外部 Hive 运行时进行的。

原文由 Daniel Mahler 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 841
2 个回答

pandas 0.21 为 Parquet 引入了新功能

 import pandas as pd
pd.read_parquet('example_pa.parquet', engine='pyarrow')

要么

import pandas as pd
pd.read_parquet('example_fp.parquet', engine='fastparquet')

以上链接说明:

这些引擎非常相似,应该读取/写入几乎相同的镶木地板格式文件。这些库的不同之处在于具有不同的底层依赖关系(fastparquet 使用 numba,而 pyarrow 使用 c 库)。

原文由 chrisaycock 发布,翻译遵循 CC BY-SA 4.0 许可协议

更新:自从我回答这个问题以来,为了更好地读写镶木地板,Apache Arrow 已经做了很多工作。另外: http ://wesmckinney.com/blog/python-parquet-multithreading/

有一个 python parquet reader 工作得比较好: https ://github.com/jcrobak/parquet-python

它将创建 python 对象,然后您必须将它们移动到 Pandas DataFrame,因此该过程将比 pd.read_csv 慢。

原文由 danielfrg 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题