Heim  >  Artikel  >  Backend-Entwicklung  >  Welche Pandas-Methode ist bei der wörterbuchbasierten Werteersetzung in Reihen leistungsstärker?

Welche Pandas-Methode ist bei der wörterbuchbasierten Werteersetzung in Reihen leistungsstärker?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-15 20:01:02902Durchsuche

Which Pandas Method Outperforms for Dictionary-Based Value Replacement in Series?

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:

  • Vollständige Karte:Verwenden Sie s.map(d) für eine vollständige Abdeckung.
  • Teilkarte (z. B. < 5 %-Werte): Verwenden Sie s.map(d).fillna(s['A']).astype(int), um fehlende Werte auszufüllen.

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:

  • Listenverständnis: Das Durchführen einer Ersetzungsoperation mithilfe eines Listenverständnisses kann geringfügig schneller sein als mit s.map.
  • s.apply(pd.to_numeric): Diese Methode kann die Leistung erheblich verbessern beim Ersetzen von Werten durch fehlende oder nicht numerische Daten.

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!

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