Considérations sur les performances pour le remplacement des valeurs dans la série Pandas par un dictionnaire
Le remplacement des valeurs dans une série Pandas par un dictionnaire est une préoccupation constante dans la communauté. Bien que les méthodes recommandées soient s.replace(d) ou s.map(d), les performances peuvent varier considérablement en fonction des caractéristiques de l'ensemble de données.
Benchmarking
Pour illustrer les différences de performances, considérons un DataFrame df contenant des entiers aléatoires compris entre 0 et 999.
import pandas as pd, numpy as np df = pd.DataFrame({'A': np.random.randint(0, 1000, 1000000)})
Cas général
Si nous créons un dictionnaire d mappant les valeurs à leurs successeurs (par exemple, d = {i : i 1 for i in range (1000)}), on observe :
# Full-range dictionary %timeit df['A'].replace(d) # 1.98s %timeit df['A'].map(d) # 84.3ms # Partial-range dictionary d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # 20.1ms %timeit df['A'].map(d).fillna(df['A']).astype(int) # 111ms
Méthode optimale Sélection
Sur la base d'une analyse comparative, il est évident que s.map est supérieur dans les deux scénarios :
Pourquoi s .replace Slow?
s.replace entreprend des opérations plus étendues que s.map. Cela implique de convertir le dictionnaire en liste, de le parcourir et de vérifier les dictionnaires imbriqués avant d'effectuer le remplacement.
En revanche, s.map vérifie simplement si l'argument donné est un dictionnaire ou une série et le convertit si nécessaire. Il mappe efficacement les valeurs en fonction de l'index.
Options alternatives
Dans les cas spécifiques où les performances sont cruciales :
Conclusion
Le choix optimal pour remplacer les valeurs d'une série Pandas par un dictionnaire dépend de facteurs tels que la taille du DataFrame, le nombre de valeurs uniques dans le dictionnaire et l'exhaustivité du mappage. En examinant attentivement ces facteurs, les développeurs peuvent sélectionner la méthode la plus efficace pour leur situation particulière.
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!