ホームページ  >  記事  >  バックエンド開発  >  np.vectorize と Pandas の適用: 大規模なデータセットではどちらが高速ですか?

np.vectorize と Pandas の適用: 大規模なデータセットではどちらが高速ですか?

DDD
DDDオリジナル
2024-10-27 07:16:02541ブラウズ

np.vectorize vs. Pandas apply: Which is Faster for Large Datasets?

np.vectorize と Pandas apply: パフォーマンスの比較

Pandas ユーザーは通常、既存の列に基づいて新しい列を作成する必要に遭遇します。このタスクでよく使用される 2 つの方法は、Pandas の apply 関数と NumPy のベクトル化です。ただし、これらのアプローチ間の速度の違いは、十分に検討されていない問題です。

期待される動作

観察と実験に基づいて、次のことが予想されます。 np.vectorize は、特に大規模なデータセットの場合、df.apply よりも大幅に高速です。

速度の違いの理由

パフォーマンスのギャップの主な理由は、各アプローチの性質。

df.apply は、DataFrame の各行を反復処理し、指定された関数を評価することによって機能します。これには、Pandas シリーズ オブジェクトの作成と操作が含まれますが、インデックス、値、属性による大きなオーバーヘッドが伴います。

一方、np.vectorize は入力関数をユニバーサル関数 (ufunc) に変換します。 ) NumPy 配列を直接操作します。これにより、高度に最適化され、Python レベルのループを回避するベクトル化された計算が可能になります。

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

質問の実験は、np の速度の大きな利点を示しています。さまざまなデータセット サイズに合わせて df.apply をベクトル化します。 100 万行の DataFrame の場合、np.vectorize は 25 倍以上高速であることがわかりました。

追加の考慮事項

np.vectorize は一般に高速ですが、考慮すべき重要な注意事項がいくつかあります。

  • 小さなデータセットの場合、ベクトル化された計算を設定するオーバーヘッドにより、パフォーマンスの向上が打ち消される可能性があります。
  • 簡単にベクトル化できない操作の場合、条件付き代入などの場合は、df.apply の方が良い選択になる可能性があります。
  • NumPy 操作または numba 最適化による真のベクトル化により、さらに効率が向上します。

以上がnp.vectorize と Pandas の適用: 大規模なデータセットではどちらが高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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