私は(Pythonの使用、私の場合には、機械学習モデルを作成するためのワークフローを構築していますpandas
し、sklearn
非常に大規模なデータベースから引き出されたデータからパッケージ)(ここでは、にVerticaは、SQLとの方法によりpyodbc
)、そのプロセスにおける重要なステップが含ま帰行方不明予測子の値。これは、単一の分析プラットフォームまたは統計プラットフォーム(Python、R、Stataなど)内では簡単ですが、マルチプラットフォームワークフローでこのステップを見つけるのに最適な場所が知りたいです。
sklearn.preprocessing.Imputer
クラスで、pandas.DataFrame.fillna
メソッドを使用して、または手動で(使用される代入メソッドの複雑さに応じて)Pythonでこれを行うのは十分簡単です。しかし、私はこれを何億ものレコードの数十または数百の列に使用するので、事前にSQLを介して直接これを行うより効率的な方法があるのだろうかと思います。Verticaのような分散プラットフォームでこれを行う潜在的な効率は別として、これはテーブルの「完全な」バージョンを構築するための自動化されたパイプラインを作成できるという追加の利点があるので、新しいセットを記入する必要はありませんモデルを実行するたびに、ゼロから欠損値を取得します。
私はこれについて多くのガイダンスを見つけることができませんでしたが、私たちはできると思います:
- 不完全な列ごとに代替値の表(全体またはグループごとの平均/中央値/モードなど)を作成します
- 代替値テーブルを元のテーブルと結合して、各行と不完全な列に代替値を割り当てます
- 一連のcaseステートメントを使用して、使用可能な場合は元の値を取得し、それ以外の場合は代替値を取得します
これはVertica / SQLで行うのが合理的なことですか、それともわずらわずPythonで処理するだけの正当な理由がありますか?後者の場合、スケルンではなくパンダでこれを行うための強力なケースがありますか、その逆ですか?ありがとう!