新しい列を作成する場合、np.vectorize() は Pandas apply() よりも一貫して高速ですか?
はい、np.vectorize() はです。このタスクでは通常、Pandas apply() よりも高速です。私たちのテストでは、特に大規模なデータセットの場合、np.vectorize() の方が大幅に高速であることがわかりました。
なぜ np.vectorize() は apply() よりも高速なのでしょうか?
Pandas apply() は、Python レベルのループに依存して、データフレーム内の行または列を反復処理します。これにより、ベクトル化された操作に最適化された C ベースのコードを使用する np.vectorize() と比較して、大幅なオーバーヘッドが発生する可能性があります。
np.vectorize() は、入力関数をユニバーサル関数 (ufunc) に変換し、それを評価します。ブロードキャストを使用した入力配列の連続タプル。これにより、Pandas オブジェクトの作成と受け渡しのオーバーヘッドが回避され、パフォーマンスが向上します。
apply() よりも np.vectorize() の方が優先されるべきですか?
作成用既存の列の関数として新しい列を作成する場合は、パフォーマンスが優れているため、通常は np.vectorize() の方が良い選択となります。ただし、特に他の列にアクセスしたり複雑な操作を実行したりする場合、np.vectorize() は apply() に比べて柔軟性が限られていることに注意することが重要です。
その他の高速オプション
真に最適化されたベクトル化計算の場合、np.where() などの NumPy 操作や要素ごとの操作が非常に効果的です。パフォーマンスが重要な場合は、これらを使用するか、カスタム関数の効率的な JIT コンパイルを可能にする numba のようなライブラリを検討することを検討してください。
以上がnp.vectorize() は常に Pandas で新しい列を作成する最速の方法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。