Production in industry - quarterly data

Data - Eurostat

Info

Last observation: Quarterly: 2026Q2 (N = 10,141)

First observation: Quarterly: 1953Q1 (N = 9)

Last data update: 09 aoû 2026, 10:35. Last compile: 09 aoû 2026, 17:06

Structure

Industrial Production

France, Germany, Italy

Code
sts_inpr_q |>
  filter(nace_r2 == "C",
         unit == "I15",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "SCA") |>
  select(geo, Geo, time, values) |>
  group_by(geo) |>
  mutate(values = 100*values/values[time == "1997Q1"]) |>
  
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  quarter_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + ylab("Industrial Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  geom_image(data = tibble(date = rep(as.Date("2022-01-01"), 3),
                           value = c(110, 140, 85),
                           image = c("~/iCloud/bib/flags/france.png",
                                     "~/iCloud/bib/flags/germany.png",
                                     "~/iCloud/bib/flags/italy.png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(-60, 300, 10))

Year-on-Year Growth, France

Code
sts_inpr_q |>
  filter(geo == "FR",
         nace_r2 == "C",
         unit == "PCH_SM",
         s_adj == "CA") |>
  quarter_to_date() |>
  mutate(values = values/100) |>
  ggplot() + geom_line(aes(x = date, y = values)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Industrial production, YoY growth (France)") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Main Industrial Groupings, France

Code
sts_inpr_q |>
  filter(geo == "FR",
         nace_r2 %in% c("MIG_CAG", "MIG_COG", "MIG_ING"),
         unit == "I15",
         s_adj == "SCA") |>
  quarter_to_date() |>
  ggplot() + geom_line(aes(x = date, y = values, color = Nace_r2)) +
  theme_minimal() +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Production index, 2015 = 100 (France)")

Latest Quarter Snapshot: Industrial Production Growth

Code
latest_q <- sts_inpr_q |>
  filter(nace_r2 == "C", unit == "PCH_SM", s_adj == "CA",
         geo %in% c("FR", "DE", "IT", "ES", "PL"), !is.na(values)) |>
  summarise(m = max(time)) |>
  pull(m)

sts_inpr_q |>
  filter(nace_r2 == "C",
         unit == "PCH_SM",
         s_adj == "CA",
         geo %in% c("FR", "DE", "IT", "ES", "PL"),
         time == latest_q) |>
  select(Geo, values) |>
  arrange(desc(values)) |>
  print_table_conditional()
Geo values
Poland 3.2
Spain 1.9
France 1.0
Italy 0.6
Germany -1.0