2016-11-07 15 views
5

pandasデータフレームを入力と見なす計算があります。私はこの計算を、51GBまで拡張されたNetCDFファイルに保存されたデータで実行したいと思います - 現在、私はxarray.open_datasetでファイルを開き、チャンクを使用しています(このオープンされたファイルは実際にはdask配列なので、データを一度にメモリに集める)。しかし、計算を実行するためには、xarrayデータをpandasデータフレームに変換する必要があるため、この遅延ロードを利用することはできません。その時点ですべてのデータがロードされます(これは悪いです)。xarrayデータセットをdaskデータフレーム内のpandasデータフレームに変換する方法

私は長い間ストーリーは短いと思いますが、私の質問は、私のデータ全体をメモリにロードする途中で、xarrayデータセットからpandasデータフレームに移動するにはどうすればいいですか?私はpandas.read_csvとdaskの仕事を見たことがあり、それはxarrayで動作することがわかりますが、すでに開かれたnetCDF xarrayデータセットをチャンク内のpandasデータフレームに変換する方法がわかりません。

ご迷惑をおかけして申し訳ありません。

答えて

3

これは良い質問です。このでなければなりませんが、正しいアプローチが何であるかはわかりません。

理想的には、xarray.Dataset.to_dask_dataframe()メソッドを実装することができます。しかしここにはいくつかの課題があります - 最も大きなものは、現在daskがdataframes with a MultiIndexをサポートしていないということです。

また、xarray.Datasetの各チャンクに対してpandas.DataFramesを保持しているdask.Delayedオブジェクトのリストを作成することもできます。この目的のために、xarrayにデータセットを遅延データセットの配列に変換するためのdask.arrayのto_delayed methodのようなものがあったら、DataFrameオブジェクトにゆっくりと変換して計算することができます。

特に、貢献するコードに興味がある場合は、daskまたはxarrayのGitHubページで問題を開いて議論することをお勧めします。編集:その問題hereを見つけることができます。

関連する問題