Pandas est une puissante bibliothèque de manipulation de données en Python. Une tâche fréquente consiste à déterminer le nombre de valeurs uniques au sein de différents groupes de votre jeu de données. Cet article explorera trois méthodes Pandas efficaces pour y parvenir : groupby().nunique()
, groupby().agg()
et groupby().unique()
. Chaque méthode sera illustrée par des exemples clairs.
Table des matières
Méthode groupby().nunique()
La méthode nunique()
, utilisée après une opération groupby()
, fournit directement le nombre de valeurs uniques pour chaque groupe. Il s’agit souvent de l’approche la plus efficace et la plus concise.
Considérez ce DataFrame d’exemple :
import pandas as pd
data = {'Group': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C'],
'Value': ['X', 'Y', 'X', 'Z', 'Z', 'X', 'Y', 'Z', 'X']}
df = pd.DataFrame(data)
print(df)
Cela produit :
Group Value
0 A X
1 A Y
2 A X
3 B Z
4 B Z
5 C X
6 C Y
7 C Z
8 C X
Pour compter les entrées uniques de « Value » par « Group », utilisez :
unique_counts = df.groupby('Group')['Value'].nunique()
print(unique_counts)
La sortie :
Group
A 2
B 1
C 3
Name: Value, dtype: int64
Cela montre que le groupe « A » a 2 valeurs uniques, « B » a 1 et « C » a 3.
Méthode groupby().agg()
La méthode agg()
offre une plus grande flexibilité, permettant l’application de plusieurs fonctions d’agrégation à la fois. Nous pouvons l’utiliser avec nunique()
pour compter les valeurs uniques, ainsi que d’autres fonctions si nécessaire.
En utilisant le même DataFrame :
aggregated_data = df.groupby('Group')['Value'].agg(['nunique', 'count'])
print(aggregated_data)
Sortie :
nunique count
Group
A 2 3
B 1 2
C 3 4
Cela montre à la fois le nombre de valeurs uniques (nunique
) et le nombre total de valeurs (count
) pour chaque groupe. Ceci est bénéfique pour une analyse plus complète.
Méthode groupby().unique()
La méthode unique()
renvoie les valeurs uniques elles-mêmes pour chaque groupe, et non leur nombre. Bien qu’elle ne fournisse pas directement le nombre, elle est utile si vous devez voir les valeurs uniques réelles.
unique_values = df.groupby('Group')['Value'].unique()
print(unique_values)
Sortie :
Group
A [X, Y]
B [Z]
C [X, Y, Z]
Name: Value, dtype: object
Pour obtenir le nombre, une étape supplémentaire est nécessaire :
unique_value_counts = unique_values.apply(len)
print(unique_value_counts)
Cela donne le même résultat que nunique()
:
Group
A 2
B 1
C 3
Name: Value, dtype: int64
Cependant, ceci est moins efficace que d’utiliser nunique()
directement.
Conclusion : Pour simplement compter les valeurs uniques par groupe, groupby().nunique()
est la méthode la plus directe et la plus efficace. groupby().agg()
offre plus de flexibilité pour combiner nunique()
avec d’autres agrégations, tandis que groupby().unique()
est utile lorsque vous devez voir les valeurs uniques. Choisissez la méthode la mieux adaptée à vos besoins analytiques.