# La fonction Pandas groupby() expliquée

La fonction Python Pandas `DataFrame.groupby()` permet de **grouper des données selon certains critères** et d’effectuer différentes agrégations et transformations sur ces groupes.

## Syntaxe de Pandas `DataFrame.groupby()`

La fonction Pandas `groupby()` prend **jusqu’à quatre paramètres**. La syntaxe de base est la suivante :

```python
DataFrame.groupby(by=None, level=None, as_index=True, sort=True, group_keys=True, dropna=True)
```

### Paramètres pertinents

<table>
  <thead>
    <tr>
      <th><strong>Paramètres</strong></th>
      <th><strong>Description</strong></th>
      <th><strong>Valeur par défaut</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`by`</td>
      <td>Clé ou liste Python de clés pour le regroupement ; ne se combine avec `level` que pour des multi-index</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`level`</td>
      <td>Utilisé dans les index multiples pour spécifier un ou plusieurs niveaux, de sorte que le regroupement se fasse selon des niveaux spécifiques</td>
      <td>`None`</td>
    </tr>
    <tr>
      <td>`as_index`</td>
      <td>Si `True`, les clés de groupe sont définies comme index du DataFrame résultant</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`group_keys`</td>
      <td>Si `True`, les clés de groupe sont incluses dans les index des groupes</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`sort`</td>
      <td>Si `True`, trie les groupes par ordre croissant des clés</td>
      <td>`True`</td>
    </tr>
    <tr>
      <td>`dropna`</td>
      <td>Si `True`, exclut les groupes contenant uniquement des valeurs `NaN`</td>
      <td>`True`</td>
    </tr>
  </tbody>
</table>

## Application de Pandas `DataFrame.grouby()`

La fonction Pandas `groupyby()` est particulièrement utile pour **analyser et agréger de grandes quantités de données** afin de détecter des modèles ou des anomalies.

### Regrouper et agréger

Nous considérons ici un ensemble de données sur les ventes de produits qui contient des informations sur la date de vente, le produit vendu et la quantité vendue :

```python
import pandas as pd
# Exemple de jeu de données avec des ventes de produits
données = {
    'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Produit': ['A', 'B', 'A', 'B', 'A'],
    'Quantité': [10, 20, 15, 25, 10]
}
df = pd.DataFrame(données)
print(df)
```

Le DataFrame résultant ressemble à ceci :

```none
Date Produit  Quantité
0  2021-01-01       A        10
1  2021-01-01       B        20
2  2021-01-02       A        15
3  2021-01-02       B        25
4  2021-01-03       A        10
```

L’étape suivante consiste à regrouper l’ensemble des données par produit. Pour cela, on utilise Pandas `groupby()`. Ensuite, la somme des quantités vendues de chaque produit est calculée à l’aide de la fonction `sum()` :

```none
# Regrouper par produit et calculer la somme des quantités vendues
somme = df.groupby('Produit')['Quantité'].sum()
print(somme)
```

Le résultat indique combien d’unités de chaque produit ont été vendues au total :

```none
Produit
A    35
B    45
Name: Quantité, dtype: int64
```

### Agrégations multiples

L’exemple suivant utilise un ensemble de données similaire, mais étendu, qui contient en plus le chiffre d’affaires :

```python
import pandas as pd
# Création d'un DataFrame avec des ventes de produits et chiffres d'affaires
données = {
    'Date': ['2021-01-01', '2021-01-01', '2021-01-02', '2021-01-02', '2021-01-03'],
    'Produit': ['A', 'B', 'A', 'B', 'A'],
    'Quantité': [10, 20, 15, 25, 10],
    'Revenu': [100, 200, 150, 250, 100]
}
df = pd.DataFrame(données)
print(df)
```

Le DataFrame suivant est donc considéré :

```none
Date Produit  Quantité  Revenu
0  2021-01-01       A        10     100
1  2021-01-01       B        20     200
2  2021-01-02       A        15     150
3  2021-01-02       B        25     250
4  2021-01-03       A        10     100
```

Les données sont à nouveau regroupées par produit à l’aide de Pandas `DataFrame.groupby()`. Ensuite, la fonction `agg()` est utilisée pour agréger en fonction du total des quantités vendues et des ventes, ainsi que du chiffre d’affaires moyen par produit.

```none
# Regrouper par produit et appliquer plusieurs agrégations
groupes = df.groupby('Produit').agg({
    'Quantité': 'sum',
    'Revenu': ['sum', 'mean']
})
print(groupes)
```

Le résultat ressemble à ce qui suit :

```none
Quantité Revenu         
          sum    sum     mean
Produit                 
A          35    350  116.67
B          45    450  225.00
```

Grâce à la fonction `groupby()` de Python, il est possible d’explorer des ensembles de données de manière efficace, en appliquant des agrégations complexes pour analyser des tendances et des performances.


This is a markdown version of: [https://www.ionos.com/fr-be/digitalguide/sites-internet/developpement-web/python-pandas-dataframe-groupby/](https://www.ionos.com/fr-be/digitalguide/sites-internet/developpement-web/python-pandas-dataframe-groupby/) for AI/LLM consumption.