np.vectorize vs Pandas s'appliquent : lequel est le plus rapide pour les grands ensembles de données ?

DDD
Libérer: 2024-10-27 07:16:02
original
537 Les gens l'ont consulté

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

np.vectorize vs Pandas apply : une comparaison des performances

Les utilisateurs de Pandas rencontrent généralement le besoin de créer de nouvelles colonnes basées sur celles existantes. Deux méthodes populaires pour cette tâche sont la fonction d'application de Pandas et la vectorisation de NumPy. Cependant, la différence de vitesse entre ces approches est une question qui n'a pas été examinée de manière approfondie.

Comportement attendu

Sur la base des observations et des expériences, on s'attend à ce que np.vectorize est nettement plus rapide que df.apply, en particulier pour les ensembles de données plus volumineux.

Raisons de la différence de vitesse

La principale raison de l'écart de performances réside dans le nature de chaque approche.

df.apply fonctionne en itérant sur chaque ligne du DataFrame et en évaluant la fonction donnée. Cela implique la création et la manipulation d'objets de la série Pandas, qui entraînent une surcharge importante en raison de leur index, de leurs valeurs et de leurs attributs.

D'autre part, np.vectorize convertit la fonction d'entrée en une fonction universelle (ufunc ) qui fonctionne directement sur les tableaux NumPy. Cela permet des calculs vectoriels, hautement optimisés et évitant les boucles au niveau Python.

Performance Benchmarks

L'expérience de la question démontre l'avantage significatif en termes de vitesse de np. vectorisez sur df.apply pour différentes tailles d'ensemble de données. Pour un DataFrame comportant 1 million de lignes, np.vectorize s'est avéré plus de 25 fois plus rapide.

Considérations supplémentaires

Bien que np.vectorize soit généralement plus rapide, il y a quelques mises en garde importantes à prendre en compte :

  • Pour les petits ensembles de données, la surcharge liée à la configuration du calcul vectorisé peut annuler tout gain de performances.
  • Pour les opérations qui ne sont pas facilement vectorisées, telles que les affectations conditionnelles, df.apply peut être un meilleur choix.
  • Une véritable vectorisation via des opérations NumPy ou des optimisations numba peut offrir une efficacité encore plus grande.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal