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.
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.
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.
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.
Bien que np.vectorize soit généralement plus rapide, il y a quelques mises en garde importantes à prendre en compte :
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!