Prix de l’immobilier

Data - BDF

Info

source dataset .html .RData
bdf RPP 2025-01-27 2025-01-31

Données sur l’immobilier

source dataset .html .RData
acpr as151 2024-06-19 2024-04-05
bdf BSI1 2025-01-31 2025-01-31
bdf CPP 2025-01-26 2024-07-01
bdf FM 2025-01-31 2025-01-31
bdf immobilier 2025-01-31 2025-01-31
bdf MIR 2025-01-26 2025-01-22
bdf MIR1 2025-01-27 2025-01-22
bdf RPP 2025-01-27 2025-01-31
cgedd nombre-vente-maison-appartement-ancien 2024-09-26 2024-09-26
insee CONSTRUCTION-LOGEMENTS 2025-01-26 2025-01-31
insee ENQ-CONJ-ART-BAT 2025-01-26 2025-01-31
insee ENQ-CONJ-IND-BAT 2025-01-26 2025-01-31
insee ENQ-CONJ-PROMO-IMMO 2025-01-26 2025-01-31
insee ENQ-CONJ-TP 2025-01-26 2025-01-31
insee ILC-ILAT-ICC 2025-01-26 2025-01-31
insee INDICES_LOYERS 2025-01-26 2025-01-31
insee IPLA-IPLNA-2015 2025-01-26 2025-01-31
insee IRL 2025-01-26 2025-01-26
insee PARC-LOGEMENTS 2025-01-26 2023-12-03
insee SERIES_LOYERS 2025-01-26 2025-01-26
insee t_dpe_val 2025-01-26 2025-01-13
notaires arrdt 2025-01-05 2025-01-05
notaires dep 2025-01-05 2025-01-05

Data on housing

source dataset .html .RData
bdf RPP 2025-01-27 2025-01-31
bis LONG_PP 2024-12-29 2024-05-10
bis SELECTED_PP 2024-12-29 2024-10-31
ecb RPP 2024-12-29 2024-12-29
eurostat ei_hppi_q 2025-01-31 2025-01-26
eurostat hbs_str_t223 2025-01-26 2025-01-26
eurostat prc_hicp_midx 2024-11-01 2025-01-26
eurostat prc_hpi_q 2025-01-26 2024-10-09
fred housing 2025-01-31 2025-01-31
insee IPLA-IPLNA-2015 2025-01-26 2025-01-31
oecd housing 2024-09-15 2020-01-18
oecd SNA_TABLE5 2024-09-11 2023-10-19

LAST_COMPILE

LAST_COMPILE
2025-01-31

Last

date Nobs
2024-09-30 6

variable

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  group_by(variable, Variable) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
variable Variable Nobs
RPP.Q.FR.N.ED.00.1.00 Indices des prix des logements anciens, Ensemble des logements, France métropolitaine 115
RPP.Q.FR.N.EF.CC.1.00 Indices des prix des logements anciens, Appartements, Paris 131
RPP.Q.FR.N.EF.CS.1.00 Indices des prix des logements anciens, Appartements, Ile de France Petite Couronne 131
RPP.Q.FR.N.NF.00.1.00 Prix au mètre carré des appartements neufs, France entière 119
RPP.Q.FR.N.NF.CR.1.00 Prix au mètre carré des appartements neufs, Ile de France 79
RPP.Q.FR.N.NH.00.1.00 Prix de vente moyen d'une maison neuve, France entière 119
RPP.Q.FR.N.NH.CR.1.00 Prix de vente moyen d'une maison neuve, Ile de France 78

RPP_DWELLING

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  left_join(RPP_DWELLING, by = "RPP_DWELLING") %>%
  group_by(RPP_DWELLING, Rpp_dwelling) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
RPP_DWELLING Rpp_dwelling Nobs
ED Residential property prices, Existing dwellings 115
EF Residential property prices, Existing flats 262
NF Residential property prices, New flats 198
NH Residential property prices, New houses 197

RPP_GEO_COV

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  left_join(RPP_GEO_COV, by = "RPP_GEO_COV") %>%
  group_by(RPP_GEO_COV, Rpp_geo_cov) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
RPP_GEO_COV Rpp_geo_cov Nobs
00 Whole country 353
CC Capital city 131
CR Capital Region 157
CS Capital city and suburbs 131

RPP_SOURCE

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  left_join(RPP_SOURCE, by = "RPP_SOURCE") %>%
  group_by(RPP_SOURCE, Rpp_source) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) print_table(.) else .}
RPP_SOURCE Rpp_source Nobs
1 NSI 772

Prix au mètre carré des appartements neufs

France entière, Ile de France

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING == "NF") %>%
  mutate(Variable = gsub("Prix au mètre carré des appartements neufs, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Prix au mètre carré des appartements neufs") +
  scale_y_log10(breaks = seq(0, 7000, 500),
                labels = dollar_format(suffix = " €/m2", prefix = "", accuracy = 1))

Indices de prix des logements anciens

100 = 2009

Log

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("2007-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Lineaire

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 10))

100 = 2015

Log

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Lineaire

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 10))

100 = 2001

Log

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("2000-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("2000-12-31")]) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Lineaire

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("2000-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("2000-12-31")]) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 10))

100 = 1998

Lineaire

Code
plot_lineaire <- RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("1997-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("1997-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 50))

plot_lineaire

Log

Code
plot_log <- plot_lineaire + 
  ylab("") + scale_y_log10(breaks = seq(0, 7000, 50))

plot_log

Bind

Code
ggpubr::ggarrange(plot_lineaire + ggtitle("Echelle linéaire"), plot_log + ggtitle("Echelle log"), common.legend = T)

100 = 1999

Lineaire

Code
plot_lineaire <- RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  filter(date >= as.Date("1998-12-31")) %>%
  mutate(value = 100*value/value[date == as.Date("1998-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1999, 2030, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_continuous(breaks = seq(0, 7000, 50))

plot_lineaire

Log

Code
plot_log <- plot_lineaire + 
  ylab("") + scale_y_log10(breaks = seq(0, 7000, 50))

plot_log

Bind

Code
ggpubr::ggarrange(plot_lineaire + ggtitle("Echelle linéaire"), plot_log + ggtitle("Echelle log"), common.legend = T)

100 = 2000

Paris, IDF, France

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("1999-12-31")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("1999-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens") +
  scale_y_log10(breaks = seq(0, 7000, 50))

Paris, France

Lineaire

Code
plot_lineaire <- RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("1998-12-31"),
         RPP_GEO_COV %in% c("CC", "00")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("1998-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal() + xlab("") + ylab("Indice des prix des logements anciens") +
  scale_x_date(breaks = seq(1999, 2030, 5) %>% paste0(., "-01-01") %>% as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = seq(0, 7000, 50))

plot_lineaire

Log

Code
plot_log <- plot_lineaire +
  scale_y_log10(breaks = seq(0, 7000, 50)) + ylab("")

plot_log

Bind

Code
ggpubr::ggarrange(plot_lineaire + ggtitle("Echelle linéaire"),
                  plot_log + ggtitle("Echelle log"), common.legend = T)

100 = 2007

Paris, IDF, France

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("2007-12-31")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("2007-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens (2008 = 100") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Paris, France

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING %in% c("ED", "EF"),
         date >= as.Date("2007-12-31"),
         RPP_GEO_COV %in% c("CC", "00")) %>%
  mutate(Variable = gsub("Indices des prix des logements anciens, ", "", Variable)) %>%
  group_by(Variable) %>%
  mutate(value = 100*value/value[date == as.Date("2007-12-31")]) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 1), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix des logements anciens (2008 = 100") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Prix de vente moyen d’une maison neuve

Code
RPP %>%
  left_join(RPP_var, by = "variable") %>%
  filter(RPP_DWELLING == "NH") %>%
  mutate(Variable = gsub("Prix de vente moyen d'une maison neuve, ","", Variable)) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Prix de vente moyen d'une maison neuve") +
  scale_y_log10(breaks = seq(0, 7000, 20))