問題タブ [fastparquet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
703 参照

pandas - メモリにロードせずに、多数の大きな Pandas DataFrame を単一の Parquet ファイルに保存する

一度にメモリに収まらない多くの大きな Pandas DataFrames を単一の Parquet ファイルに保存しようとしています。単一の大きなファイルから必要な列をすばやく取得するために、ディスク上に単一の大きな寄木細工のファイルを用意したいと考えています。

具体的には、それぞれ約 100 列 (遺伝子) と 200 万行 (セル) を持つ約 200 の小さな寄木細工のファイルがあります。ディスク上の各寄木細工は非常に小さく、約 40 MB で、約 200 個のすべての寄木細工ファイルの合計は約 8 GB です。データは非常にまばらで (90% を超える値がゼロ)、Parquet はディスク上のデータを小さなサイズに圧縮することを適切に行います。

データセットはまばらなので、Pandas/Scipy のまばらな配列を使用して、約 25,000 個の遺伝子 (列) と 200 万行 (セル) をすべて単一のまばらなデータ構造にロードできます。ただし、SparseDataFrame を直接 Parquet に書き込むことはできず (Github の問題https://github.com/pandas-dev/pandas/issues/26378を参照)、マトリックス全体を密に変換するとメモリ不足になります (例: 2,000 列/遺伝子と 200 万行/セルの高密度配列は 30 GB の RAM を占有します)。これにより、必要な単一の大きな Parquet ファイルを生成できなくなります。

Peter Hoffmann によるこのプレゼンテーション ( https://youtu.be/fcPzcooWrIY?t=987、16分 20 秒) では、すべてのデータをメモリに保持しなくても、Parquet ファイルにデータをストリーミングできる (メタデータに関する記録を保持する) ことができると述べています。列/行を寄木細工のファイルにストリーミングすることは可能ですか? Pandas を使用したこの例は見つかりませんでした。PyArrow または FastParquet はこれをサポートしていますか?