Prénoms des enfants nés à Paris

Données - Ville de Paris

Code
source(here::here("_rinit.R"))
invisible(Sys.setlocale("LC_TIME", "fr_FR.UTF-8"))
# cd ~/iCloud/website/data/paris; /usr/local/bin/R -e 'quarto::quarto_render("liste_des_prenoms.qmd")'

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE,
                      fig.width = 8, fig.height = 5, dpi = 150)

prenoms_path <- here::here("data", "paris", "liste_des_prenoms.parquet")
prenoms <- arrow::read_parquet(prenoms_path) |>
  dplyr::transmute(prenom = prenoms, sexe = sexe, annee = as.integer(format(annee, "%Y")), n = nombre)

n_lignes  <- nrow(prenoms)
n_total   <- sum(prenoms$n)
annee_min <- min(prenoms$annee)
annee_max <- max(prenoms$annee)
pal_sexe  <- c(F = "#c0392b", M = "#3b6f8a")

theme_barres <- theme_minimal(base_size = 12) +
  theme(plot.title = element_text(face = "bold"),
        plot.subtitle = element_text(colour = "grey35"),
        panel.grid.major.y = element_blank())

Les prénoms donnés aux enfants nés à Paris chaque année, par sexe — issus de l’état civil parisien, 2004-2025. Un prénom n’apparaît que s’il a été donné à au moins 5 enfants de ce sexe cette année-là (secret statistique) : les 673 443 naissances comptées ici sous-estiment donc le nombre réel de naissances à Paris.

Code
prenoms |>
  dplyr::filter(annee == annee_max) |>
  dplyr::arrange(dplyr::desc(n)) |>
  dplyr::transmute(Prénom = prenom, Sexe = sexe, Occurrences = n) |>
  head(10) |>
  gt::gt() |>
  gt::tab_header(title = sprintf("10 prénoms les plus donnés en %d", annee_max)) |>
  gt::tab_options(table.width = "100%")
10 prénoms les plus donnés en 2025
Prénom Sexe Occurrences
Gabriel M 289
Raphaël M 221
Louis M 205
Adam M 205
Noah M 190
Léon M 174
Alma F 174
Louise F 170
Arthur M 160
Isaac M 156

Les prénoms les plus donnés (toutes années)

Code
top_filles <- prenoms |>
  dplyr::filter(sexe == "F") |> dplyr::group_by(prenom) |>
  dplyr::summarise(n = sum(n), .groups = "drop") |> dplyr::slice_max(n, n = 12) |>
  dplyr::mutate(prenom = forcats::fct_reorder(prenom, n)) |>
  ggplot(aes(n, prenom)) +
  geom_col(fill = pal_sexe[["F"]], width = 0.7) +
  scale_x_continuous(labels = scales::label_number(big.mark = " ")) +
  labs(title = "Filles", x = NULL, y = NULL) +
  theme_barres

top_garcons <- prenoms |>
  dplyr::filter(sexe == "M") |> dplyr::group_by(prenom) |>
  dplyr::summarise(n = sum(n), .groups = "drop") |> dplyr::slice_max(n, n = 12) |>
  dplyr::mutate(prenom = forcats::fct_reorder(prenom, n)) |>
  ggplot(aes(n, prenom)) +
  geom_col(fill = pal_sexe[["M"]], width = 0.7) +
  scale_x_continuous(labels = scales::label_number(big.mark = " ")) +
  labs(title = "Garçons", x = NULL, y = NULL) +
  theme_barres

patchwork::wrap_plots(top_filles, top_garcons, ncol = 2) +
  patchwork::plot_annotation(
    title = sprintf("Prénoms les plus donnés, %d-%d (cumulé)", annee_min, annee_max))

Évolution des prénoms les plus donnés aujourd’hui

Code
top_recents <- prenoms |>
  dplyr::filter(annee == annee_max) |>
  dplyr::group_by(sexe) |>
  dplyr::slice_max(n, n = 5) |>
  dplyr::ungroup() |>
  dplyr::pull(prenom)

prenoms |>
  dplyr::filter(prenom %in% top_recents) |>
  ggplot(aes(annee, n, colour = prenom)) +
  geom_line(linewidth = 0.9) +
  geom_point(size = 1.6) +
  scale_colour_brewer(palette = "Paired", name = NULL) +
  facet_wrap(~ ifelse(sexe == "F", "Filles", "Garçons")) +
  labs(title = "Évolution des 5 prénoms les plus donnés en 2025 (par sexe)", x = NULL, y = NULL) +
  theme_barres +
  theme(legend.position = "bottom")

Tous les prénoms, toutes les années

Code
prenoms |>
  dplyr::arrange(dplyr::desc(annee), dplyr::desc(n)) |>
  dplyr::transmute(Année = annee, Prénom = prenom, Sexe = sexe, Occurrences = n) |>
  reactable::reactable(
    searchable = TRUE,
    filterable = TRUE,
    pagination = TRUE,
    defaultPageSize = 20,
    compact = TRUE,
    resizable = TRUE,
    highlight = TRUE,
    wrap = TRUE,
    defaultColDef = reactable::colDef(
      align = "left",
      headerStyle = list(fontWeight = "bold"),
      style = list(whiteSpace = "normal", wordBreak = "break-word")
    ),
    columns = list(
      Année = reactable::colDef(minWidth = 70, maxWidth = 90),
      Prénom = reactable::colDef(minWidth = 150),
      Sexe = reactable::colDef(minWidth = 60, maxWidth = 80),
      Occurrences = reactable::colDef(minWidth = 90, maxWidth = 120, align = "right")
    )
  )

Source & données

Code
tibble::tibble(
  ` ` = c("Jeu de données", "Producteur", "Licence", "Fichier", "Mise à jour", "Observations"),
  `  ` = c(
    "[Liste des prénoms](https://opendata.paris.fr/explore/dataset/liste_des_prenoms/information/)",
    "Ville de Paris — état civil",
    "Open Database License (ODbL)",
    sprintf("`data/paris/liste_des_prenoms.parquet` (%s ko)", round(file.size(prenoms_path) / 1024)),
    format(as.Date(file.mtime(prenoms_path)), "%d %B %Y"),
    sprintf("%s lignes, %s occurrences, %d-%d (seuil de 5 par prénom/sexe/année)",
            format(n_lignes, big.mark = " "), format(n_total, big.mark = " "), annee_min, annee_max)
  )
) |>
  gt::gt() |> gt::fmt_markdown(columns = `  `) |>
  gt::tab_options(table.width = "100%", column_labels.hidden = TRUE)
Jeu de données Liste des prénoms
Producteur Ville de Paris — état civil
Licence Open Database License (ODbL)
Fichier data/paris/liste_des_prenoms.parquet (156 ko)
Mise à jour 05 septembre 2026
Observations 27 899 lignes, 673 443 occurrences, 2004-2025 (seuil de 5 par prénom/sexe/année)