Établissements et effectifs salariés au niveau commune x APE - etablissements-et-effectifs-salaries-au-niveau-commune-x-ape-last

Données - ACOSS

Jeu de données très fin : 1 227 408 lignes (commune x code APE), effectifs et nombre d’établissements chaque année depuis 2006.

Structure

Effectifs salariés (France entière)

Code
annee_max <- 2025

`etab-effectifs-commune-ape` |>
  summarise(across(starts_with("effectifs_salaries_"), \(x) sum(x, na.rm = TRUE))) |>
  pivot_longer(everything(), names_to = "annee", names_prefix = "effectifs_salaries_",
              values_to = "effectifs") |>
  mutate(annee = as.Date(paste0(annee, "-01-01"))) |>
  ggplot() + geom_line(aes(x = annee, y = effectifs)) +
  geom_point(aes(x = annee, y = effectifs), size = 0.7) +
  theme_minimal() + xlab("") + ylab("Effectifs salariés") +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  scale_y_continuous(labels = label_number(big.mark = " ")) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Effectifs salariés par grand secteur d’activité

Code
`etab-effectifs-commune-ape` |>
  group_by(grand_secteur_d_activite) |>
  summarise(across(starts_with("effectifs_salaries_"), \(x) sum(x, na.rm = TRUE)), .groups = "drop") |>
  pivot_longer(-grand_secteur_d_activite, names_to = "annee", names_prefix = "effectifs_salaries_",
              values_to = "effectifs") |>
  mutate(annee = as.Date(paste0(annee, "-01-01"))) |>
  ggplot() + geom_line(aes(x = annee, y = effectifs, color = grand_secteur_d_activite)) +
  theme_minimal() + xlab("") + ylab("Effectifs salariés") +
  scale_x_date(date_breaks = "2 years", labels = date_format("%Y")) +
  scale_y_continuous(labels = label_number(big.mark = " ")) +
  scale_color_viridis_d() +
  theme(legend.position = "bottom", legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

Communes les plus importantes (2025)

Code
`etab-effectifs-commune-ape` |>
  group_by(commune, code_departement, departement) |>
  summarise(effectifs = sum(.data[[paste0("effectifs_salaries_", annee_max)]], na.rm = TRUE),
            .groups = "drop") |>
  slice_max(effectifs, n = 20) |>
  mutate(commune = fct_reorder(paste0(commune, " (", departement, ")"), effectifs)) |>
  ggplot() + geom_col(aes(x = commune, y = effectifs)) +
  coord_flip() +
  theme_minimal() + xlab("") + ylab("Effectifs salariés") +
  scale_y_continuous(labels = label_number(big.mark = " "))

Carte de France par département (2025)

Code
`etab-effectifs-commune-ape` |>
  group_by(code_departement) |>
  summarise(effectifs = sum(.data[[paste0("effectifs_salaries_", annee_max)]], na.rm = TRUE),
            .groups = "drop") |>
  rename(CODE_DEPT = code_departement) |>
  right_join(departements_details, by = "CODE_DEPT") |>
  right_join(departements, by = "CODE_DEPT") |>
  ggplot() + aes(long, lat, group = group, fill = effectifs) +
  coord_equal() + theme_void() + geom_polygon() +
  geom_text(aes(X_CENTROID, Y_CENTROID, label = NOM_DEPT), size = 1.8, check_overlap = TRUE) +
  scale_fill_viridis_c(na.value = "grey90",
                       labels = label_number(big.mark = " "),
                       name = "Effectifs salariés") +
  labs(x = "", y = "") +
  theme(axis.text.x = element_blank(),
        axis.text.y = element_blank())

Recherche par commune

Code
`etab-effectifs-commune-ape` |>
  filter(commune == "Bois-Colombes") |>
  select(secteur_na38, ape, !!paste0("nombre_d_etablissements_", annee_max),
         !!paste0("effectifs_salaries_", annee_max)) |>
  filter(!is.na(.data[[paste0("effectifs_salaries_", annee_max)]])) |>
  arrange(-.data[[paste0("effectifs_salaries_", annee_max)]]) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}