Comment convertir la sortie Pandas GroupBy en DataFrame



Ce tutoriel explique comment convertir la sortie d’un pandas GroupBy en un pandas DataFrame.

Exemple : convertir la sortie Pandas GroupBy en DataFrame

Supposons que nous ayons le DataFrame pandas suivant qui montre les points marqués par les basketteurs de différentes équipes :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'position': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'F'],
                   'points': [5, 7, 7, 10, 12, 22, 15, 10]})

#view DataFrame
print(df)

  team position  points
0    A        G       5
1    A        G       7
2    A        F       7
3    A        C      10
4    B        G      12
5    B        F      22
6    B        F      15
7    B        F      10

On peut utiliser la syntaxe suivante pour compter le nombre de joueurs, regroupés par équipe et poste :

#count number of players, grouped by team and position
group = df.groupby(['team', 'position']).size()

#view output
print(group)

team  position
A     C           1
      F           1
      G           2
B     F           3
      G           1
dtype: int64

À partir de la sortie, nous pouvons voir le nombre total de joueurs, regroupés par équipe et position .

Cependant, supposons que nous souhaitions que notre sortie affiche le nom de l’équipe dans chaque ligne comme ceci :

  team position  count
0    A        C      1
1    A        F      1
2    A        G      2
3    B        F      3
4    B        G      1

Pour obtenir ce résultat, nous pouvons simplement utiliser reset_index() lors de l’exécution de GroupBy :

#count number of players, grouped by team and position
df_out = df.groupby(['team', 'position']).size().reset_index(name='count')

#view output
print(df_out)

  team position  count
0    A        C      1
1    A        F      1
2    A        G      2
3    B        F      3
4    B        G      1

La sortie apparaît maintenant dans le format souhaité.

Notez que l’argument name dans reset_index() spécifie le nom de la nouvelle colonne produite par GroupBy.

Nous pouvons également confirmer que le résultat est bien un DataFrame pandas :

#display object type of df_out
type(df_out)

pandas.core.frame.DataFrame

Remarque : Vous pouvez trouver la documentation complète de l’opération GroupBy dans pandas ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :

Pandas : comment calculer la somme cumulée par groupe
Pandas : comment compter les valeurs uniques par groupe
Pandas : comment calculer la corrélation par groupe

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *