„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > FireDucks: Holen Sie sich Leistung, die Pandas übersteigt, ohne Lernkosten!

FireDucks: Holen Sie sich Leistung, die Pandas übersteigt, ohne Lernkosten!

Veröffentlicht am 06.11.2024
Durchsuche:567

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!

Vergleich mit Pandas: Warum FireDucks?

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.

  • Betriebssystem Microsoft Windows 11 Pro
  • Version 10.0.22631 Build 22631
  • Systemmodell Z690 Pro RS
  • Systemtyp x64-basiert
  • PC-Prozessor Intel(R) Core(TM) i3–12100 der 12. Generation, 3300 MHz, 4 Kerne, 8 logische Prozessoren
  • Baseboard-Produkt Z690 Pro RS
  • Plattformrollen-Desktop
  • Installierter physischer Speicher (RAM)64,0 GB

FireDucks installieren und konfigurieren

Installieren Sie WSL

WSL wurde mit Hilfe der folgenden Microsoft-Dokumentation installiert; die Linux-Distribution ist Ubuntu 22.04.1 LTS.

Installieren Sie FireDucks

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 5 



All 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.)

FireDucks: Get performance beyond pandas with zero learning cost!

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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/codewithved/fireducks-get-performance-beyond-pandas-with-zero-learning-cost-9do?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

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