Np.vectorize() est-il systématiquement plus rapide que Pandas apply() pour créer de nouvelles colonnes ?
Oui, np.vectorize() est généralement plus rapide que Pandas apply() pour cette tâche. Nos tests montrent que np.vectorize() peut être nettement plus rapide, en particulier pour les ensembles de données plus volumineux.
Pourquoi np.vectorize() est-il plus rapide que apply() ?
Pandas apply() s'appuie sur des boucles de niveau Python pour parcourir les lignes ou les colonnes d'un dataframe. Cela peut introduire une surcharge importante par rapport à np.vectorize(), qui utilise du code optimisé basé sur C pour les opérations vectorisées.
np.vectorize() convertit votre fonction d'entrée en une fonction universelle (ufunc) et l'évalue sur des tuples successifs de tableaux d'entrée utilisant la diffusion. Cela évite la surcharge liée à la création et au transfert d'objets Pandas, ce qui entraîne des performances améliorées.
Np.vectorize() devrait-il être préféré à apply() ?
Pour créer nouvelles colonnes en fonction des colonnes existantes, np.vectorize() est généralement un meilleur choix en raison de ses performances supérieures. Cependant, il est important de noter que np.vectorize() a une flexibilité limitée par rapport à apply(), en particulier lorsqu'il s'agit d'accéder à d'autres colonnes ou d'effectuer des opérations complexes.
Autres options plus rapides
Pour des calculs vectorisés véritablement optimisés, les opérations NumPy comme np.where() ou les opérations par éléments sont très efficaces. Si les performances sont essentielles, envisagez de les utiliser ou d'explorer des bibliothèques comme numba qui permettent une compilation JIT efficace de fonctions personnalisées.
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!