Maison > développement back-end > Tutoriel Python > Pourquoi la série Pandas « s.replace » est-elle plus lente que « s.map » pour remplacer des valeurs via des dictionnaires ?

Pourquoi la série Pandas « s.replace » est-elle plus lente que « s.map » pour remplacer des valeurs via des dictionnaires ?

Linda Hamilton
Libérer: 2024-11-13 16:21:02
original
241 Les gens l'ont consulté

Why is Pandas series `s.replace` slower than `s.map` for replacing values through dictionaries?

Remplacement efficace des valeurs dans une série Pandas via des dictionnaires

Remplacement fréquent des valeurs dans une série Pandas via un dictionnaire (s.replace(d)) rencontre des goulots d'étranglement en termes de performances, ce qui le rend nettement plus lent que les approches de compréhension de liste. Bien que s.map(d) offre des performances acceptables, il ne convient que lorsque toutes les valeurs de série se trouvent dans les clés du dictionnaire.

Comprendre l'écart de performances

La raison principale la lenteur de s.replace réside dans ses fonctionnalités aux multiples facettes. Contrairement à s.map, il gère les cas extrêmes et les situations rares qui justifient généralement un traitement plus méticuleux.

Stratégies d'optimisation

Pour optimiser les performances, tenez compte des directives suivantes :

Cas général :

  • Utiliser s.map(d) lorsque toutes les valeurs peuvent être mappées.
  • Employer s.map(d).fillna(s['A']).astype(int) lorsque plus de 5 % des valeurs peuvent être mappées .

Quelques valeurs dans le dictionnaire :

  • Utiliser s.replace(d) lorsque moins de 5 % des valeurs sont présentes dans le dictionnaire.

Résultats de l'analyse comparative

Des tests approfondis confirment les différences de performances :

Complet Carte :

  • s.replace : 1,98 secondes
  • s.map : 84,3 millisecondes
  • Compréhension de liste : 134 millisecondes

Partiel Carte :

  • s.replace : 20,1 millisecondes
  • s.map.fillna.astype : 111 millisecondes
  • Compréhension de la liste : 243 millisecondes

Explication

La lenteur de s.replace vient de son architecture interne complexe. Cela implique :

  • Convertir le dictionnaire en liste
  • Parcourir la liste et vérifier les dictionnaires imbriqués
  • Passer un itérateur de clés et de valeurs à la fonction de remplacement

En revanche, le code de s.map est nettement plus simple, ce qui donne un résultat supérieur performances.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal