Heim >Backend-Entwicklung >Python-Tutorial >Wie berechnet man den Unterschied in den Bewertungen für mehrere Felder in einem Pandas-DataFrame?

Wie berechnet man den Unterschied in den Bewertungen für mehrere Felder in einem Pandas-DataFrame?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 01:16:03584Durchsuche

How to Calculate the Difference in Scores for Multiple Fields in a Pandas DataFrame?

Pandas gruppiert nach mehreren Feldern mit Differenzberechnung

Bei der Programmierung ist die Manipulation von Daten von entscheidender Bedeutung, und Pandas ist eine leistungsstarke Bibliothek zur Ausführung dieser Aufgaben effizient. Eine häufig gestellte Frage ist, wie man Daten nach mehreren Feldern gruppiert und Unterschiede berechnet. Lassen Sie uns untersuchen, wie wir dies erreichen können.

Problem:

Betrachten Sie einen DataFrame mit der folgenden Struktur:

         date    site country  score
0  2018-01-01  google      us    100
1  2018-01-01  google      ch     50
2  2018-01-02  google      us     70
3  2018-01-03  google      us     60
... 

Das Ziel besteht darin, das zu finden 1/3/5-Tage-Unterschied in den Bewertungen für jede „Standort/Land“-Kombination.

Lösung:

Um dieses Problem zu lösen, können wir das Groupby von Pandas verwenden und Diff-Funktionen:

  1. Datenrahmen sortieren:
df = df.sort_values(by=['site', 'country', 'date'])

Durch die Sortierung wird sichergestellt, dass unsere Daten für die richtige Gruppierung und Differenzberechnung organisiert sind.

  1. Groupby und Differenz berechnen:
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)

Diese Zeile gruppiert den DataFrame mithilfe von Groupby nach den Spalten „Site“ und „Country“. Anschließend wird mithilfe von diff die Differenz zwischen den einzelnen aufeinanderfolgenden Werten innerhalb jeder Gruppe berechnet. Das Ergebnis wird in einer neuen Spalte namens „diff“ gespeichert. Alle fehlenden Werte werden mithilfe von fillna(0) durch 0 ersetzt.

Ausgabe:

Der resultierende DataFrame enthält die ursprünglichen Spalten zusammen mit der Spalte „diff“:

         date    site country  score  diff
0  2018-01-01      fb      es    100   0.0
1  2018-01-02      fb      gb    100   0.0
...

Zusätzliche Hinweise:

  • Wenn Sie eine willkürliche Sortierung benötigen (z. B. Priorisierung von „google“ gegenüber „fb“), können Sie die Reihenfolge in angeben eine Liste und legen Sie die Spalte vor dem Sortieren als kategorisch fest.
  • Die Funktion fillna(0) ersetzt fehlende Werte durch 0, Sie können dies jedoch in jeden gewünschten Wert ändern.
  • Diese Methode kann verwendet werden um Differenzen über ein beliebiges Zeitintervall (z. B. 1 Tag, 3 Monate usw.) zu berechnen.

Das obige ist der detaillierte Inhalt vonWie berechnet man den Unterschied in den Bewertungen für mehrere Felder in einem Pandas-DataFrame?. 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