Comparaison des performances de Pandas apply vs np.vectorize
Il a été observé que np.vectorize() peut être nettement plus rapide que df. apply() lors de la création d'une nouvelle colonne basée sur des colonnes existantes dans un Pandas DataFrame. La différence de performances observée provient des mécanismes sous-jacents employés par ces deux méthodes.
df.apply() vs Python-Level Loops
df.apply() crée essentiellement une boucle de niveau Python qui parcourt chaque ligne du DataFrame. Comme le démontrent les tests fournis, les boucles au niveau Python telles que les compréhensions de listes et les cartes sont toutes relativement lentes par rapport aux véritables calculs vectorisés.
np.vectorize() vs df.apply()
np.vectorize() convertit une fonction définie par l'utilisateur en fonction universelle (ufunc). Les Ufuncs sont hautement optimisés et peuvent effectuer des opérations par éléments sur les tableaux NumPy, en tirant parti du code basé sur C et d'algorithmes optimisés. Cela contraste avec df.apply(), qui fonctionne sur les objets de la série Pandas et entraîne une surcharge supplémentaire.
Véritable vectorisation : performances optimales
Pour une création de colonnes vraiment efficace , les calculs vectorisés dans NumPy sont fortement recommandés. Les opérations comme numpy.where et la division directe par élément avec df["A"] / df["B"] sont extrêmement rapides et évitent les frais généraux associés aux boucles.
Optimisation Numba
Pour encore plus d'efficacité, il est possible d'optimiser davantage les boucles grâce à Numba, un compilateur qui traduit les fonctions Python en code C optimisé. Numba peut réduire le temps d'exécution à quelques microsecondes, surpassant considérablement df.apply() et np.vectorize().
Conclusion
Alors que np.vectorize() peut offrir une certaine amélioration par rapport à df.apply(), ce n'est pas un véritable substitut aux calculs vectorisés dans NumPy. Pour obtenir des performances maximales, utilisez l'optimisation Numba ou des opérations vectorisées directes dans NumPy pour la création de nouvelles colonnes dans Pandas DataFrames.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!