Maison >développement back-end >Tutoriel Python >Pourquoi les « iterrows » de Pandas sont-elles si lentes et comment puis-je améliorer les performances ?

Pourquoi les « iterrows » de Pandas sont-elles si lentes et comment puis-je améliorer les performances ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-26 16:58:10931parcourir

Why is Pandas `iterrows` So Slow, and How Can I Improve Performance?

Problèmes de performances avec les iterrows Pandas

iterrows, une fonction pandas pour l'itération par ligne, a été observé pour présenter des défauts de performances. Bien que le problème puisse être lié à des types mixtes dans le dataframe, même des scénarios simples sans ce problème démontrent des retards de performances importants.

Les opérations vectorisées, telles que l'application, surpassent souvent les iterrows, soulevant des questions sur la nécessité du row-by itération de ligne. Cependant, il existe des cas où iterrows reste inévitable.

Raisons des problèmes de performances d'Iterrows

En général, iterrows est moins efficace que la vectorisation, l'application et les iterrows en raison des caractéristiques de performances. :

  • Vectorisation : les opérations vectorielles permettent une grande efficacité calculs.
  • Apply : Apply est optimisé par pandas, avec certaines opérations exécutées en Cython, offrant des gains de performances marqués.
  • Itertuples : Itertuples évite le boxing de données, récupérant les données sous forme de tuples.
  • Iterrows : Iterrows regroupe les données dans des objets Series, conduisant à des performances pénalités.

Directives pour des performances optimales

Pour optimiser les performances, tenez compte des directives suivantes :

  1. Donner la priorité à la vectorisation autant que possible.
  2. Utilisez apply lorsque la vectorisation n'est pas réalisable.
  3. Envisagez itertuples pour le non-boxing dans des scénarios spécifiques.
  4. Évitez les iterrows lorsque cela est possible, car cela introduit des goulots d'étranglement en termes de performances.
  5. Créez de nouvelles structures et concaténez-les pour éviter les mises à jour ligne par ligne sur des dataframes vides.

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!

Déclaration:
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