Population and employment

Data - Eurostat

Info

source dataset Title .html .rData
eurostat namq_10_pe Population and employment 2026-03-12 2026-03-11
eurostat nama_10_pe Population and employment - nama_10_pe 2026-03-12 2026-03-11

LAST_COMPILE

LAST_COMPILE
2026-03-14

Last

Code
namq_10_pe %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2025Q4 1285

na_item

Code
namq_10_pe %>%
  left_join(na_item, by = "na_item") %>%
  group_by(na_item, Na_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
na_item Na_item Nobs
EMP_DC Total employment domestic concept 26297
POP_NC Total population national concept 26226
SAL_DC Employees domestic concept 25112
SELF_DC Self-employed domestic concept 25112
EMP_NC Total employment national concept 22496
SAL_NC Employees national concept 21678
SELF_NC Self-employed national concept 21678

s_adj

Code
namq_10_pe %>%
  left_join(s_adj, by = "s_adj") %>%
  group_by(s_adj, S_adj) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
s_adj S_adj Nobs
SCA Seasonally and calendar adjusted data 76130
NSA Unadjusted data (i.e. neither seasonally adjusted nor calendar adjusted data) 62236
SA Seasonally adjusted data, not calendar adjusted data 24049
CA Calendar adjusted data, not seasonally adjusted data 6184

freq

Code
namq_10_pe %>%
  left_join(freq, by = "freq") %>%
  group_by(freq, Freq) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
freq Freq Nobs
Q Quarterly 168599

unit

Code
namq_10_pe %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
unit Unit Nobs
THS_PER Thousand persons 68603
PCH_SM_PER Percentage change compared to same period in previous year (based on persons) 66423
PCH_PRE_PER Percentage change on previous period (based on persons) 33573

geo

Code
namq_10_pe %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

time

Code
namq_10_pe %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Population Table

Code
namq_10_pe %>%
  filter(time %in% c("2019Q1", "2009Q1", "1999Q1", "1989Q1"),
         na_item == "POP_NC",
         s_adj %in% c("SCA", "SA"),
         unit == "THS_PER") %>%
  select(geo, s_adj, time, values) %>%
  mutate(values = round(values/1000, 1)) %>%
  left_join(geo, by = "geo") %>%
  spread(time, values) %>%
  arrange(- `2009Q1`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Employment Table

Code
namq_10_pe %>%
  filter(time %in% c("2019Q1", "2009Q1", "1999Q1", "1989Q1"),
         na_item == "EMP_DC",
         s_adj %in% c("SCA", "SA"),
         unit == "THS_PER") %>%
  select(geo, s_adj, time, values) %>%
  mutate(values = round(values/1000, 1)) %>%
  left_join(geo, by = "geo") %>%
  spread(time, values) %>%
  arrange(- `2019Q1`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Eurozone

Last observation

Code
namq_10_pe %>%
  filter(time == max(time),
         na_item == "POP_NC") %>%
  spread(unit, values) %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(geo, by = "geo") %>%
  select(geo, Geo, everything()) %>%
  print_table_conditional

Previous observation

Code
namq_10_pe %>%
  filter(time %in% c("2023Q4", "2023Q3"),
         na_item == "POP_NC",
         geo == "EA20") %>%
  spread(time, values) %>%
  select_if(~ n_distinct(.) > 1) %>%
  print_table_conditional
unit s_adj 2023Q3 2023Q4
PCH_PRE_PER SCA 0.1 0.1
PCH_SM_PER NSA 0.5 0.5
PCH_SM_PER SCA 0.5 0.5
THS_PER NSA 349664.8 350197.2
THS_PER SCA 349681.5 350162.3

France, Germany, Italy, Europe

Population

All

Code
namq_10_pe %>%
  filter(geo %in% c("FR", "DE", "IT", "EA20"),
         unit == "THS_PER",
         s_adj == "NSA",
         na_item == "POP_NC") %>%
  left_join(geo, by = "geo") %>%
  quarter_to_date %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot() + ylab("Population") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + add_4flags +
  scale_x_date(breaks = seq(1909, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Geo) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = color), show.legend = F)

1999-

Code
namq_10_pe %>%
  filter(geo %in% c("FR", "DE", "IT", "EA20"),
         unit == "THS_PER",
         s_adj == "NSA",
         na_item == "POP_NC") %>%
  left_join(geo, by = "geo") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot() + ylab("Population") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + add_4flags +
  scale_x_date(breaks = seq(1909, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Geo) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = color), show.legend = F)

2001-2021

Code
namq_10_pe %>%
  filter(geo %in% c("FR", "DE", "IT", "EA20"),
         unit == "THS_PER",
         s_adj == "NSA",
         na_item == "POP_NC") %>%
  left_join(geo, by = "geo") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2001-01-01"),
         date <= as.Date("2021-01-01")) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c( "Geo" = "country")) %>%
  ggplot() + ylab("Population") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal() + add_4flags +
  scale_x_date(breaks = seq(1909, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Geo) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = color), show.legend = F)

France Evolution

Max -

NSA

Code
namq_10_pe %>%
  filter(geo == "FR",
         unit == "THS_PER",
         s_adj == "NSA") %>%
  left_join(na_item, by = "na_item") %>%
  quarter_to_date %>%
  group_by(na_item) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal() +
  scale_x_date(breaks = seq(1909, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Na_item) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = Na_item), show.legend = F)

SA

Code
namq_10_pe %>%
  filter(geo == "FR",
         unit == "THS_PER",
         s_adj == "SA") %>%
  left_join(na_item, by = "na_item") %>%
  quarter_to_date %>%
  #filter(date >= as.Date("1999-01-01")) %>%
  group_by(na_item) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal() +
  scale_x_date(breaks = seq(1979, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Na_item) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = Na_item))

1999 -

NSA

Code
namq_10_pe %>%
  filter(geo == "FR",
         unit == "THS_PER",
         s_adj == "NSA") %>%
  left_join(na_item, by = "na_item") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  group_by(na_item) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal() +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Na_item) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = Na_item))

SA

Code
namq_10_pe %>%
  filter(geo == "FR",
         unit == "THS_PER",
         s_adj == "SA") %>%
  left_join(na_item, by = "na_item") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1999-01-01")) %>%
  group_by(na_item) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal() +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Na_item) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = Na_item))

2001-2021

NSA

Code
namq_10_pe %>%
  filter(geo == "FR",
         unit == "THS_PER",
         s_adj == "NSA") %>%
  left_join(na_item, by = "na_item") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2001-01-01"),
         date <= as.Date("2021-01-01")) %>%
  group_by(na_item) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal() +
  scale_x_date(breaks = seq(1999, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Na_item) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = Na_item), show.legend = F)

SA

Code
namq_10_pe %>%
  filter(geo == "FR",
         unit == "THS_PER",
         s_adj == "SA") %>%
  left_join(na_item, by = "na_item") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2001-01-01"),
         date <= as.Date("2021-01-01")) %>%
  group_by(na_item) %>%
  mutate(values = 100*values/values[1]) %>%
  select_if(~ n_distinct(.) > 1) %>%
  ggplot() + ylab("") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Na_item)) +
  theme_minimal() +
  scale_x_date(breaks = seq(2001, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.7),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label_repel(data = . %>% group_by(Na_item) %>% filter(date == max(date)), aes(x = date, y = values, label = round(values, 1), color = Na_item))