Si tu n'es pas en mesure de coder une approche vectorisée, essaye ceci.

#124 - Une simple astuce pour améliorer le temps d'exécution de l'itération sur un DataFrame

Comparaison durée d'exécution pour itérer sur un DataFrame

Bien que nous ne devrions jamais itérer sur un DataFrame (et lui préférer un code vectorisé), que se passe-t-il si nous ne sommes pas en mesure de trouver une solution vectorisée ?

Alors admettons que l’on soit obligé d'itérer. Quelle est la meilleure façon de le faire ?

Tout d'abord, il faut comprendre que la raison principale de la lenteur d'itération est due à la façon dont un DataFrame est stocké en mémoire.

Comme il s'agit d'une structure de données à colonnes principales, l'extraction de ses lignes nécessite l'accès à des blocs de mémoire non contigus. Cela augmente considérablement le temps d'exécution.

Cependant, si tu souhaites effectuer uniquement des opérations basées sur les lignes, une solution rapide consiste à convertir le DataFrame en un tableau NumPy.

NumPy est plus rapide ici car, par défaut, il stocke les données de manière à ce que les lignes soient majoritaires. Ainsi, ses lignes sont récupérées en accédant à des blocs de mémoire contigus, ce qui le rend efficace pour l'itération d'un DataFrame.

Ceci étant dit, note bien que la meilleure façon reste de toujours écrire du code vectorisé. N'utilise l'approche Pandas-to-NumPy que lorsque tu as vraiment des difficultés à écrire du code vectorisé.

Ça t'a plu ? 😎

Connexion ou S'abonner pour participer aux sondages.

Reply

or to participate.