Heim >Backend-Entwicklung >Python-Tutorial >Warum ist die Pandas-Serie „s.replace' beim Ersetzen von Werten durch Wörterbücher langsamer als „s.map'?

Warum ist die Pandas-Serie „s.replace' beim Ersetzen von Werten durch Wörterbücher langsamer als „s.map'?

Linda Hamilton
Linda HamiltonOriginal
2024-11-13 16:21:02184Durchsuche

Why is Pandas series `s.replace` slower than `s.map` for replacing values through dictionaries?

Effizientes Ersetzen von Werten in Pandas-Reihen durch Wörterbücher

Häufiges Ersetzen von Werten in einer Pandas-Reihe über ein Wörterbuch (s.replace(d)). stößt auf Leistungsengpässe und ist daher deutlich langsamer als Listenverständnisansätze. Während s.map(d) eine akzeptable Leistung bietet, ist es nur geeignet, wenn alle Serienwerte in den Wörterbuchschlüsseln gefunden werden.

Verstehen der Leistungslücke

Der Hauptgrund Die Langsamkeit von s.replace liegt in seiner vielfältigen Funktionalität. Im Gegensatz zu s.map werden Randfälle und seltene Situationen behandelt, die im Allgemeinen eine sorgfältigere Verarbeitung erfordern.

Optimierungsstrategien

Um die Leistung zu optimieren, beachten Sie die folgenden Richtlinien:

Allgemeiner Fall:

  • Verwenden Sie s.map(d), wenn alle Werte zugeordnet werden können.
  • Verwenden Sie s.map(d). fillna(s['A']).astype(int) wenn mehr als 5 % der Werte zugeordnet werden können.

Wenige Werte im Wörterbuch:

  • Verwenden Sie s.replace(d), wenn weniger als 5 % der Werte im Wörterbuch vorhanden sind.

Benchmarking-Ergebnisse

Umfangreiche Tests bestätigen dies die Leistungsunterschiede:

Vollständige Karte:

  • s.replace: 1,98 Sekunden
  • s.map: 84,3 Millisekunden
  • Listenverständnis: 134 Millisekunden

Teilkarte:

  • s.replace: 20,1 Millisekunden
  • s.map. fillna.astype: 111 Millisekunden
  • Listenverständnis: 243 Millisekunden

Erklärung

Die Trägheit von s.replace rührt von seinem komplexen Inneren her Architektur. Dazu gehört:

  • Konvertieren des Wörterbuchs in eine Liste
  • Iterieren durch die Liste und Überprüfen auf verschachtelte Wörterbücher
  • Übergeben eines Iterators von Schlüsseln und Werten an die Ersetzungsfunktion

Im Gegensatz dazu ist der Code von s.map deutlich schlanker, was zu einer überlegenen Leistung führt.

Das obige ist der detaillierte Inhalt vonWarum ist die Pandas-Serie „s.replace' beim Ersetzen von Werten durch Wörterbücher langsamer als „s.map'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn