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)