Last data update: 11 oct. 2026, 21:44
Last compile: 11 oct. 2026, 21:47
Source : SIES, data.enseignementsup-recherche.gouv.fr. Enseignants titulaires (professeurs, maîtres de conférences, enseignants du second degré) par établissement, discipline CNU, sexe et classe d’âge. Complète la base des enseignants non permanents.
`fr-esr-enseignants-titulaires-esr-public` |>
group_by(date, categorie_assimilation) |>
summarise(effectif = sum(effectif, na.rm = TRUE) / 1e3, .groups = "drop") |>
mutate(categorie_assimilation = str_wrap(categorie_assimilation, 30)) |>
ggplot(aes(x = date, y = effectif, fill = categorie_assimilation)) +
geom_area() + theme_minimal() + xlab("") + ylab("Milliers d'enseignants titulaires") +
scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())
`fr-esr-enseignants-titulaires-esr-public` |>
group_by(date, categorie_assimilation) |>
summarise(part = sum(effectif[sexe == "Femme"], na.rm = TRUE) / sum(effectif, na.rm = TRUE), .groups = "drop") |>
mutate(categorie_assimilation = str_wrap(categorie_assimilation, 30)) |>
ggplot(aes(x = date, y = part, color = categorie_assimilation)) +
geom_line() + theme_minimal() + xlab("") + ylab("Part des femmes") +
scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0, NA)) +
scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())
Rupture apparente à la rentrée 2022 de la part des 56 ans et plus ; elle semble liée au changement de source ou de définition de la classe d’âge, à vérifier dans la documentation du jeu.
`fr-esr-enseignants-titulaires-esr-public` |>
group_by(date, categorie_assimilation, classe_age3) |>
summarise(effectif = sum(effectif, na.rm = TRUE), .groups = "drop") |>
group_by(date, categorie_assimilation) |>
mutate(part = effectif / sum(effectif)) |>
filter(classe_age3 == "56 ans et plus") |>
mutate(categorie_assimilation = str_wrap(categorie_assimilation, 30)) |>
ggplot(aes(x = date, y = part, color = categorie_assimilation)) +
geom_line() + theme_minimal() + xlab("") + ylab("Part des 56 ans et plus") +
scale_y_continuous(labels = percent_format(accuracy = 1), limits = c(0, NA)) +
scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())
`fr-esr-enseignants-titulaires-esr-public` |>
filter(rentree == max(rentree)) |>
group_by(grande_discipline, categorie_assimilation) |>
summarise(effectif = sum(effectif, na.rm = TRUE) / 1e3, .groups = "drop") |>
mutate(grande_discipline = fct_reorder(grande_discipline, effectif, .fun = sum),
categorie_assimilation = str_wrap(categorie_assimilation, 30)) |>
ggplot(aes(x = grande_discipline, y = effectif, fill = categorie_assimilation)) +
geom_col() + coord_flip() + theme_minimal() + xlab("") + ylab("Milliers d'enseignants (dernière rentrée)") +
theme(legend.position = "bottom", legend.title = element_blank())
`fr-esr-enseignants-titulaires-esr-public` |>
filter(rentree == max(rentree), code_categorie_assimil == "PR") |>
group_by(groupe_cnu) |>
summarise(part = sum(effectif[sexe == "Femme"]) / sum(effectif), eff = sum(effectif)) |>
filter(eff >= 100) |>
mutate(groupe_cnu = fct_reorder(str_trunc(groupe_cnu, 50), part)) |>
ggplot(aes(x = groupe_cnu, y = part)) +
geom_col(fill = "#2166ac") + geom_hline(yintercept = 0.5, linetype = "dashed") + coord_flip() +
theme_minimal() + xlab("") + ylab("Part des femmes parmi les professeurs (dernière rentrée)") +
scale_y_continuous(labels = percent_format(accuracy = 1))