Employment rates by sex, age and educational attainment level (%) - lfsq_ergaed

Data - Eurostat

Info

Last observation: Quarterly: 2026Q1 (N = 19,804)

First observation: Quarterly: 1998Q1 (N = 3,114)

Last data update: 14 aoû 2026, 21:34. Last compile: 15 aoû 2026, 01:12

Structure

isced11

Code
isced11 <- read_parquet("isced11_fr.parquet")
lfsq_ergaed |>
  
  group_by(isced11, Isced11) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
isced11 Isced11 Nobs
TOTAL All ISCED 2011 levels 332730
ED0-2 Less than primary, primary and lower secondary education (levels 0-2) 331190
ED3_4 Upper secondary and post-secondary non-tertiary education (levels 3 and 4) 331174
ED5-8 Tertiary education (levels 5-8) 324764
NRP No response 115086
ED35_45 Upper secondary and post-secondary non-tertiary education - vocational (levels 35 and 45) 82842
ED34_44 Upper secondary and post-secondary non-tertiary education - general (levels 34 and 44) 81890
NAP Not applicable 132

France, EU, Italy, Germany, Spain, Netherlands

Peu d’éducation

Y15-39

Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y15-39",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi (1er cycle de l'enseignement secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Y40-64

Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y40-64",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("2005-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi 40-64 (1er cycle du secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Males

Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y40-64",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "M") |>
  quarter_to_date() |>
  filter(date >= as.Date("2005-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi M 40-64 (1er cycle du secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Females

Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y40-64",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "F") |>
  quarter_to_date() |>
  filter(date >= as.Date("2005-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi F 40-64 (1er cycle du secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Y15-64

Tous

1995-
Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y15-64",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi (1er cycle de l'enseignement secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

2005-
Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y15-64",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("2005-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi (1er cycle du secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Femmes

Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y15-64",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "F") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi (1er cycle de l'enseignement secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Hommes

Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y15-64",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "M") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi (1er cycle de l'enseignement secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Y15-74

Code
lfsq_ergaed |>
  filter(isced11 == "ED0-2",
         age == "Y15-74",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi (1er cycle de l'enseignement secondaire)") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Education moyenne

Code
lfsq_ergaed |>
  filter(isced11 == "ED3_4",
         age == "Y15-74",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

Enseignement supérieur

Code
lfsq_ergaed |>
  filter(isced11 == "ED5-8",
         age == "Y15-74",
         geo %in% c("EA20", "DE", "ES", "FR", "IT"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

TOTAL

Code
lfsq_ergaed |>
  filter(isced11 == "TOTAL",
         age == "Y15-74",
         geo %in% c("ES", "DE", "FR", "IT", "EA20"),
         sex == "T") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(color = ifelse(geo == "EA20", color2, color)) |>
  mutate(color = ifelse(geo == "ES", color2, color)) |>
  mutate(values = values / 100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) + 
  theme_minimal() + xlab("") + ylab("Taux d'emploi") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-500, 200, 2),
                     labels = percent_format(accuracy = 1))

EU: Employment Rates - All

All

Code
lfsq_ergaed |>
  filter(geo %in% c("EU15", "EU28", "EU27_2020"),
         age == "Y15-64",
         isced11 == "TOTAL",
         sex == "T",
         unit == "PC") |>
  quarter_to_date() |>
  
  mutate(values = values/100) |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line() + theme_minimal()  +
  aes(x = date, y = values, color = color) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Employment Rates") +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                     labels = scales::percent_format(accuracy = 1))

Female

Code
lfsq_ergaed |>
  filter(geo %in% c("EU15", "EU28", "EU27_2020"),
         age == "Y15-64",
         isced11 == "TOTAL",
         sex == "F",
         unit == "PC") |>
  quarter_to_date() |>
  
  mutate(values = values/100) |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line() + theme_minimal()  +
  aes(x = date, y = values, color = color) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Employment Rates (Female)") +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                     labels = scales::percent_format(accuracy = 1))

Male

Code
lfsq_ergaed |>
  filter(geo %in% c("EU15", "EU28", "EU27_2020"),
         age == "Y15-64",
         isced11 == "TOTAL",
         sex == "M",
         unit == "PC") |>
  quarter_to_date() |>
  
  mutate(values = values/100) |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line() + theme_minimal()  +
  aes(x = date, y = values, color = color) +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.22, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Employment Rates (Male)") +
  scale_y_continuous(breaks = 0.01*seq(0, 200, 1),
                     labels = scales::percent_format(accuracy = 1))