Maison >développement back-end >Tutoriel Python >Comment les Pandas peuvent-ils compter efficacement les termes dans des DataFrames groupés ?

Comment les Pandas peuvent-ils compter efficacement les termes dans des DataFrames groupés ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-28 02:36:09920parcourir

How Can Pandas Efficiently Count Terms within Grouped DataFrames?

Comptage des termes dans des DataFrames groupés : une solution Pandas

Cet article aborde le défi de compter les termes au sein des groupes et de résumer les résultats dans un DataFrame . Avec Pandas, cette tâche peut être résolue avec élégance sans recourir à un bouclage inefficace. Considérez le DataFrame suivant :

df = pd.DataFrame([
    (1, 1, 'term1'),
    (1, 2, 'term2'),
    (1, 1, 'term1'),
    (1, 1, 'term2'),
    (2, 2, 'term3'),
    (2, 3, 'term1'),
    (2, 2, 'term1')
])

L'objectif est de regrouper par « id » et « group » et de compter les occurrences de chaque « terme ». Pour y parvenir, Pandas propose une solution concise :

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

Cette opération regroupe le DataFrame par colonnes 'id', 'group' et 'term', compte les occurrences de chaque combinaison unique et renvoie un DataFrame résumé avec des colonnes multi-index et une colonne de valeur unique nommée « taille » contenant les décomptes. La fonction « dépiler » remodèle le DataFrame dans un format large, avec une colonne pour chaque terme unique, comme indiqué ci-dessous :

id  group term   size
1   1     term1  3
    1     term2  2
    2     term3  1
2   2     term1  3

Analyse temporelle

Pour les plus grandes ensembles de données, comprendre les caractéristiques de performance de cette solution est crucial. Pour évaluer cela, considérons un DataFrame avec 1 million de lignes générées à l'aide du code suivant :

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

Le profilage de l'opération de regroupement et de comptage révèle qu'il peut gérer efficacement même de grands ensembles de données :

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

Cette performance est attribuée à la nature optimisée des mécanismes de regroupement et d'agrégation sous-jacents de Pandas, ce qui en fait un excellent outil pour travailler efficacement avec de grands ensembles de données.

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