Maison >développement back-end >Tutoriel Python >Comment compter les valeurs uniques dans les groupes avec des 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!