コード内で pandas apply() を使用する必要がある (使用しない) のはどのような場合ですか?
定義
pandas.apply() は、パンダの高レベル関数であり、ユーザー定義関数を DataFrame または Series に追加します。オブジェクトの各行または列を反復処理し、関数を適用し、変換された値を持つ新しいオブジェクトを返します。
pandas.apply() の使用を避けるべき場合
- 同じ操作を実行できる、より効率的なベクトル化された pandas 関数がある場合。
- 必要な関数がある場合apply には副作用があります (グローバル変数の変更など)。
- 大規模なデータセットを扱い、パフォーマンスが重要な懸念事項である場合。
pandas.apply( を避ける理由) )
-
パフォーマンスオーバーヘッド: apply() はデータを反復処理するため、大規模なデータセットの場合は遅くなる可能性があります。
-
メモリ オーバーヘッド: apply() は新しいオブジェクトを作成するため、メモリの問題が発生する可能性があります.
-
副作用: apply() は、グローバル変数またはオブジェクトを変更する関数を処理できません
pandas.apply() の代替
-
ベクトル化関数: pandas は、次のような最適化されたベクトル化関数を多数提供します。シリーズとデータフレームに対して一般的な操作を実行する
-
カスタム Cython 関数: ベクトル化された関数では実行できない複雑な変換の場合、カスタム Cython 関数を作成してパフォーマンスを向上させることができます。
-
リスト内包表記: リスト内包表記を使用して要素ごとの操作を実行できます。
pandas.apply() を使用する場合
- 適切なベクトル化代替手段がない場合の最後の手段として。
- 複雑な関数やカスタム関数など、簡単にベクトル化できない関数の場合。
- 次のような操作の場合データ値に基づいて関数を条件付きで適用します。
注意事項
- apply() は、最初の行 (または列) を 2 回処理して検出します。副作用。
- apply() のパフォーマンスは、使用する関数の種類によって異なる場合があります。 apply.
ヒント
- apply() で使用されるカスタム関数を高速化するには、numba.vectorize の使用を検討してください。
- 代替案を検討するapply() の必要性を減らすためのアプローチ (ベクトル化関数、Cython、リストの使用など)内包表記。
- プロファイリング ツールを使用してボトルネックを特定し、apply() がコード内の重大なパフォーマンス問題であるかどうかを判断します。
以上がPandas `apply()` を使用する必要がある場合 (および使用しない場合) はどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。