In [1]:
import pandas as pd
import plotly.graph_objects as go
In [2]:
url="https://filedn.eu/lHdttuiSAwVYBLWzET7NL14/DATASETS/fr-en-ecoles-effectifs-nb_classes.csv"
df = pd.read_csv(url, sep=';')
In [3]:
df.head(1)
Out[3]:
Rentrée scolaire Région académique Académie Département Commune Numéro de l'école Dénomination principale Patronyme Secteur REP ... Nombre d'élèves en pré-élémentaire hors ULIS Nombre d'élèves en élémentaire hors ULIS Nombre d'élèves en ULIS Nombre d'élèves en CP hors ULIS Nombre d'élèves en CE1 hors ULIS Nombre d'élèves en CE2 hors ULIS Nombre d'élèves en CM1 hors ULIS Nombre d'élèves en CM2 hors ULIS tri Code Postal
0 2022 AUVERGNE-ET-RHONE-ALPES CLERMONT-FERRAND ALLIER ABREST 0030701W ECOLE PRIMAIRE PUBLIQUE NaN PUBLIC 0 ... 56 108 0 16 22 18 31 21 78-AUVERGNE-ET-RHONE-ALPES-CLERMONT-FERRAND-AL... 3200

1 rows × 23 columns

"as_index=False" permet d'éviter de 'fixer' la colonne groupée comme index par défaut

In [4]:
df_group = df.groupby('Département', as_index=False).agg(
    nb_rep = ('REP', 'sum'),
    total_eleves = ("Nombre total d'élèves", 'sum'),
    moyenne_eleves_par_structure = ("Nombre total d'élèves", lambda x: round(x.mean(), 2)),
    nb_classes = ('Nombre total de classes', 'sum')
)
df_group
Out[4]:
Département nb_rep total_eleves moyenne_eleves_par_structure nb_classes
0 AIN 40 277261 141.53 11879
1 AISNE 292 207093 104.43 10099
2 ALLIER 99 106681 76.04 5348
3 ALPES-DE-HTE-PROVENCE 20 55833 86.70 2779
4 ALPES-MARITIMES 100 404754 172.68 16908
... ... ... ... ... ...
96 VENDEE 60 253218 122.03 10989
97 VIENNE 48 150140 107.09 6974
98 VOSGES 90 120678 87.77 5958
99 YONNE 142 118438 79.92 5768
100 YVELINES 349 648601 161.75 27513

101 rows × 5 columns