ホームページ  >  記事  >  バックエンド開発  >  Pandas DataFrame に新しい列を作成するには、Pandas apply と NumPy Vectorize のどちらの方法が速いですか?

Pandas DataFrame に新しい列を作成するには、Pandas apply と NumPy Vectorize のどちらの方法が速いですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 14:40:03695ブラウズ

Which Method is Faster for Creating New Columns in a Pandas DataFrame: Pandas Apply or NumPy Vectorize?

列作成時の Pandas apply と NumPy ベクトル化のパフォーマンスに関する考慮事項

Pandas apply は広く使用されていますが、列作成時のパフォーマンスは NumPy ベクトル化に比べて遅れます。既存の列から新しい列を作成します。この相違は、適用関数が Python レベルのループであり、かなりのオーバーヘッドが発生するという事実に起因します。対照的に、vectorize は入力関数をユニバーサル関数に変換し、効率を大幅に向上させます。

パフォーマンス ベンチマーク

Python レベルのループを比較し、raw=True で適用します。観察:

  • マップ、zip によるリスト内包表記、およびベクトル化は同様のパフォーマンスを示します。
  • raw=True を使用した適用は、raw=True を使用しない場合よりも大幅に高速です。

真のベクトル化

ただし、適用とベクトル化の両方は、NumPy 配列に対して要素ごとに計算を実行する np.where などの真のベクトル化操作によって無視されます。このアプローチは著しく高速であり、ループの必要性が排除されます。

パフォーマンスに関するさらなる考慮事項

重大なボトルネックについては、Python 関数を高度に最適化された C にコンパイルするツール numba を検討してください。コード。 numba を使用すると、計算をさらに高速化できます。

結論

既存の列から新しい列を作成する場合、NumPy のベクトル化はネイティブのベクトル化により、Pandas apply よりも優れたパフォーマンスを提供します。能力。最適な効率を得るには、該当する場合には真のベクトル化を採用する必要があります。

以上がPandas DataFrame に新しい列を作成するには、Pandas apply と NumPy Vectorize のどちらの方法が速いですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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