Owner-occupied housing price index (2015=100) - quarterly data
Data - Eurostat
Info
Last observation: Quarterly: 2026Q1 (N = 1,329)
First observation: Quarterly: 2005Q1 (N = 100)
Last data update: 11 aoû 2026, 19:21. Last compile: 12 aoû 2026, 03:12
Structure
Greece, Europe, France, Spain, Italy, Germany
Purchase Total
Code
prc_hpi_ooq |>
filter(expend == "TOTAL",
geo %in% c("EL", "FR", "ES", "IT", "DE"),
unit == "I15_Q") |>
quarter_to_date() |>
group_by(geo) |>
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) |>
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
left_join(colors, by = c("Geo" = "country")) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_flags +
theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_color_manual(values = c("#ED2939", "#000000", "#009246", "#FFC400")) + add_flags +
scale_y_log10(breaks = seq(0, 200, 5)) +
theme(legend.position = "none",
legend.title = element_blank())
Acquisitions of dwellings - DW_ACQ
Code
prc_hpi_ooq |>
filter(expend == "DW_ACQ",
geo %in% c("EL", "FR", "ES", "IT", "DE"),
unit == "I15_Q") |>
quarter_to_date() |>
group_by(geo) |>
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) |>
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
left_join(colors, by = c("Geo" = "country")) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_flags +
theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_color_manual(values = c("#ED2939", "#000000", "#009246", "#FFC400")) + add_flags +
scale_y_log10(breaks = seq(0, 200, 5)) +
theme(legend.position = "none",
legend.title = element_blank())
Ownership of new dwellings - DW_NEW
Code
prc_hpi_ooq |>
filter(expend == "DW_OWN",
geo %in% c("EL", "FR", "ES", "IT", "DE"),
unit == "I15_Q") |>
quarter_to_date() |>
group_by(geo) |>
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) |>
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
left_join(colors, by = c("Geo" = "country")) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_flags +
theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_color_manual(values = c("#ED2939", "#000000", "#009246", "#FFC400")) + add_flags +
scale_y_log10(breaks = seq(0, 200, 2)) +
theme(legend.position = "none",
legend.title = element_blank())
2006Q1
Code
prc_hpi_ooq |>
filter(time == "2006Q1") %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}Purchase Total
Nobs
Code
prc_hpi_ooq |>
filter(expend == "TOTAL",
unit == "I15_Q") |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
group_by(geo, Geo) |>
arrange(time) |>
summarise(first = first(time),
last = last(time),
Nobs = n()) |>
arrange(-Nobs) |>
mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}France, Italy, Germany
Code
prc_hpi_ooq |>
filter(expend == "TOTAL",
geo %in% c("FR", "IT", "DE"),
unit == "I15_Q") |>
quarter_to_date() |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
left_join(colors, by = c("Geo" = "country")) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
scale_color_identity() + add_flags + add_flags +
scale_color_manual(values = c("#ED2939", "#000000", "#009246", "#FFC400")) +
scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_y_continuous(breaks = seq(-100, 300, 5)) +
ylab("House Price Index") + xlab("")
Belgium, Denmark, Sweden, United Kingdom
Code
prc_hpi_ooq |>
filter(expend == "TOTAL",
geo %in% c("BE", "DK", "SE", "UK"),
unit == "I15_Q") |>
quarter_to_date() |>
left_join(colors, by = c("Geo" = "country")) |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
scale_color_identity() + add_flags + add_flags +
scale_color_manual(values = c("#000000", "#C60C30", "#FECC00", "#6E82B5")) +
scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_y_continuous(breaks = seq(-100, 300, 10)) +
ylab("House Price Index") + xlab("")
All Series
France
Code
prc_hpi_ooq |>
filter(geo %in% c("FR"),
unit == "I15_Q") |>
quarter_to_date() |>
ggplot() + geom_line() + theme_minimal() +
aes(x = date, y = values, color = Expend, linetype = Expend) +
scale_color_manual(values = viridis(11)[1:10]) +
scale_x_date(breaks = seq(1920, 2100, 2) |> 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_ooq |>
filter(geo %in% c("DE"),
unit == "I15_Q") |>
quarter_to_date() |>
ggplot() + geom_line() + theme_minimal() +
aes(x = date, y = values, color = Expend, linetype = Expend) +
scale_color_manual(values = viridis(11)[1:10]) +
scale_x_date(breaks = seq(1920, 2100, 2) |> 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_ooq |>
filter(geo %in% c("IT"),
unit == "I15_Q") |>
quarter_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, 2) |> 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("")