ホームページ >バックエンド開発 >Python チュートリアル >Pandas DataFrame に新しい列を作成するには、Pandas apply と NumPy Vectorize のどちらの方法が速いですか?
列作成時の Pandas apply と NumPy ベクトル化のパフォーマンスに関する考慮事項
Pandas apply は広く使用されていますが、列作成時のパフォーマンスは NumPy ベクトル化に比べて遅れます。既存の列から新しい列を作成します。この相違は、適用関数が Python レベルのループであり、かなりのオーバーヘッドが発生するという事実に起因します。対照的に、vectorize は入力関数をユニバーサル関数に変換し、効率を大幅に向上させます。
パフォーマンス ベンチマーク
Python レベルのループを比較し、raw=True で適用します。観察:
真のベクトル化
ただし、適用とベクトル化の両方は、NumPy 配列に対して要素ごとに計算を実行する np.where などの真のベクトル化操作によって無視されます。このアプローチは著しく高速であり、ループの必要性が排除されます。
パフォーマンスに関するさらなる考慮事項
重大なボトルネックについては、Python 関数を高度に最適化された C にコンパイルするツール numba を検討してください。コード。 numba を使用すると、計算をさらに高速化できます。
結論
既存の列から新しい列を作成する場合、NumPy のベクトル化はネイティブのベクトル化により、Pandas apply よりも優れたパフォーマンスを提供します。能力。最適な効率を得るには、該当する場合には真のベクトル化を採用する必要があります。
以上がPandas DataFrame に新しい列を作成するには、Pandas apply と NumPy Vectorize のどちらの方法が速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。