ホームページ  >  記事  >  バックエンド開発  >  np.vectorize() は常に Pandas で新しい列を作成する最速の方法ですか?

np.vectorize() は常に Pandas で新しい列を作成する最速の方法ですか?

DDD
DDDオリジナル
2024-10-26 12:42:02563ブラウズ

 Is np.vectorize() Always the Fastest Way to Create New Columns in Pandas?

新しい列を作成する場合、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。