Leistungsüberlegungen zum Ersetzen von Werten in Pandas-Reihen durch ein Wörterbuch
Das Ersetzen von Werten in einer Pandas-Reihe durch ein Wörterbuch war ein anhaltendes Problem in die Gemeinschaft. Während die empfohlenen Methoden s.replace(d) oder s.map(d) sind, kann die Leistung je nach den Eigenschaften des Datensatzes erheblich variieren.
Benchmarking
Um die Leistungsunterschiede zu veranschaulichen, betrachten wir einen DataFrame df, der zufällige Ganzzahlen zwischen 0 und 999 enthält.
import pandas as pd, numpy as np df = pd.DataFrame({'A': np.random.randint(0, 1000, 1000000)})
Allgemeiner Fall
Wenn wir ein Wörterbuch erstellen, dem d Werte zuordnen ihre Nachfolger (z. B. d = {i: i 1 for i in range(1000)}), beobachten wir:
# Full-range dictionary %timeit df['A'].replace(d) # 1.98s %timeit df['A'].map(d) # 84.3ms # Partial-range dictionary d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # 20.1ms %timeit df['A'].map(d).fillna(df['A']).astype(int) # 111ms
Optimale Methodenauswahl
Basierend Beim Benchmarking zeigt sich, dass s.map in beiden Szenarien überlegen ist:
Warum ist s.replace langsam?
s.replace führt umfangreichere Vorgänge durch als s.map. Dazu gehört das Konvertieren des Wörterbuchs in eine Liste, das Durchlaufen der Liste und das Überprüfen auf verschachtelte Wörterbücher, bevor die Ersetzung durchgeführt wird.
Im Gegensatz dazu prüft s.map einfach, ob das angegebene Argument ein Wörterbuch oder eine Serie ist, und konvertiert es gegebenenfalls notwendig. Es bildet die Werte effizient basierend auf dem Index ab.
Alternative Optionen
In bestimmten Fällen, in denen die Leistung entscheidend ist:
Fazit
Die optimale Wahl zum Ersetzen von Werten in einer Pandas-Reihe durch ein Wörterbuch hängt von Faktoren wie ab B. die Größe des DataFrame, die Anzahl der eindeutigen Werte im Wörterbuch und die Vollständigkeit der Zuordnung. Durch sorgfältige Berücksichtigung dieser Faktoren können Entwickler die effizienteste Methode für ihre spezielle Situation auswählen.
Das obige ist der detaillierte Inhalt vonWelche Pandas-Methode ist bei der wörterbuchbasierten Werteersetzung in Reihen leistungsstärker?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!