Comment effectuer un regroupement de données en Python : avec des exemples
Vous pouvez utiliser la syntaxe de base suivante pour effectuer un regroupement de données sur un DataFrame pandas :
import pandas as pd #perform binning with 3 bins df['new_bin'] = pd.qcut(df['variable_name'], q=3)
Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec le DataFrame pandas suivant :
import pandas as pd
#create DataFrame
df = pd.DataFrame({'points': [4, 4, 7, 8, 12, 13, 15, 18, 22, 23, 23, 25],
'assists': [2, 5, 4, 7, 7, 8, 5, 4, 5, 11, 13, 8],
'rebounds': [7, 7, 4, 6, 3, 8, 9, 9, 12, 11, 8, 9]})
#view DataFrame
print(df)
points assists rebounds
0 4 2 7
1 4 5 7
2 7 4 4
3 8 7 6
4 12 7 3
5 13 8 8
6 15 5 9
7 18 4 9
8 22 5 12
9 23 11 11
10 23 13 8
11 25 8 9
Exemple 1 : Effectuer un regroupement de données de base
Le code suivant montre comment effectuer un regroupement de données sur la variable points à l’aide de la fonction qcut() avec des marques de rupture spécifiques :
#perform data binning on points variable
df['points_bin'] = pd.qcut(df['points'], q=3)
#view updated DataFrame
print(df)
points assists rebounds points_bin
0 4 2 7 (3.999, 10.667]
1 4 5 7 (3.999, 10.667]
2 7 4 4 (3.999, 10.667]
3 8 7 6 (3.999, 10.667]
4 12 7 3 (10.667, 19.333]
5 13 8 8 (10.667, 19.333]
6 15 5 9 (10.667, 19.333]
7 18 4 9 (10.667, 19.333]
8 22 5 12 (19.333, 25.0]
9 23 11 11 (19.333, 25.0]
10 23 13 8 (19.333, 25.0]
11 25 8 9 (19.333, 25.0]
Notez que chaque ligne du bloc de données a été placée dans l’un des trois groupes en fonction de la valeur de la colonne de points.
Nous pouvons utiliser la fonction value_counts() pour trouver combien de lignes ont été placées dans chaque bac :
#count frequency of each bin
df['points_bin'].value_counts()
(3.999, 10.667] 4
(10.667, 19.333] 4
(19.333, 25.0] 4
Name: points_bin, dtype: int64
On peut voir que chaque bin contient 4 observations.
Exemple 2 : Effectuer un regroupement de données avec des quantiles spécifiques
Nous pouvons également effectuer un regroupement de données en utilisant des quantiles spécifiques :
#perform data binning on points variable with specific quantiles
df['points_bin'] = pd.qcut(df['points'], q=[0, .2, .4, .6, .8, 1])
#view updated DataFrame
print(df)
points assists rebounds points_bin
0 4 2 7 (3.999, 7.2]
1 4 5 7 (3.999, 7.2]
2 7 4 4 (3.999, 7.2]
3 8 7 6 (7.2, 12.4]
4 12 7 3 (7.2, 12.4]
5 13 8 8 (12.4, 16.8]
6 15 5 9 (12.4, 16.8]
7 18 4 9 (16.8, 22.8]
8 22 5 12 (16.8, 22.8]
9 23 11 11 (22.8, 25.0]
10 23 13 8 (22.8, 25.0]
11 25 8 9 (22.8, 25.0]
Exemple 3 : Effectuer un regroupement de données avec des étiquettes
Nous pouvons également effectuer un regroupement de données en utilisant des quantiles et des étiquettes spécifiques :
#perform data binning on points variable with specific quantiles and labels
df['points_bin'] = pd.qcut(df['points'],
q=[0, .2, .4, .6, .8, 1],
labels=['A', 'B', 'C', 'D', 'E'])
#view updated DataFrame
print(df)
points assists rebounds points_bin
0 4 2 7 A
1 4 5 7 A
2 7 4 4 A
3 8 7 6 B
4 12 7 3 B
5 13 8 8 C
6 15 5 9 C
7 18 4 9 D
8 22 5 12 D
9 23 11 11 E
10 23 13 8 E
11 25 8 9 E
Notez que chaque ligne s’est vu attribuer un bac en fonction de la valeur de la colonne de points et que les bacs ont été étiquetés à l’aide de lettres.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :
Pandas : comment utiliser la fonction value_counts()
Pandas : Comment créer un tableau croisé dynamique avec le nombre de valeurs
Pandas : comment compter les occurrences de valeur spécifique dans une colonne