Comment regrouper des données et les trier au sein de groupes à l'aide de Pandas GroupBy ?

DDD
Libérer: 2024-10-20 17:22:02
original
413 Les gens l'ont consulté

How to Group Data and Sort Within Groups Using Pandas GroupBy?

Pandas GroupBy et tri au sein des groupes

Considérez une situation dans laquelle vous avez un DataFrame avec plusieurs colonnes et vous souhaitez regrouper les lignes par deux colonnes. Après le regroupement, vous devrez peut-être trier davantage les résultats agrégés au sein de chaque groupe, par exemple en triant par colonne de nombre par ordre décroissant. Voici comment y parvenir :

Pour regrouper les données sur plusieurs colonnes, puis les trier au sein des groupes, vous pouvez combiner les fonctions groupby() et sort_values(). Par exemple, supposons que vous ayez un DataFrame avec le nombre de colonnes, le travail et la source.

<code class="python">import pandas as pd

df = pd.DataFrame({'count': [2, 4, 6, 3, 7, 5, 3, 2, 4, 1],
                  'job': ['sales','sales','sales','sales','sales', 'market','market','market','market','market'],
                  'source': ['A','B','C','D','E','A','B','C','D','E']})</code>
Copier après la connexion

Pour obtenir le nombre global pour chaque combinaison de travail et de source, vous pouvez faire :

<code class="python">df.groupby(['job','source']).agg({'count':sum})</code>
Copier après la connexion

Ensuite, pour trier la colonne de nombre par ordre décroissant au sein de chacun des groupes et prendre uniquement les trois premières lignes, vous pouvez procéder comme suit :

<code class="python">result = df.sort_values(['job','count'],ascending=False).groupby('job').head(3)</code>
Copier après la connexion

Cela renverra un DataFrame avec les trois premières lignes pour chaque groupe de tâches, trié par colonne de nombre par ordre décroissant. Le DataFrame résultant pourrait ressembler à ceci :

<code class="python">print(result)

   count     job source
4      7   sales      E
2      6   sales      C
1      4   sales      B
5      5  market      A
8      4  market      D
6      3  market      B</code>
Copier après la connexion

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!

source:php
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