House sales index of value of transactions (2015=100) - annual data - prc_hpi_hsva
Data - Eurostat
Info
Last observation: Annual: 2025 (N = 194)
First observation: Annual: 1998 (N = 3)
Last data update: 11 aoû 2026, 22:03. Last compile: 12 aoû 2026, 03:10
Structure
Purchase Total
France, Italy, Spain
Code
prc_hpi_hsva |>
filter(geo %in% c("FR", "IT", "ES"),
purchase == "TOTAL",
unit == "I25_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_hsva |>
filter(geo %in% c("BE", "DK", "FI"),
purchase == "TOTAL",
unit == "I25_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.1, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(-100, 300, 10)) +
ylab("House Price Index") + xlab("")
Annual Rate of Change
France, Netherlands, Sweden
Code
prc_hpi_hsva |>
filter(geo %in% c("FR", "NL", "SE"),
purchase == "TOTAL",
unit == "RCH_A_AVG") |>
time_to_date() |>
left_join(colors, by = c("Geo" = "country")) |>
mutate(values = values/100) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + scale_color_identity() + add_flags +
scale_x_date(breaks = as.Date(paste0(seq(1998, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
xlab("") + ylab("House sales index, y-o-y rate of change") +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
geom_hline(yintercept = 0, linetype = "dashed", color = "black")
France: New vs. Existing Dwellings
Code
prc_hpi_hsva |>
filter(geo == "FR",
purchase %in% c("DW_NEW", "DW_EXST"),
unit == "I25_A_AVG") |>
time_to_date() |>
ggplot() + geom_line(aes(x = date, y = values, color = Purchase)) +
theme_minimal() +
theme(legend.position = c(0.3, 0.85),
legend.title = element_blank()) +
scale_x_date(breaks = as.Date(paste0(seq(1998, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
xlab("") + ylab("House sales index (2025 = 100)")
Latest Year by Country
Code
latest_y <- prc_hpi_hsva |>
filter(purchase == "TOTAL", unit == "I25_A_AVG", !is.na(values)) |>
summarise(m = max(time)) |>
pull(m)
prc_hpi_hsva |>
filter(geo %in% c("FR", "IT", "ES", "BE", "DK", "FI", "NL", "SE"),
purchase == "TOTAL",
unit %in% c("I25_A_AVG", "RCH_A_AVG"),
time == latest_y) |>
select(Geo, Unit, values) |>
spread(Unit, values) |>
print_table_conditional()| Geo | Annual average index, 2025=100 | Annual average rate of change |
|---|---|---|
| Belgium | 100 | 26.8 |
| Denmark | 100 | 25.1 |
| Finland | 100 | 8.3 |
| France | 100 | 16.0 |
| Italy | 100 | 9.3 |
| Netherlands | 100 | 20.7 |
| Spain | 100 | 15.0 |
| Sweden | 100 | 3.5 |