Maison  >  Article  >  développement back-end  >  Comment regrouper des données et les trier au sein de groupes à l'aide de Pandas GroupBy ?

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

DDD
DDDoriginal
2024-10-20 17:22:02334parcourir

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>

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>

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>

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>

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