ホームページ >バックエンド開発 >Python チュートリアル >Pandas の「iterrows」が非常に遅いのはなぜですか? パフォーマンスを向上させるにはどうすればよいですか?

Pandas の「iterrows」が非常に遅いのはなぜですか? パフォーマンスを向上させるにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-26 16:58:10864ブラウズ

Why is Pandas `iterrows` So Slow, and How Can I Improve Performance?

Pandas iterrows のパフォーマンスの問題

行方向反復用の pandas 関数である iterrows にパフォーマンスの欠陥があることが観察されています。この問題はデータフレーム内の混合 dtype に関連している可能性がありますが、この問題がない単純なシナリオでもパフォーマンスに大きな遅れが見られます。

apply などのベクトル化された操作は、多くの場合 iterrows よりもパフォーマンスが優れており、row-by の必要性について疑問が生じています。 -行の反復。ただし、iterrows が依然として避けられない場合があります。

Iterrows のパフォーマンス問題の理由

一般に、iterrows はパフォーマンス特性により、ベクトル化、適用、および itertuple よりも効率が低くなります。 :

  • ベクトル化: ベクトル演算により高効率が可能になります
  • Apply:Apply は pandas によって最適化されており、一部の操作は Cython で実行され、パフォーマンスが大幅に向上します。
  • Itertuples:Itertuples はデータ ボックス化を回避し、データをタプルとして取得します。
  • Iterrows: データを Series オブジェクトにボックス化して、パフォーマンスを向上させます。

最適なパフォーマンスのためのガイドライン

パフォーマンスを最適化するには、次のガイドラインを考慮してください。

  1. 可能な限りベクトル化を優先します。
  2. ベクトル化が行われない場合に適用を使用します。実現可能です。
  3. 特定のシナリオでは、非ボックス化の itertuples を検討してください。
  4. パフォーマンスのボトルネックが発生するため、可能であれば iterrows を避けてください。
  5. 新しい構造を構築し、行を避けるために連結してください。空のデータフレームの行単位の更新。

以上がPandas の「iterrows」が非常に遅いのはなぜですか? パフォーマンスを向上させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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