import pandas as pd
import plotly.graph_objects as go
url="https://filedn.eu/lHdttuiSAwVYBLWzET7NL14/DATASETS/fr-en-ecoles-effectifs-nb_classes.csv"
df = pd.read_csv(url, sep=';')
df.head(1)
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
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
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