問題タブ [dask-dataframe]

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 投票する
1 に答える
67 参照

python - 大きな CSV ファイルを読み込み、多次元を追加し、毎時を毎日に変換する方法は?

米国の気象データを 5 km グリッドの 1 時間ごとの解像度で表す大きな CSV ファイルがあります。データは日ごとに保存されていたので、それらを連結して年間ファイルにしました。最終的な目標は、緯度と経度による変数 (風速、気温、降水量、気圧など) の日次、週次、月次の平均を計算することです。列ヘッダーがないため、ファイルを読み込むときに列名をファイルに追加します。

PythonでPandasで読み込もうとしたところ、メモリに収まらず失敗しました。Dask で読み込むことはできますが、次元を Dask データフレームに追加する方法や、xarray に変換して同じことを行う方法が見つかりません。これらの大きすぎるメモリ ファイルを読み込み、緯度、経度、日時のディメンションを追加し、緯度/経度ごとに日次、週次、月次の平均を計算してファイルを出力する方法はありますか? または、読み込む前に csv を netCDF などに変換する必要がありますか?

0 投票する
1 に答える
36 参照

pandas - Pythonエンジンの信頼できない動作を使用したread_csvからのdaskデータフレーム

私のデータは、次の形式の 10GB ファイルです。

ノート:

  1. [ key = value ] ブロックはいくつあってもかまいません。
  2. chars[であり]、値自体に含まれています。たとえば、次のようになります。[ hello = wo[rld] ]
  3. スクリプトで変更/処理できることを除いて、abinputファイルを制御することはできません。
  4. いくつかの列だけが必要ですが、それらには文字[]値が含まれています。

私の単純なfor line in f:関数では、' ][ 'パターンで分割できます。ただし、ファイルのサイズを考えると、dask は非常に有利です。

engine='c'with i で複数文字のセパレータを使用できないことはわかっていますが、に切り替えるとengine='python'予測できない結果が生じます。以下に例を示します。

上記のコードは、予想どおりParserError: Too many columns specified: expected 25 and found 24. このエラーは、特定するのが難しい特定の行が原因で発生するため、再現が非常に困難です。列が増えるたびに発生するわけではありません。したがって、上記の関数で次のように変更しました:engine="python"sep=" \]\[ ". これは、私がテストした小さなサンプルデータで機能します。しかし、10G ファイルでは、次の予測できない動作が発生します。

いくつかの例: