2 votes

Curiosité sur les performances des séries pandas `any`, `max`, `sum` par rapport aux builtins python

La recherche de performance dans les applications python utilisant pandas/numpy bénéficie souvent de l'utilisation des méthodes implémentées par pandas/numpy autres que le code propre implémenté, comme par exemple par le biais de boucles. C'est peut-être une mauvaise introduction à la question que je me pose, mais dans la capture d'écran suivante (si je ne l'avais pas testée), je m'attendais à ce que les versions utilisant les méthodes de la série s'exécutent plus rapidement que les buildins python. Puisque ce n'est pas le cas, cela signifie que j'ai construit une fausse intuition sur cet exemple, mais je n'ai pas encore pu trouver la raison de cela. La question est donc de savoir pourquoi, dans ce cas, l'utilisation des builtins python a des performances plus élevées que les méthodes appliquées sur les séries (est-ce que je rate quelque chose d'autre ?) ?

enter image description here

2voto

KeyWeeUsr Points 5156

Pandas a ses propres fonctions qui sont chemin sont différentes des fonctions intégrées de Python, donc si vous appelez Series.max() vous appelez en fait nanops._nanminmax() qui est ajouté via le IndexOpsMixin au lieu de builtins.max()

Chacun d'entre eux se comporte différemment, et a donc des temps d'exécution différents.

De même pour le reste des méthodes. Si vous êtes curieux, vérifiez le code source de Series et les classes dont elle hérite pour connaître les différences exactes entre les fonctions intégrées et l'implémentation de Pandas.

2voto

Daweo Points 10024

Est-ce que j'ai manqué quelque chose d'autre ?

Vous avez supposé que vous obtiendrez toujours le même résultat, ce qui n'est pas vrai. Exemple montrant des résultats différents pour sum y pandas.Series.sum es

import pandas as pd
s = pd.Series([1.0,2.0,float("nan")])
print(s.sum())
print(sum(s))

sortie

3.0
nan

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X