Verbesserung der Leistung der Wertersetzung in Pandas-Reihen mithilfe von Wörterbüchern
Das Ersetzen von Werten in einer Pandas-Reihe mithilfe eines Wörterbuchs ist eine häufige Aufgabe. Obwohl das Ersetzen von Werten mit s.replace(d) empfohlen wird, kann es erheblich langsamer sein als die Verwendung eines einfachen Listenverständnisses.
Ursachen für langsame Leistung
Die langsame Leistung von s.replace(d) ergibt sich aus der Behandlung von Randfällen und seltenen Situationen. Es umfasst:
Alternative Methoden
Um die Leistung zu verbessern, sollten Sie die folgenden Methoden in Betracht ziehen:
Benchmarking
Benchmarks zeigen den Leistungsunterschied zwischen s.replace(d), s .map(d) und Listenverständnis:
##### Full Map ##### d = {i: i+1 for i in range(1000)} %timeit df['A'].replace(d) # Slow (1.98s) %timeit df['A'].map(d) # Fast (84.3ms) ##### Partial Map ##### d = {i: i+1 for i in range(10)} %timeit df['A'].replace(d) # Intermediate (20.1ms) %timeit df['A'].map(d).fillna(df['A']).astype(int) # Faster (111ms)
Dies zeigt, dass s.map(d) bei vollständigen oder teilweisen Zuordnungen durchweg schneller ist als s.replace(d).
Fazit
Abhängig von der Vollständigkeit der Wörterbuchabdeckung, s.map(d) oder s.map(d).fillna(s['A']).astype(int) sollte gegenüber s.replace(d) für einen effizienten Wertersatz in der Pandas-Serie bevorzugt werden.
Das obige ist der detaillierte Inhalt vonWarum ist die Verwendung von Wörterbüchern zum Ersetzen von Werten in Pandas-Serien langsam und wie können Sie die Leistung verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!