Comment appliquer une fonction à Pandas Groupby



Vous pouvez utiliser la syntaxe de base suivante pour utiliser les fonctions groupby() et apply() ensemble dans un DataFrame pandas :

df.groupby('var1').apply(lambda x: some function)

Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'points_for': [18, 22, 19, 14, 11, 20, 28],
                   'points_against': [14, 21, 19, 14, 12, 20, 21]})

#view DataFrame
print(df)

  team  points_for  points_against
0    A          18              14
1    A          22              21
2    A          19              19
3    B          14              14
4    B          11              12
5    B          20              20
6    B          28              21

Exemple 1 : utilisez groupby() et apply() pour rechercher des fréquences relatives

Le code suivant montre comment utiliser les fonctions groupby( ) et apply() pour trouver les fréquences relatives de chaque nom d’équipe dans le DataFrame pandas :

#find relative frequency of each team name in DataFrame
df.groupby('team').apply(lambda x: x['team'].count() / df.shape[0])

team
A    0.428571
B    0.571429
dtype: float64

D’après le résultat, nous pouvons voir que l’équipe A apparaît dans 42,85 % de toutes les lignes et que l’équipe B apparaît dans 57,14 % de toutes les lignes.

Exemple 2 : utilisez groupby() et apply() pour rechercher les valeurs maximales

Le code suivant montre comment utiliser les fonctions groupby( ) et apply() pour trouver les valeurs maximales de « points_for » pour chaque équipe :

#find max "points_for" values for each team
df.groupby('team').apply(lambda x: x['points_for'].max())

team
A    22
B    28
dtype: int64

D’après le résultat, nous pouvons voir que le maximum de points marqués par l’équipe A est de 22 et le maximum de points marqués par l’équipe B est de 28.

Exemple 3 : utilisez groupby() et apply() pour effectuer un calcul personnalisé

Le code suivant montre comment utiliser les fonctions groupby( ) et apply() pour trouver la différence moyenne entre « points_for » et « points_against » pour chaque équipe :

#find max "points_for" values for each team
df.groupby('team').apply(lambda x: (x['points_for'] - x['points_against']).mean())

team
A    1.666667
B    1.500000
dtype: float64

D’après les résultats, nous pouvons voir que la différence moyenne entre « points pour » et « points contre » est de 1,67 pour l’équipe A et de 1,50 pour l’équipe B.

Ressources additionnelles

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

Comment effectuer une somme GroupBy dans Pandas
Comment utiliser Groupby et Plot dans Pandas
Comment compter les valeurs uniques à l’aide de GroupBy dans Pandas

Ajouter un commentaire

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