Pandas : comment utiliser GroupBy & Trier au sein des groupes
Vous pouvez utiliser la syntaxe suivante pour regrouper les lignes dans un DataFrame pandas, puis trier les valeurs au sein des groupes :
df.sort_values(['var1','var2'],ascending=False).groupby('var1').head()
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : utiliser GroupBy et trier dans les groupes dans Pandas
Supposons que nous ayons le DataFrame pandas suivant qui montre les ventes réalisées dans deux magasins différents :
import pandas as pd
#create DataFrame
df = pd.DataFrame({'store': ['B', 'B', 'A', 'A', 'B', 'B', 'A', 'A'],
'sales': [12, 25, 8, 14, 10, 20, 30, 30]})
#view DataFrame
print(df)
store sales
0 B 12
1 B 25
2 A 8
3 A 14
4 B 10
5 B 20
6 A 30
7 A 30
Nous pouvons utiliser la syntaxe suivante pour regrouper les lignes par colonne de magasin et trier par ordre décroissant en fonction de la colonne de ventes :
#group by store and sort by sales values in descending order
df.sort_values(['store','sales'],ascending=False).groupby('store').head()
store sales
1 B 25
5 B 20
0 B 12
4 B 10
6 A 30
7 A 30
3 A 14
2 A 8
Notez que nous pourrions également supprimer l’argument ascending=False pour trier les valeurs des ventes par ordre croissant :
#group by store and sort by sales values in ascending order
df.sort_values(['store','sales']).groupby('store').head()
store sales
2 A 8
3 A 14
6 A 30
7 A 30
4 B 10
0 B 12
5 B 20
1 B 25
Notez que la fonction head() affiche uniquement les 5 premières valeurs par groupe.
Pour afficher les n premières valeurs par groupe, utilisez simplement head(n) à la place.
Remarque : Vous pouvez trouver la documentation complète de l’opération GroupBy dans pandas ici .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Pandas : comment calculer la somme cumulée par groupe
Pandas : comment compter les valeurs uniques par groupe
Pandas : comment calculer la corrélation par groupe