Maison >développement back-end >Tutoriel Python >Comment compter les valeurs uniques dans les groupes avec des pandas ?

Comment compter les valeurs uniques dans les groupes avec des pandas ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-18 15:52:03255parcourir

How to Count Unique Values in Groups with Pandas?

Comptage des valeurs uniques dans des groupes avec des pandas

Lorsque vous travaillez avec des ensembles de données contenant plusieurs variables regroupées en catégories, il devient souvent nécessaire de déterminer le nombre de valeurs uniques associées à chaque groupe. Pandas, une bibliothèque Python largement utilisée pour la manipulation de données, propose plusieurs méthodes pour compter les valeurs uniques au sein des groupes.

Un besoin courant est de compter le nombre d'identifiants uniques au sein de chaque domaine. Étant donné un bloc de données avec des colonnes pour l'ID et le domaine, nous cherchons à obtenir un résultat qui affiche le nombre d'ID uniques pour chaque domaine.

Plus précisément, compte tenu des données :

      ID   domain
0    123   vk.com
1    123   vk.com
2    123  twitter.com
3    456   vk.com
4    456  facebook.com
5    456   vk.com
6    456   google.com
7    789  twitter.com
8    789   vk.com

Nous viser à obtenir le résultat suivant :

domain  count
vk.com       3
twitter.com   2
facebook.com  1
google.com    1

Pour y parvenir, nous pouvons utiliser la fonction nunique() dans l'opération groupby Pandas. En regroupant le bloc de données par colonne de domaine et en appliquant ensuite la fonction nunique() à la colonne ID, nous obtenons le nombre de valeurs uniques pour chaque domaine. Le bloc de données résultant contiendra le résultat souhaité :

df = df.groupby(['domain', 'ID']).nunique()

print(df)

Cependant, dans certains scénarios, les données peuvent contenir des caractères tels que des guillemets simples dans les noms de domaine. Pour gérer de tels cas, nous pouvons utiliser la fonction str.strip("'") pour supprimer les guillemets simples avant de regrouper et de compter. Cela peut être implémenté comme :

df = df.ID.groupby([df.domain.str.strip("'")]).nunique()

print(df)

Alternativement, nous pouvons simplifier le code en chaînant la fonction str.strip("'") au sein de l'opération groupby :

df.groupby(df.domain.str.strip("'"))['ID'].nunique()

Pour conserver la colonne de domaine dans le bloc de données résultant, nous pouvons utiliser la fonction agg() avec le paramètre as_index=False :

df = df.groupby(by='domain', as_index=False).agg({'ID': pd.Series.nunique})

print(df)

Cette méthode renverra un bloc de données avec à la fois les colonnes de domaine et de comptage, où count représente le nombre d'identifiants uniques associés à chaque domaine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn