Amélioration des performances de remplacement des valeurs dans les séries Pandas à l'aide de dictionnaires
Le remplacement des valeurs dans une série Pandas à l'aide d'un dictionnaire est une tâche courante. Bien que le remplacement des valeurs à l'aide de s.replace(d) soit recommandé, cela peut être beaucoup plus lent que l'utilisation d'une simple compréhension de liste.
Causes de la lenteur des performances
La lenteur des performances de s.replace(d) découle de sa gestion des cas extrêmes et des situations rares. Cela implique :
Méthodes alternatives
Pour améliorer les performances, pensez à utiliser les méthodes suivantes :
Benchmarking
Les benchmarks démontrent la différence de performances entre s.replace(d), s .map(d) et compréhension de liste :
##### Full Map ##### d = {i: i+1 for i in range(1000)} %timeit df['A'].replace(d) # Slow (1.98s) %timeit df['A'].map(d) # Fast (84.3ms) ##### Partial Map ##### d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # Intermediate (20.1ms) %timeit df['A'].map(d).fillna(df['A']).astype(int) # Faster (111ms)
Cela révèle que s.map(d) est systématiquement plus rapide que s.replace(d) pour les mappages complets ou partiels.
Conclusion
En fonction de l'exhaustivité de la couverture du dictionnaire, s.map(d) ou s.map(d).fillna(s['A']).astype(int) devrait être préféré à s.replace(d) pour un remplacement efficace de la valeur dans la série Pandas.
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!