Data Analysis

Comptage efficace des valeurs uniques par groupe dans Pandas

Spread the love

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *