Unemployment rates by sex, age and NUTS 2 regions (%) - yth_empl_140

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 7,830)

First observation: Annual: 1999 (N = 6,786)

Last data update: 23 jul 2026, 22:43. Last compile: 24 jul 2026, 04:10

Structure

France, Germany, Italy, Spain, Netherlands

Youth Unemployment Rate (15-29)

Code
yth_empl_140 %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         sex == "T",
         age == "Y15-29") %>%
  year_to_date %>%

  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  mutate(color = ifelse(geo == "NL", color2, color)) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal() + scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1996, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Youth unemployment rate (15-29)") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

France: Youth Unemployment by Sex

Code
yth_empl_140 %>%
  filter(geo == "FR",
         sex %in% c("M", "F"),
         age == "Y15-29") %>%
  year_to_date %>%

  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Sex)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1996, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Youth unemployment rate (15-29)") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

Unemployment Rate

Code
yth_empl_140 %>%
  filter(time == "2015", 
         nchar(geo) == 4,
         sex == "T",
         age == "Y15-29") %>%
  
  select(geo, Geo, unemployment = values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Youth Unemployment - NUTS2

English

Code
yth_empl_140 %>%
  filter(time == "2015", 
         nchar(geo) == 4,
         sex == "T",
         age == "Y15-29") %>%
  right_join(europe_NUTS2, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/100)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::percent_format(accuracy = 1),
                       breaks = 0.01*seq(0, 50, 5),
                       values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "Youth Unemployment (%)")

Français

Code
yth_empl_140 %>%
  filter(time == "2015", 
         nchar(geo) == 4,
         sex == "T",
         age == "Y15-29") %>%
  right_join(europe_NUTS2, by = "geo") %>%
  filter(long >= -15, lat >= 33) %>%
  ggplot(., aes(x = long, y = lat, group = group, fill = values/100)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::percent_format(accuracy = 1),
                       breaks = 0.01*seq(0, 50, 5),
                       values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "Chômage des jeunes (%)")