Maison >développement back-end >Tutoriel Python >Comment compter efficacement les occurrences de termes au sein des groupes dans un DataFrame Pandas ?

Comment compter efficacement les occurrences de termes au sein des groupes dans un DataFrame Pandas ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-12 17:11:14625parcourir

How to Efficiently Count Term Occurrences within Groups in a Pandas DataFrame?

Regroupement par nombre de termes dans une trame de données Pandas

Problème :

Étant donné une trame de données avec les colonnes suivantes : id, group et term. L'objectif est de déterminer le nombre d'occurrences de chaque terme dans chaque combinaison unique d'identifiant et de groupe.

Solution :

Pour éviter d'utiliser des boucles, utilisez groupby et fonctions de taille dans Pandas :

df.groupby(['id', 'group', 'term']).size().unstack(fill_value=0)

La fonction groupby regroupe le dataframe par les colonnes spécifiées (id, groupe et terme), tandis que la fonction size compte les occurrences de chaque combinaison. La fonction de dépilage produit un tableau plus attrayant visuellement avec les décomptes disposés dans une matrice.

Le résultat est un tableau avec des colonnes multi-index où les deux premiers niveaux représentent la combinaison de l'identifiant et du groupe, et le troisième niveau correspond au terme. Chaque cellule du tableau indique le nombre de fois qu'un terme particulier apparaît pour l'identifiant et le groupe correspondants.

Temps :

Pour les grands ensembles de données (par exemple, 1 000 000 de lignes) , les performances sont excellentes :

df = pd.DataFrame(dict(id=np.random.choice(100, 1000000),
                       group=np.random.choice(20, 1000000),
                       term=np.random.choice(10, 1000000)))

En utilisant l'approche susmentionnée, le temps écoulé est d'environ 1 seconde.

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