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
Libérer: 2024-11-28 02:36:09
original
933 Les gens l'ont consulté

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')
])
Copier après la connexion

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)
Copier après la connexion
Copier après la connexion

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
Copier après la connexion

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)))
Copier après la connexion

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)
Copier après la connexion
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal