House price index (2015 = 100) - annual data - prc_hpi_ooa

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 1,002)

First observation: Annual: 2005 (N = 100)

Last data update: 11 aoû 2026, 22:31. Last compile: 12 aoû 2026, 03:11

Structure

expend Total

France, Italy, Germany

Code
prc_hpi_ooa |>
  filter(expend == "TOTAL",
         geo %in% c("FR", "IT", "DE"),
         unit == "I15_A_AVG") |>
  time_to_date() |>
  
  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 = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(-100, 300, 10)) +
  ylab("House Price Index") + xlab("")

Belgium, Denmark, Finland

Code
prc_hpi_ooa |>
  filter(expend == "TOTAL",
         geo %in% c("BE", "DK", "FI"),
         unit == "I15_A_AVG") |>
  time_to_date() |>
  
  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 = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(-100, 300, 10)) +
  ylab("House Price Index") + xlab("")

All Series

France

Code
prc_hpi_ooa |>
  filter(geo %in% c("FR"),
         unit == "I15_A_AVG") |>
  time_to_date() |>
  
  
  ggplot() + geom_line() + theme_minimal() +
  aes(x = date, y = values, color = Expend, linetype = Expend) +
  scale_color_manual(values = viridis(12)[1:11]) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.75, 0.3),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(-100, 300, 10)) +
  ylab("House Price Index") + xlab("")

Germany

Code
prc_hpi_ooa |>
  filter(geo %in% c("DE"),
         unit == "I15_A_AVG") |>
  time_to_date() |>
  
  
  ggplot() + geom_line() + theme_minimal() +
  aes(x = date, y = values, color = Expend, linetype = Expend) +
  scale_color_manual(values = viridis(12)[1:11]) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(-100, 300, 10)) +
  ylab("House Price Index") + xlab("")

Italy

Code
prc_hpi_ooa |>
  filter(geo %in% c("IT"),
         unit == "I15_A_AVG") |>
  time_to_date() |>
  
  
  ggplot() + geom_line() + theme_minimal() +
  aes(x = date, y = values, color = Expend, linetype = Expend) +
  scale_color_manual(values = viridis(12)[1:11]) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.6, 0.9),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(-100, 300, 5)) +
  ylab("House Price Index") + xlab("")