Pandas Groupby-Zählung
-
Zählen der eindeutigen Zeilenwerte mit der Methode
Series.value_counts()
-
Zählen der Werte von DataFrame-Gruppen mit der Funktion
DataFrame.groupby()
-
Mehrere Statistikwerte jeder Gruppe mit der Methode
pandas.DataFrame.agg()
ermitteln
Dieses Tutorial erklärt, wie wir Statistiken wie count
, sum
, max
und vieles mehr für Gruppen erhalten können, die mit der Methode DataFrame.groupby()
abgeleitet wurden.
Wir werden das im obigen Beispiel gezeigte automobile_data_df
verwenden, um die Konzepte zu erklären. Der DataFrame besteht aus Mitarbeitern und den von ihnen verwendeten Auto- und Fahrradmarken.
import pandas as pd
automobile_data = [
["Chevrolet", "Yamaha"],
["Toyota", "Ducati"],
["Volkswagen", "BMW"],
["Cherlovet", "Kawasaki"],
["Toyota", "Ducati"],
["Toyota", "BMW"],
["Volkswagen", "BMW"],
]
column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
automobile_data, index=index_names, columns=column_names
)
print(automobile_data_df)
Ausgabe
Car Brand Motorbike Brand
Steven Chevrolet Yamaha
Robert Toyota Ducati
Jimmy Volkswagen BMW
Mike Cherlovet Kawasaki
Phoenix Toyota Ducati
Scott Toyota BMW
John Volkswagen BMW
Zählen der eindeutigen Zeilenwerte mit der Methode Series.value_counts()
Wenn wir die Anzahl der eindeutigen Werte einer einzelnen Spalte in einem DataFrame ausgeben möchten, können wir die Methode Series.value_counts()
verwenden.
import pandas as pd
automobile_data = [
["Chevrolet", "Yamaha"],
["Toyota", "Ducati"],
["Volkswagen", "BMW"],
["Cherlovet", "Kawasaki"],
["Toyota", "Ducati"],
["Toyota", "BMW"],
["Volkswagen", "BMW"],
]
column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
automobile_data, index=index_names, columns=column_names
)
print(automobile_data_df["Car Brand"].value_counts())
Ausgabe:
Toyota 3
Volkswagen 2
Cherlovet 1
Chevrolet 1
Name: Car Brand, dtype: int64
Sie gibt alle eindeutigen Werte in der Spalte Car Brand
von automobile_data_df
zusammen mit ihrer Anzahl aus. Die Methode ist nur anwendbar, wenn wir die Anzahl der Werte nur einer Spalte auf einmal sehen wollen.
Zählen der Werte von DataFrame-Gruppen mit der Funktion DataFrame.groupby()
Wir verwenden die Funktion DataFrame.groupby()
, um einen DataFrame in mehrere Gruppen aufzuteilen und verwenden dann die Methode size()
, um die Werte jeder erstellten Gruppe zu zählen.
import pandas as pd
automobile_data = [
["Chevrolet", "Yamaha"],
["Toyota", "Ducati"],
["Volkswagen", "BMW"],
["Cherlovet", "Kawasaki"],
["Toyota", "Ducati"],
["Toyota", "BMW"],
["Volkswagen", "BMW"],
]
column_names = ["Car Brand", "Motorbike Brand"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
automobile_data, index=index_names, columns=column_names
)
group = automobile_data_df.groupby(["Car Brand", "Motorbike Brand"])
print(group.size().reset_index(name="counts"))
Ausgabe:
Car Brand Motorbike Brand counts
0 Cherlovet Kawasaki 1
1 Chevrolet Yamaha 1
2 Toyota BMW 1
3 Toyota Ducati 2
4 Volkswagen BMW 2
Es wird ein DatFrame mit allen eindeutigen Kombinationen von Werten der Spalten Car Brand
und Motorbike Brand
aus dem automobile_data_df
zusammen mit der Anzahl der Vorkommen dieser Kombinationen im automobile_data_df
DataFrame ausgegeben.
Die Methode groupby()
teilt die automobile_data_df
in Gruppen auf. Die Zeilen mit den gleichen Werten der Spalten Car Brand
und Motorbike Brand
werden in die gleiche Gruppe eingeordnet. Die Methode size()
liefert die Anzahl der Werte in jeder Gruppe und schließlich erzeugen wir einen DataFrame aus der Anzahl der Werte in jeder Gruppe.
Mehrere Statistikwerte jeder Gruppe mit der Methode pandas.DataFrame.agg()
ermitteln
import pandas as pd
automobile_data = [
["Chevrolet", "Yamaha", 4000],
["Toyota", "Ducati", 5000],
["Volkswagen", "BMW", 4500],
["Cherlovet", "Kawasaki", 3800],
["Toyota", "Ducati", 4500],
["Toyota", "BMW", 5000],
["Volkswagen", "BMW", 6000],
]
column_names = ["Car Brand", "Motorbike Brand", "Monthly Salary"]
index_names = ["Steven", "Robert", "Jimmy", "Mike", "Phoenix", "Scott", "John"]
automobile_data_df = pd.DataFrame(
automobile_data, index=index_names, columns=column_names
)
group = automobile_data_df.groupby(["Car Brand", "Motorbike Brand"])
print(group.agg({"Monthly Salary": [min, max, sum]}))
Ausgabe:
Monthly Salary
min max sum
Car Brand Motorbike Brand
Cherlovet Kawasaki 3800 3800 3800
Chevrolet Yamaha 4000 4000 4000
Toyota BMW 5000 5000 5000
Ducati 4500 5000 9500
Volkswagen BMW 4500 6000 10500
Es werden das Minimum, das Maximum und die Summe der Werte des Monthly Salary
für jede generierte Gruppe angezeigt.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn