Groupe de pandas par compte
-
Compter la valeur des valeurs uniques des lignes en utilisant la méthode
Series.value_counts()
-
Comptage des valeurs des groupes de DataFrame à l’aide de la fonction
DataFrame.groupby()
-
Obtenez plusieurs valeurs statistiques de chaque groupe en utilisant la méthode
pandas.DataFrame.agg()
Ce tutoriel explique comment nous pouvons obtenir des statistiques comme count
, sum
, max
et bien plus encore pour les groupes dérivés en utilisant la méthode DataFrame.groupby()
.
Nous utiliserons le automobile_data_df
montré dans l’exemple ci-dessus pour expliquer les concepts. La DataFrame est constituée des employés, et des marques de voitures et de vélos qu’ils utilisent.
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)
Production :
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
Compter la valeur des valeurs uniques des lignes en utilisant la méthode Series.value_counts()
Si nous voulons compter chaque valeur unique d’une seule colonne dans un DataFrame, nous pouvons utiliser la méthode Series.value_counts()
.
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())
Production :
Toyota 3
Volkswagen 2
Cherlovet 1
Chevrolet 1
Name: Car Brand, dtype: int64
Elle imprimera toutes les valeurs uniques dans la colonne Car Brand
de automobile_data_df
avec leurs comptes. La méthode n’est applicable que si nous voulons voir les valeurs d’une seule colonne à la fois.
Comptage des valeurs des groupes de DataFrame à l’aide de la fonction DataFrame.groupby()
Nous utilisons la fonction DataFrame.groupby()
pour diviser une DataFrame en plusieurs groupes et ensuite utiliser la méthode size()
pour compter les valeurs de chaque groupe créé.
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"))
Production :
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
Il imprime une DatFrame avec toutes les combinaisons uniques de valeurs des colonnes Car Brand
et Motorbike Brand
à partir du automobile_data_df
avec le compte des occurrences de ces combinaisons dans la DataFrame automobile_data_df
.
La méthode groupby()
divise le automobile_data_df
en groupes. Les lignes ayant les mêmes valeurs des colonnes Marque de voiture
et Marque de moto
seront placées dans le même groupe. La méthode size()
donnera le nombre de valeurs dans chaque groupe et finalement nous générons le DataFrame à partir du nombre de valeurs dans chaque groupe.
Obtenez plusieurs valeurs statistiques de chaque groupe en utilisant la méthode pandas.DataFrame.agg()
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]}))
Production :
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
Il affiche le minimum, le maximum et la somme des valeurs de Monthly Salary
pour chaque groupe généré.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn