問題タブ [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.
python - 大きな CSV ファイルを読み込み、多次元を追加し、毎時を毎日に変換する方法は?
米国の気象データを 5 km グリッドの 1 時間ごとの解像度で表す大きな CSV ファイルがあります。データは日ごとに保存されていたので、それらを連結して年間ファイルにしました。最終的な目標は、緯度と経度による変数 (風速、気温、降水量、気圧など) の日次、週次、月次の平均を計算することです。列ヘッダーがないため、ファイルを読み込むときに列名をファイルに追加します。
PythonでPandasで読み込もうとしたところ、メモリに収まらず失敗しました。Dask で読み込むことはできますが、次元を Dask データフレームに追加する方法や、xarray に変換して同じことを行う方法が見つかりません。これらの大きすぎるメモリ ファイルを読み込み、緯度、経度、日時のディメンションを追加し、緯度/経度ごとに日次、週次、月次の平均を計算してファイルを出力する方法はありますか? または、読み込む前に csv を netCDF などに変換する必要がありますか?
pandas - Pythonエンジンの信頼できない動作を使用したread_csvからのdaskデータフレーム
私のデータは、次の形式の 10GB ファイルです。
ノート:
- [ key = value ] ブロックはいくつあってもかまいません。
- chars
[
であり]
、値自体に含まれています。たとえば、次のようになります。[ hello = wo[rld] ]
- スクリプトで変更/処理できることを除いて、abinputファイルを制御することはできません。
- いくつかの列だけが必要ですが、それらには文字
[
と]
値が含まれています。
私の単純な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 ファイルでは、次の予測できない動作が発生します。
いくつかの例: