Pandas-Benutzer stehen häufig vor der Notwendigkeit, neue Spalten basierend auf vorhandenen zu erstellen. Zwei beliebte Methoden für diese Aufgabe sind die Apply-Funktion von Pandas und die Vectorize-Funktion von NumPy. Der Geschwindigkeitsunterschied zwischen diesen Ansätzen ist jedoch eine Frage, die nicht gründlich untersucht wurde.
Basierend auf Beobachtungen und Experimenten wird erwartet, dass np.vectorize ist deutlich schneller als df.apply, insbesondere bei größeren Datensätzen.
Der Hauptgrund für die Leistungslücke liegt in der Art jedes Ansatzes.
df.apply funktioniert, indem es jede Zeile im DataFrame durchläuft und die gegebene Funktion auswertet. Dies beinhaltet die Erstellung und Bearbeitung von Objekten der Pandas-Serie, die aufgrund ihres Index, ihrer Werte und Attribute einen erheblichen Mehraufwand verursachen.
Andererseits konvertiert np.vectorize die Eingabefunktion in eine universelle Funktion (ufunc ), das direkt auf NumPy-Arrays arbeitet. Dies ermöglicht vektorisierte Berechnungen, die hoch optimiert sind und Schleifen auf Python-Ebene vermeiden.
Das Experiment der Frage zeigt den erheblichen Geschwindigkeitsvorteil von np. Vektorisierung über df.apply für unterschiedliche Datensatzgrößen. Für einen DataFrame mit 1 Million Zeilen wurde festgestellt, dass np.vectorize über 25-mal schneller ist.
Während np.vectorize im Allgemeinen schneller ist, Es sind einige wichtige Vorbehalte zu beachten:
Das obige ist der detaillierte Inhalt vonnp.vectorize vs. Pandas gelten: Was ist schneller für große Datensätze?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!