Pandas est l'une des bibliothèques les plus populaires, alors que je cherchais un moyen plus simple d'accélérer ses performances, j'ai découvert FireDucks et je m'y suis intéressé !
Un programme Pandas peut rencontrer de sérieux problèmes de performances selon la façon dont il a été écrit. Cependant, en tant que data scientist, je souhaite passer de plus en plus de temps à analyser les données plutôt qu'à améliorer les performances de mon code. Ce serait donc formidable s'il pouvait faire quelque chose comme inverser l'ordre des processus et accélérer automatiquement les performances du programme. Par exemple, Processus A => Processus B sera plus lent, nous le remplacerons donc par Processus B => Processus A. (Bien sûr, le résultat est garanti être le même.) On dit que les data scientists dépensent environ 45 % de leur temps à préparer les données, et alors que je pensais faire quelque chose pour accélérer le processus, je suis tombé sur un module appelé FireDucks.
D'après la documentation FireDucks, il semble être pris en charge uniquement pour les plates-formes Linux. Puisque j'utilise Windows sur ma machine principale, j'aimerais l'essayer à partir de WSL2 (Windows Subsystem for Linux), un environnement qui peut exécuter Linux sous Windows.
L'environnement que j'ai essayé est le suivant.
WSL a été installé à l'aide de la documentation Microsoft suivante ; la distribution Linux est Ubuntu 22.04.1 LTS.
Ensuite, installez FireDucks. Il est cependant très facile à installer.
pip installer des canards de feu
L'installation de FireDucks prendra quelques minutes (avec pyarrow, pandas et autres bibliothèques).
J'ai essayé d'exécuter le code ci-dessous, la vitesse de chargement était si rapide, les pandas ont pris 4 secondes et les fireDucks n'ont pris que 74,5 ns.
# 1. analysis based on time period and creative duration # convert timestamp to date/time object df['timestamp_converted'] = pd.to_datetime(df['timestamp'], unit='s ') # define time period def get_part_of_day(hour): if 5Tous ces prétraitements et analyses de données prenaient environ 8 secondes chez les pandas, alors qu'ils pouvaient être terminés en 4 secondes avec FireDucks. Une vitesse presque 2 fois supérieure pourrait être atteinte.
Performances améliorées
L'une des choses les plus stressantes liées à l'utilisation de pandas est d'attendre lors du chargement de grands ensembles de données, puis je dois attendre une opération complexe comme groupby. D'un autre côté, comme FireDucks effectue une évaluation paresseuse, le chargement lui-même ne prend aucun temps, le traitement est donc effectué là où il est nécessaire, et j'ai pensé que c'était très significatif avec une grande réduction du temps d'attente total.
En ce qui concerne les autres performances, il semble que des performances jusqu'à 16 fois plus rapides que celles des pandas aient été atteintes, comme l'a officiellement annoncé l'organisation. (Je comparerai les performances avec diverses bibliothèques concurrentes la prochaine fois.)
zéro coût d'apprentissage
La possibilité de suivre la notation exacte des pandas sans avoir à penser à quoi que ce soit est un énorme avantage. Outre FireDucks, il existe d'autres bibliothèques d'accélération de trames de données, mais elles sont trop coûteuses à apprendre et trop faciles à oublier.
Par exemple, si vous souhaitez ajouter des colonnes avec des polaires, vous devez écrire quelque chose comme ceci.
# pandas df["new_col"] = df["A"] 1 # polars df = df.with_columns((pl.col("A") 1).alias("new_col"))Presque pas besoin de modifier un code existant
J'ai plusieurs ETL et autres projets qui utilisent des pandas, et ce serait bien de voir une amélioration des performances simplement en installant et en remplaçant l'instruction d'importation par FireDucks.
Si vous souhaitez l'ajouter davantage, n'hésitez pas à commenter ci-dessous.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3