Pandas: wie man groupby verwendet und bedingt zählt


Sie können die folgende grundlegende Syntax verwenden, um eine Groupby- und Count-With-Bedingung in einem Pandas-DataFrame durchzuführen:

 df. groupby (' var1 ')[' var2 ']. apply ( lambda x:(x==' val '). sum ()). reset_index (name=' count ')

Diese spezielle Syntax gruppiert die Zeilen des DataFrame basierend auf var1 und zählt dann die Anzahl der Zeilen, bei denen var2 gleich „val“ ist.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Groupby und Count with Condition in Pandas

Angenommen, wir haben den folgenden Pandas-DataFrame, der Informationen über verschiedene Basketballspieler enthält:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' pos ': ['Gu', 'Fo', 'Fo', 'Fo', 'Gu', 'Gu', 'Fo', 'Fo'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28]})

#view DataFrame
print (df)

  team pos points
0 A Gu 18
1 A Fo 22
2 A Fo 19
3 A Fo 14
4 B Gu 14
5 B Gu 11
6 B Fo 20
7 B Fo 28

Der folgende Code zeigt, wie man den DataFrame nach der Teamvariablen gruppiert und die Anzahl der Zeilen zählt, in denen die Pos- Variable gleich „Gu“ ist:

 #groupby team and count number of 'pos' equal to 'Gu'
df_count = df. groupby (' team ')[' pos ']. apply ( lambda x: (x==' Gu '). sum ()). reset_index (name=' count ')

#view results
print (df_count)

  team count
0 to 1
1 B 2

Aus dem Ergebnis können wir sehen:

  • Team A hat 1 Zeile, in der die Pos-Spalte gleich „Gu“ ist.
  • Team B hat 2 Zeilen, in denen die Pos-Spalte gleich „Gu“ ist.

Wir können eine ähnliche Syntax verwenden, um eine Gruppierung durchzuführen und mit einer numerischen Bedingung zu zählen.

Der folgende Code zeigt beispielsweise, wie man nach Teamvariable gruppiert und die Anzahl der Zeilen zählt, in denen die Punktevariable größer als 15 ist:

 #groupby team and count number of 'points' greater than 15
df_count = df. groupby (' team ')[' points ']. apply ( lambda x: (x>15). sum ()). reset_index (name=' count ')

#view results
print (df_count)

  team count
0 to 3
1 B 2

Aus dem Ergebnis können wir sehen:

  • Team A hat 3 Linien, in denen die Punktespalte größer als 15 ist
  • Team B hat 2 Linien, in denen die Punktespalte größer als 15 ist

Sie können eine ähnliche Syntax verwenden, um eine Gruppierung und Zählung mit jeder gewünschten spezifischen Bedingung durchzuführen.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:

So zählen Sie eindeutige Werte mit Pandas GroupBy
So wenden Sie eine Funktion auf Pandas Groupby an
So erstellen Sie ein Balkendiagramm aus Pandas GroupBy

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert