Immobilier en France

Data - BDF

Info

source dataset .html .RData
bdf immobilier 2024-07-26 2024-11-19

Données sur l’immobilier

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

Data on housing

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

LAST_COMPILE

LAST_COMPILE
2024-11-19

Last

Code
immobilier %>%
  group_by(date) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(date)) %>%
  head(2) %>%
  print_table_conditional()
date Nobs
2024-11-18 1
2024-11-17 1

variable

Code
immobilier %>%
  left_join(variable, by = "variable") %>%
  group_by(variable, Variable) %>%
  summarise(Nobs = n(),
            max_date = max(date),
            min_date = min(date)) %>%
  arrange(desc(max_date)) %>%
  print_table_conditional()
variable Variable Nobs max_date min_date
FM.D.U2.EUR.4F.KR.DFR.LEV BCE - Facilité de dépôt (données brutes) 9454 2024-11-18 1999-01-01
BSI1.M.FR.N.R.A220Z.A.1.U6.2254FR.Z01.E Crédits à l'habitat accordés aux particuliers résidents, encours 378 2024-09-30 1993-04-30
BSI1.M.FR.N.R.A26.A.1.U6.2254FR.Z01.E Crédits accordés aux particuliers résidents, encours 378 2024-09-30 1993-04-30
BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E Crédits à l'habitat accordés aux particuliers résidents, flux mensuels, CVS 378 2024-09-30 1993-04-30
BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F Crédits à l'habitat accordés aux particuliers résidents, variation d'encours (moyenne sur 3 mois glissants), CVS 378 2024-09-30 1993-04-30
MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N Crédits nouveaux à l'habitat des particuliers, flux CVS 261 2024-09-30 2003-01-31
MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N Crédits nouveaux à l'habitat des particuliers, taux d'intérêt annuel 310 2024-09-30 1998-12-31
MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N Crédits nouveaux à l'habitat (hors renégociations) aux particuliers résidents, flux, CVS 261 2024-09-30 2003-01-31
FM.M.U2.EUR.4F.KR.DF.LEV BCE - Facilité de dépôt - niveau fin de mois yc mois en cours 290 2023-02-28 1999-01-31
FM.M.U2.EUR.4F.KR.MLF.LEV BCE - Facilité de prêt marginal - niveau fin de mois yc mois en cours 290 2023-02-28 1999-01-31
FM.M.U2.EUR.4F.KR.MRR_FR.LEV BCE - Principales opérations de refinancement (taux fixe) 290 2023-02-28 1999-01-31

Comparer taux crédits immobilier et taux banque centrale

Tous

1 année

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
           variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Taux d'intérêt (%)") +
  theme(legend.position = c(0.32, 0.1),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1))

2 ans

Tous

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
           variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Taux d'intérêt (%)") +
  theme(legend.position = c(0.32, 0.1),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 0.5),
                labels = percent_format(accuracy = .1))

2020-

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
           variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2020-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  theme_minimal() + xlab("") + ylab("Taux d'intérêt (%)") +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_date(breaks = "3 months",
               labels = date_format("%b %Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, .25),
                labels = percent_format(accuracy = .01))

2021-

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
           variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2021-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  #scale_color_manual(values = viridis(3)[1:2]) +
  theme_minimal() + xlab("") + ylab("Taux d'intérêt (%)") +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_date(breaks = "2 months",
               labels = date_format("%b %Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, .25),
                labels = percent_format(accuracy = .01))

2022-

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
           variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") %>%
  left_join(variable, by = "variable") %>%
  filter(date >= as.Date("2022-01-01")) %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable)) +
  #scale_color_manual(values = viridis(3)[1:2]) +
  theme_minimal() + xlab("") + ylab("Taux d'intérêt (%)") +
  theme(legend.position = c(0.35, 0.9),
        legend.title = element_blank(),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, .25),
                labels = percent_format(accuracy = .01))

Tous les taux

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22.A.R.A.2254U6.EUR.N" |
           variable == "FM.M.U2.EUR.4F.KR.MRR_FR.LEV" |
           variable == "FM.M.U2.EUR.4F.KR.MLF.LEV" |
           variable == "FM.D.U2.EUR.4F.KR.DFR.LEV") %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value/100, color = Variable, linetype = Variable)) +
  scale_color_manual(values = c(viridis(3)[1], viridis(3)[1], viridis(3)[1], viridis(3)[2])) +
  scale_linetype_manual(values = c("dashed", "longdash", "solid", "solid")) +
  theme_minimal() + xlab("") + ylab("Taux d'intérêt (%)") +
  theme(legend.position = c(0.32, 0.13),
        legend.title = element_blank(), 
        legend.spacing.x = unit(0.2, 'cm'),
        legend.spacing.y = unit(0.2, 'cm')) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-10, 100, 1),
                labels = percent_format(accuracy = 1),
                limits = c(-0.02, 0.065))

Crédits à l’habitat

Encours

Linear

Code
plot_linear <- immobilier %>%
  filter(variable == "BSI1.M.FR.N.R.A26.A.1.U6.2254FR.Z01.E" |
           variable == "BSI1.M.FR.N.R.A220Z.A.1.U6.2254FR.Z01.E") %>%
  left_join(variable, by = "variable") %>%
  ggplot + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = value / 1000, color = Variable)) +
  
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank(),
        legend.direction = "vertical") +
  scale_y_continuous(breaks = seq(-10000, 10000, 100),
                labels = dollar_format(suffix = " Mds€", prefix = "",  accuracy = 1))

plot_linear

Log

Code
plot_log <- plot_linear +
  scale_y_log10(breaks = seq(-10000, 10000, 100),
                     labels = dollar_format(suffix = " Mds€", prefix = "",  accuracy = 1))

plot_log

Both

Code
library("ggpubr")
ggarrange(plot_linear + ggtitle("Linear"), plot_log + ggtitle("Log"), common.legend = T, legend = "bottom")

Montants mensuels

All

Code
immobilier %>%
  filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-10000, 10000, 1000))

2000-

Code
immobilier %>%
  filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E",
         date >= as.Date("1999-12-31")) %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-10000, 10000, 1000))

3 mois

All

Code
immobilier %>%
  filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("Crédits à l'habitat accordés aux particuliers résidents\n variation d'encours (moyenne sur 3 mois glissants)") +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-10000, 10000, 1000),
                     labels = dollar_format(acc = 1, pre = ""))

2000-

Code
immobilier %>%
  filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value/1000)) +
  theme_minimal() + xlab("") + ylab("Crédits à l'habitat accordés aux particuliers résidents\n variation d'encours (moyenne sur 3 mois glissants)") +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-10000, 10000, 1000)/1000,
                     labels = dollar_format(acc = 1, pre = "", su = " Mds€"))

Last year

Code
immobilier %>%
  filter(date >= Sys.Date() - months(18)) %>%
  filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F") %>%
  na.omit %>%
  ggplot + geom_line(aes(x = date, y = value)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_date(breaks = "1 month",
               labels = date_format("%b %Y")) +
  scale_y_continuous(breaks = seq(-10000, 10000, 1000),
                     labels = dollar_format(acc = 1, pre = ""))

1 mois, 3 mois

Code
immobilier %>%
  filter(variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.V3F" |
           variable == "BSI1.M.FR.Y.R.A220Z.A.4.U6.2254FR.Z01.E") %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.5, 0.9),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-10000, 10000, 1000))

Crédits nouveaux à l’habitat (hors renégociation)

All

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N" |
           variable == "MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N") %>%
  left_join(variable, by = "variable") %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-100, 100, 5))

Complete series

Code
immobilier %>%
  filter(variable == "MIR1.M.FR.B.A22HR.A.5.A.2254U6.EUR.N" |
           variable == "MIR1.M.FR.B.A22.A.5.A.2254U6.EUR.N") %>%
  left_join(variable, by = "variable") %>%
  group_by(date) %>%
  filter(n() == 2) %>%
  ggplot + geom_line(aes(x = date, y = value, color = Variable)) +
  theme_minimal() + xlab("") + ylab("") +
  theme(legend.position = c(0.4, 0.9),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-100, 100, 5))