web-dev-qa-db-ja.com

ParquetファイルをPandas DataFrameに読み込む方法は?

HadoopやSparkなどのクラスターコンピューティングインフラストラクチャをセットアップせずに、適度なサイズのParquetデータセットをインメモリPandas DataFrameに読み込む方法これは、ラップトップで簡単なPythonスクリプトを使用してインメモリで読み取りたい中程度の量のデータです。データはHDFSに存在しません。ローカルファイルシステムまたはS3にある可能性があります。 Hadoop、Hive、Sparkなどの他のサービスを起動して構成したくありません。

Blaze/Odoはこれを可能にすると思っていました。OdoのドキュメントではParquetについて言及していますが、例はすべて外部のHiveランタイムを使用しているようです。

40
Daniel Mahler

pandas 0.21では Parquetの新機能 :が導入されました

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

または

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

上記のリンクの説明:

これらのエンジンは非常に似ており、ほぼ同じ寄木細工の形式のファイルを読み書きする必要があります。これらのライブラリは、基礎となる依存関係が異なることで異なります(pyarrowはc-libraryを使用しますが、numbaを使用するとfastparquetになります)。

55
chrisaycock

更新:私がこれに答えた時以来、寄木細工のより良い読み書きのために、Apache Arrowのこの見方について多くの仕事がありました。また: http://wesmckinney.com/blog/python-parquet-multithreading/

比較的うまく機能するpython寄木細工リーダーがあります: https://github.com/jcrobak/parquet-python

pythonオブジェクトを作成し、Pandas DataFrameに移動する必要があるため、たとえばpd.read_csvよりも処理が遅くなります。

16
danielfrg