Pandas ist eine der beliebtesten Bibliotheken. Als ich nach einer einfacheren Möglichkeit suchte, ihre Leistung zu beschleunigen, entdeckte ich FireDucks und begann mich dafür zu interessieren!
Je nachdem, wie es geschrieben wurde, kann es bei einem Pandas-Programm zu ernsthaften Leistungsproblemen kommen. Als Datenwissenschaftler möchte ich jedoch immer mehr Zeit damit verbringen, Daten zu analysieren, anstatt die Leistung meines Codes zu verbessern. Es wäre also großartig, wenn es so etwas wie die Vertauschung der Reihenfolge von Prozessen und die automatische Beschleunigung der Programmleistung bewerkstelligen könnte. Beispielsweise wird Prozess A =>Prozess B langsamer sein, daher werden wir ihn als Prozess B =>Prozess A ersetzen. (Natürlich ist das Ergebnis garantiert das gleiche.) Es heißt, dass Datenwissenschaftler etwa 45 % dafür ausgeben. Sie haben viel Zeit mit der Vorbereitung der Daten verbracht und als ich darüber nachdachte, etwas zu tun, um den Prozess zu beschleunigen, stieß ich auf ein Modul namens FireDucks.
Aus der FireDucks-Dokumentation geht hervor, dass es nur für Linux-Plattformen unterstützt wird. Da ich Windows auf meinem Hauptcomputer verwende, würde ich es gerne von WSL2 (Windows-Subsystem für Linux) aus ausprobieren, einer Umgebung, die Linux unter Windows ausführen kann.
Die Umgebung, die ich ausprobiert habe, ist wie folgt.
WSL wurde mit Hilfe der folgenden Microsoft-Dokumentation installiert; die Linux-Distribution ist Ubuntu 22.04.1 LTS.
Dann installieren Sie tatsächlich FireDucks. Die Installation ist jedoch sehr einfach.
pip install fireducks
Die Installation von FireDucks (zusammen mit Pyarrow, Pandas und anderen Bibliotheken) dauert einige Minuten.
Ich habe versucht, den folgenden Code auszuführen. Die Ladegeschwindigkeit war so hoch, dass Pandas 4 Sekunden brauchten und FireDucks nur 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 5All diese Datenvorverarbeitung und -analyse dauerte bei Pandas etwa 8 Sekunden, während sie bei Verwendung von FireDucks innerhalb von 4 Sekunden abgeschlossen werden konnte. Es konnte eine fast doppelt so hohe Geschwindigkeit erreicht werden.
Verbesserte Leistung
Eines der stressigsten Dinge bei der Verwendung von Pandas ist das Warten beim Laden großer Datensätze, und dann muss ich auf komplexe Vorgänge wie Groupby warten. Da FireDucks andererseits eine verzögerte Auswertung durchführt, nimmt das Laden selbst überhaupt keine Zeit in Anspruch, sodass die Verarbeitung dort erfolgt, wo sie benötigt wird, und ich empfand dies als sehr bedeutsam, da die Gesamtwartezeit erheblich verkürzt wurde.
Was die sonstige Leistung betrifft, so scheint es, dass eine bis zu 16-mal schnellere Leistung im Vergleich zu Pandas erreicht wurde, wie von der Organisation offiziell bekannt gegeben wurde. (Ich werde die Leistung das nächste Mal mit verschiedenen konkurrierenden Bibliotheken vergleichen.)
Keine Lernkosten
Die Möglichkeit, der genauen Pandas-Notation zu folgen, ohne über irgendetwas nachdenken zu müssen, ist ein großer Vorteil. Abgesehen von FireDucks gibt es noch andere Datenrahmenbeschleunigungsbibliotheken, aber sie sind zu teuer zum Erlernen und zu leicht zu vergessen.
Wenn Sie beispielsweise Spalten mit Polaren hinzufügen möchten, müssen Sie so etwas schreiben.
# pandas df["new_col"] = df["A"] 1 # polars df = df.with_columns((pl.col("A") 1).alias("new_col"))Es ist nahezu nicht erforderlich, einen vorhandenen Code zu ändern
Ich habe mehrere ETLs und andere Projekte, die Pandas verwenden, und es wäre schön, eine Leistungsverbesserung zu sehen, indem ich einfach die Importanweisung installiere und durch FireDucks ersetze.
Wenn Sie es weiter hinzufügen möchten, können Sie unten einen Kommentar abgeben.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3