Last data update: 11 oct. 2026, 21:43
Last compile: 11 oct. 2026, 21:46
Source : SIES, data.enseignementsup-recherche.gouv.fr. Effectifs d’étudiants étrangers dans les établissements et formations de l’enseignement supérieur français, par nationalité, type de formation et région (rentrées 2013 à 2024). Les effectifs inférieurs à 5 sont masqués par le secret statistique. Ces données complètent les titres de séjour pour motif étudiant de la DSED.
total_etrangers : étudiants de nationalité étrangère ; total_mobiles : étudiants venus en France pour leurs études (mobilité internationale) ; mob_* et etr_* : par type de formation et région d’accueil.
`fr-esr-effectifs-d-etudiants-etrangers-france` |>
group_by(date) |>
summarise(`Étudiants étrangers` = sum(total_etrangers, na.rm = TRUE),
`dont en mobilité internationale` = sum(total_mobiles, na.rm = TRUE), .groups = "drop") |>
pivot_longer(-date) |>
ggplot(aes(x = date, y = value / 1e3, color = name)) +
geom_line() + geom_point(size = 0.8) + theme_minimal() + xlab("") +
ylab("Milliers d'étudiants") + scale_y_continuous(limits = c(0, NA)) +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())
`fr-esr-effectifs-d-etudiants-etrangers-france` |>
group_by(date, zone_geographique_d_origine) |>
summarise(value = sum(total_mobiles, na.rm = TRUE) / 1e3, .groups = "drop") |>
ggplot(aes(x = date, y = value, fill = zone_geographique_d_origine)) +
geom_area() + theme_minimal() + xlab("") + ylab("Milliers d'étudiants en mobilité") +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())
`fr-esr-effectifs-d-etudiants-etrangers-france` |>
filter(rentree == max(rentree)) |>
slice_max(total_mobiles, n = 20) |>
mutate(name_fr = fct_reorder(coalesce(name_fr, str_to_title(nationalite)), total_mobiles)) |>
ggplot(aes(x = name_fr, y = total_mobiles / 1e3)) +
geom_col(fill = "#2166ac") + coord_flip() + theme_minimal() +
xlab("") + ylab("Milliers d'étudiants en mobilité (dernière rentrée)")
`fr-esr-effectifs-d-etudiants-etrangers-france` |>
filter(iso3 %in% c("CHN", "MAR", "DZA", "TUN", "SEN", "IND", "ITA", "USA")) |>
ggplot(aes(x = date, y = total_mobiles / 1e3, color = name_fr)) +
geom_line() + theme_minimal() + xlab("") + ylab("Milliers d'étudiants en mobilité") +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())
`fr-esr-effectifs-d-etudiants-etrangers-france` |>
group_by(date) |>
summarise(Universités = sum(etr_univ, na.rm = TRUE), `Écoles de commerce` = sum(etr_ec_commerce, na.rm = TRUE),
`Écoles d'ingénieurs` = sum(etr_inge_univ, na.rm = TRUE) + sum(etr_inge_hors_univ, na.rm = TRUE),
`Écoles artistiques` = sum(etr_ec_art, na.rm = TRUE), Autres = sum(etr_autres_formations, na.rm = TRUE)) |>
pivot_longer(-date) |>
ggplot(aes(x = date, y = value / 1e3, fill = name)) +
geom_area() + theme_minimal() + xlab("") + ylab("Milliers d'étudiants étrangers") +
scale_x_date(date_breaks = "1 year", labels = date_format("%Y")) +
theme(legend.position = "bottom", legend.title = element_blank())