Last data update: 11 oct. 2026, 21:43
Last compile: 11 oct. 2026, 21:47
Source : SIES, data.enseignementsup-recherche.gouv.fr. Base InserSup (SIES) : insertion dans l’emploi salarié des diplômés de licence, licence professionnelle, master et ingénieur, par mention, établissement, sexe, nationalité et régime d’inscription.
Insertion des diplômés de l’enseignement supérieur dans l’emploi salarié en France, 6 à 30 mois après l’obtention du diplôme, d’après les déclarations sociales (DSN). Les séries ci-dessous sont des moyennes pondérées par le nombre de sortants des valeurs par mention de diplôme (promotions simples, diplômés, ensemble des régimes d’inscription et nationalités). Les salaires sont des salaires mensuels nets médians en équivalent temps plein (salaire_q2_*) ; nd : non disponible. Les salaires à 12 mois ne sont disponibles que pour les promotions 2020 à 2022. Les doublons entre établissements pour une même mention (certaines écoles d’ingénieurs) sont conservés.
nat_ens |>
group_by(type_diplome_long, promo) |>
summarise(taux = wm(tx_sortants_en_emploi_sal_fr_12, nb_sortants_12), n = sum(nb_sortants_12), .groups = "drop") |>
filter(n > 3000) |>
mutate(date = as.Date(paste0(promo, "-01-01")), type_diplome_long = str_wrap(type_diplome_long, 30)) |>
ggplot(aes(x = date, y = taux / 100, color = type_diplome_long)) +
geom_line() + geom_point(size = 0.8) + theme_minimal() + xlab("Promotion") +
ylab("Part en emploi salarié en France à 12 mois") +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank()) + guides(color = guide_legend(nrow = 4))
nat_ens |>
group_by(type_diplome_long, promo) |>
summarise(sal = wm(salaire_q2_12, nb_sortants_12), n = sum(nb_sortants_12), .groups = "drop") |>
filter(n > 3000) |>
mutate(date = as.Date(paste0(promo, "-01-01")), type_diplome_long = str_wrap(type_diplome_long, 30)) |>
ggplot(aes(x = date, y = sal, color = type_diplome_long)) +
geom_line() + geom_point(size = 0.8) + theme_minimal() + xlab("Promotion") +
ylab("Euros par mois (net, médiane, ETP)") + scale_y_continuous(labels = fr) +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank()) + guides(color = guide_legend(nrow = 4))
nat_ens |>
filter(promo == "2021") |>
group_by(type_diplome_long) |>
summarise(`12 mois` = wm(salaire_q2_12, nb_sortants_12), `30 mois` = wm(salaire_q2_30, nb_sortants_30), n = sum(nb_sortants_12)) |>
filter(n > 3000) |>
pivot_longer(c(`12 mois`, `30 mois`)) |>
mutate(type_diplome_long = fct_reorder(str_wrap(type_diplome_long, 35), value, .fun = max)) |>
ggplot(aes(x = type_diplome_long, y = value, fill = name)) +
geom_col(position = "dodge") + coord_flip() + theme_minimal() + xlab("") + ylab("Euros par mois (net, médiane)") +
theme(legend.position = "bottom", legend.title = element_blank())
nat |>
filter(type_diplome_long == "Master LMD", genre %in% c("femme", "homme")) |>
group_by(genre, promo) |>
summarise(sal = wm(salaire_q2_12, nb_sortants_12), emploi = wm(tx_sortants_en_emploi_sal_fr_12, nb_sortants_12), .groups = "drop") |>
pivot_longer(c(sal, emploi), names_to = "indicateur", values_to = "value") |>
mutate(indicateur = recode(indicateur, sal = "Salaire mensuel net médian à 12 mois (€)", emploi = "Taux d'emploi salarié à 12 mois (%)"),
date = as.Date(paste0(promo, "-01-01"))) |>
ggplot(aes(x = date, y = value, color = genre)) +
geom_line() + geom_point(size = 0.8) + facet_wrap(~ indicateur, scales = "free_y") +
theme_minimal() + xlab("Promotion") + ylab("") +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())
Les 12 mentions les moins bien et les mieux rémunérées parmi celles qui comptent au moins 200 sortants.
nat_ens |>
filter(promo == "2021", type_diplome_long == "Master LMD", nb_sortants_30 >= 200, !is.na(salaire_q2_30)) |>
mutate(libelle_diplome = str_trunc(str_to_sentence(libelle_diplome), 45)) |>
arrange(salaire_q2_30) |>
slice(c(1:12, (n() - 11):n())) |>
mutate(libelle_diplome = fct_inorder(libelle_diplome)) |>
ggplot(aes(x = libelle_diplome, y = salaire_q2_30)) +
geom_col(fill = "#2166ac") + coord_flip() + theme_minimal() + xlab("") +
ylab("Salaire mensuel net médian à 30 mois (€)")
`fr-esr-insersup` |>
filter(uo_lib == "National", dom_lib == "Tous domaines disciplinaires", discipli_lib == "Toutes disciplines",
sectdis_lib == "Tous secteurs disciplinaires", source == "insersup", obtention_diplome == "diplômé",
nationalite == "ensemble", genre == "ensemble", !str_detect(promo, ","),
type_diplome_long %in% c("Master LMD", "Licence professionnelle"), regime_inscription %in% c("ensemble", "apprentissage")) |>
group_by(type_diplome_long, regime_inscription, promo) |>
summarise(emploi = wm(tx_sortants_en_emploi_sal_fr_12, nb_sortants_12), .groups = "drop") |>
mutate(date = as.Date(paste0(promo, "-01-01"))) |>
ggplot(aes(x = date, y = emploi / 100, color = regime_inscription, linetype = type_diplome_long)) +
geom_line() + theme_minimal() + xlab("Promotion") + ylab("Part en emploi salarié en France à 12 mois") +
scale_y_continuous(labels = percent_format(accuracy = 1)) +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())