Les 10 rémunérations les plus élevées des agents publics

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("les-10-remunerations-les-plus-elevees-des-agents-publiques.qmd")'

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

rem_path <- here::here("data", "paris", "les-10-remunerations-les-plus-elevees-des-agents-publiques.parquet")
rem <- arrow::read_parquet(rem_path) |>
  dplyr::mutate(
    annee        = as.integer(annee),
    somme        = somme_10_plus_hautes_remunerations_brutes,
    beneficiaires = nb_femmes_beneficiaires + nombre_hommes_beneficiaires,
    moyenne      = somme / beneficiaires
  )

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

Depuis la loi du 6 août 2019 de transformation de la fonction publique (art. 37), chaque administration publie chaque année la somme des 10 rémunérations brutes les plus élevées de ses agents, le nombre de femmes et d’hommes parmi ces 10 personnes, et la durée cumulée (en mois) sur laquelle porte le décompte.

Ce jeu de données donne ces chiffres pour la Ville de Paris (SIREN 217500016), de 2018 à 2025.

Code
rem |>
  dplyr::arrange(dplyr::desc(annee)) |>
  dplyr::transmute(
    `Année` = annee,
    `Somme des 10 plus hautes rém. brutes` = somme,
    `Femmes` = nb_femmes_beneficiaires,
    `Hommes` = nombre_hommes_beneficiaires,
    `Moyenne par personne` = round(moyenne),
    `Durée cumulée (mois)` = duree_cumulee_mois
  ) |>
  gt::gt() |>
  gt::fmt_currency(columns = c(`Somme des 10 plus hautes rém. brutes`, `Moyenne par personne`),
                   currency = "EUR", decimals = 0, sep_mark = " ") |>
  gt::tab_options(table.width = "100%")
Année Somme des 10 plus hautes rém. brutes Femmes Hommes Moyenne par personne Durée cumulée (mois)
2025 €1 830 765 5 5 €183 076 117
2024 €1 859 423 5 5 €185 942 120
2023 €1 820 282 5 5 €182 028 120
2022 €1 738 324 4 6 €173 832 120
2021 €1 763 018 6 4 €176 302 120
2020 €1 591 656 4 6 €159 166 112
2019 €1 728 797 5 5 €172 880 120
2018 €1 692 501 6 4 €169 250 120

Évolution de la somme et de la moyenne

Code
rem |>
  dplyr::select(annee, Somme = somme, `Moyenne par personne` = moyenne) |>
  tidyr::pivot_longer(-annee) |>
  ggplot(aes(annee, value)) +
  geom_col(data = ~dplyr::filter(.x, name == "Somme"), fill = "#3b5b8a", width = 0.6) +
  geom_line(data = ~dplyr::filter(.x, name == "Moyenne par personne"),
            colour = "#c0392b", linewidth = 1) +
  geom_point(data = ~dplyr::filter(.x, name == "Moyenne par personne"),
             colour = "#c0392b", size = 2) +
  facet_wrap(~name, scales = "free_y") +
  scale_x_continuous(breaks = scales::breaks_width(1)) +
  scale_y_continuous(labels = scales::label_currency(prefix = "", suffix = " €",
                                                     big.mark = " ", accuracy = 1)) +
  labs(title = "Les 10 plus hautes rémunérations de la Ville de Paris",
       subtitle = "Somme des 10 rémunérations brutes les plus élevées, et moyenne par bénéficiaire",
       x = NULL, y = NULL) +
  theme_barres

Code
der <- dplyr::filter(rem, annee == max(annee))
cat(sprintf(
  "\nEn %d, ces 10 rémunérations totalisent **%s**, soit **%s brut par personne** en moyenne (sur %d bénéficiaires — la 10ᵉ place a pu être partagée).\n",
  der$annee,
  scales::dollar(der$somme, prefix = "", suffix = " €", big.mark = " ", accuracy = 1),
  scales::dollar(round(der$moyenne), prefix = "", suffix = " €", big.mark = " ", accuracy = 1),
  der$beneficiaires))

En 2025, ces 10 rémunérations totalisent 1 830 765 €, soit 183 076 € brut par personne en moyenne (sur 10 bénéficiaires — la 10ᵉ place a pu être partagée).

Répartition femmes / hommes

Code
rem |>
  dplyr::select(annee, Femmes = nb_femmes_beneficiaires, Hommes = nombre_hommes_beneficiaires) |>
  tidyr::pivot_longer(-annee, names_to = "Genre", values_to = "n") |>
  ggplot(aes(annee, n, fill = Genre)) +
  geom_col(width = 0.65) +
  scale_fill_manual(values = c(Femmes = "#c98b3a", Hommes = "#3b5b8a")) +
  scale_x_continuous(breaks = scales::breaks_width(1)) +
  scale_y_continuous(breaks = scales::breaks_width(2)) +
  labs(title = "Femmes et hommes parmi les 10 mieux rémunérés",
       subtitle = "Sur ~10 personnes chaque année",
       x = NULL, y = NULL) +
  theme_barres

La durée cumulée est proche de 120 mois la plupart des années (10 personnes × 12 mois) : le décompte porte sur des postes occupés toute l’année.

Source & données

Code
tibble::tibble(
  ` ` = c("Jeu de données", "Producteur", "Licence", "Fichier", "Mise à jour", "Observations"),
  `  ` = c(
    "[Les 10 rémunérations les plus élevées des agents publics](https://opendata.paris.fr/explore/dataset/les-10-remunerations-les-plus-elevees-des-agents-publiques/)",
    "Ville de Paris (obligation de transparence, loi du 6 août 2019, art. 37)",
    "Open Database License (ODbL)",
    sprintf("`data/paris/les-10-remunerations-les-plus-elevees-des-agents-publiques.parquet` (%s ko)",
            round(file.size(rem_path) / 1024)),
    format(as.Date(file.mtime(rem_path)), "%d %B %Y"),
    sprintf("%s lignes (%d à %d)", nrow(rem), min(rem$annee), max(rem$annee))
  )
) |>
  gt::gt() |> gt::fmt_markdown(columns = `  `) |>
  gt::tab_options(table.width = "100%", column_labels.hidden = TRUE)
Jeu de données Les 10 rémunérations les plus élevées des agents publics
Producteur Ville de Paris (obligation de transparence, loi du 6 août 2019, art. 37)
Licence Open Database License (ODbL)
Fichier data/paris/les-10-remunerations-les-plus-elevees-des-agents-publiques.parquet (3 ko)
Mise à jour 04 septembre 2026
Observations 8 lignes (2018 à 2025)