Indices des loyers - Base 2019

Data - INSEE

Info

source dataset .html .RData
insee INDICES_LOYERS 2024-11-22 2024-12-22

Données sur l’inflation en France

source dataset .html .RData
insee bdf2017 2024-12-22 2023-11-21
insee ILC-ILAT-ICC 2024-12-22 2024-12-22
insee INDICES_LOYERS 2024-11-22 2024-12-22
insee IPC-1970-1980 2024-11-22 2024-12-22
insee IPC-1990 2024-11-22 2024-12-22
insee IPC-2015 2024-12-22 2024-12-22
insee IPC-PM-2015 2024-12-22 2024-12-22
insee IPCH-2015 2024-12-22 2024-12-22
insee IPGD-2015 2024-12-22 2024-12-22
insee IPLA-IPLNA-2015 2024-11-22 2024-12-22
insee IPPI-2015 2024-12-22 2024-12-22
insee IRL 2024-11-22 2024-12-22
insee SERIES_LOYERS 2024-11-22 2024-12-22
insee T_CONSO_EFF_FONCTION 2024-11-22 2024-07-18

Données sur l’immobilier

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

Info

  • Indices des loyers d’habitation (ILH). html

  • Enquête Loyers et charges. html

  • Questionnaire de l’enquête. pdf

  • Qualité de l’enquête relative à l’exercice 2018. pdf

Les données sont calculées à partir des résultats de l’enquête Loyers et charges et de celle sur les loyers auprès des bailleurs sociaux (ELBS). Le champ recouvre l’ensemble des résidences principales, louées vides, dont l’usage principal est l’habitation. L’indice est calculé selon la formule de Laspeyres appliquée à des loyers au mètre carré. On mesure une évolution à qualité constante, en rapportant les loyers du parc observés au trimestre T aux loyers du parc observés au trimestre T-1. Ces indices sont ensuite chaînés, du 1er mois d’un trimestre au 1er mois du trimestre précédent.

Ces données diffèrent de l’indice de référence des loyers (IRL), qui constitue la référence pour la révision des loyers en cours de bail dans le parc locatif privé, car l’évolution des loyers présentée ici est celle effectivement constatée. Si la variation réelle des loyers est corrélée à l’évolution de l’IRL, les deux indices ne sont cependant pas identiques.

LAST_UPDATE

  • LAST_UPDATE
Code
`INDICES_LOYERS` %>%
  group_by(LAST_UPDATE) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(LAST_UPDATE)) %>%
  print_table_conditional()
LAST_UPDATE Nobs
2024-12-17 5050

SECTEURS_LOYERS

Code
INDICES_LOYERS %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  group_by(SECTEURS_LOYERS, Secteurs_loyers) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
SECTEURS_LOYERS Secteurs_loyers Nobs
TOUS_SECTEURS Tous secteurs 1725
SECTEUR_SOCIAL Secteur social 1667
SECTEUR_LIBRE Secteur libre 1658

NATURE

Code
INDICES_LOYERS %>%
  left_join(NATURE, by = "NATURE") %>%
  group_by(NATURE, Nature) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
NATURE Nature Nobs
INDICE Indice 1707
GLISSEMENT_TRIMESTRIEL Glissement trimestriel 1697
GLISSEMENT_ANNUEL Glissement annuel 1646

REF_AREA

Code
INDICES_LOYERS %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
REF_AREA Ref_area Nobs
FM France métropolitaine 1356
AGGLO_PARIS Agglomération parisienne 1260
PR Reste de la France métropolitaine 1260
D971 Guadeloupe 495
D972 Martinique 204
D974 La Réunion 204
FR-D976 France (hors Mayotte) 204
D973 Guyane 67

OBS_STATUS

Code
INDICES_LOYERS %>%
  left_join(OBS_STATUS, by = "OBS_STATUS") %>%
  group_by(OBS_STATUS, Obs_status) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
OBS_STATUS Obs_status Nobs
A Valeur normale 4690
U Valeur atypique 360

TITLE_FR

Code
INDICES_LOYERS %>%
  group_by(IDBANK, TITLE_FR) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Par Type

Tous Secteurs

Code
INDICES_LOYERS %>%
  filter(SECTEURS_LOYERS == "TOUS_SECTEURS",
         NATURE == "INDICE",
         REF_AREA %in% c("FM", "AGGLO_PARIS", "PR")) %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  quarter_to_date %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Secteur libre

Code
INDICES_LOYERS %>%
  filter(SECTEURS_LOYERS == "SECTEUR_LIBRE",
         NATURE == "INDICE",
         REF_AREA %in% c("FM", "AGGLO_PARIS", "PR")) %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  quarter_to_date %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Secteur social

Code
INDICES_LOYERS %>%
  filter(SECTEURS_LOYERS == "SECTEUR_SOCIAL",
         NATURE == "INDICE",
         REF_AREA %in% c("FM", "AGGLO_PARIS", "PR")) %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  quarter_to_date %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Ref_area)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Par région

Liste

Code
INDICES_LOYERS %>%
  filter(TIME_PERIOD == "2020-Q2",
         NATURE == "INDICE",
         SECTEURS_LOYERS == "TOUS_SECTEURS") %>%
  select(REF_AREA, TITLE_FR, OBS_VALUE) %>%
  mutate(TITLE_FR = gsub("Indice des loyers – Tous secteurs – ", "", TITLE_FR),
         TITLE_FR = gsub(" – Base 100 en janvier 2019", "", TITLE_FR)) %>%
  {if (is_html_output()) print_table(.) else .}
REF_AREA TITLE_FR OBS_VALUE
FM France métropolitaine 100.6
AGGLO_PARIS Agglomération parisienne 100.8
PR Reste de la France métropolitaine 100.5
D971 Guadeloupe 101.1
D972 Martinique 101.2
D973 Guyane 101.0
D974 La Réunion 101.1
FR-D976 France (hors Mayotte) 100.6

France

All

Code
INDICES_LOYERS %>%
  filter(REF_AREA == "FM",
         NATURE == "INDICE") %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  quarter_to_date %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Secteurs_loyers)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

1990-

Code
INDICES_LOYERS %>%
  filter(REF_AREA == "FM",
         NATURE == "INDICE") %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1990-01-01")) %>%
  group_by(SECTEURS_LOYERS) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Secteurs_loyers)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

1992-

Code
INDICES_LOYERS %>%
  filter(REF_AREA == "FM",
         NATURE == "INDICE") %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  quarter_to_date %>%
  filter(date >= as.Date("1992-01-01")) %>%
  group_by(SECTEURS_LOYERS) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Secteurs_loyers)) +
  
  scale_x_date(breaks = seq(1920, 2025, 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

2000-

Code
INDICES_LOYERS %>%
  filter(REF_AREA == "FM",
         NATURE == "INDICE") %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  quarter_to_date %>%
  filter(date >= as.Date("2000-01-01")) %>%
  group_by(SECTEURS_LOYERS) %>%
  arrange(date) %>%
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Secteurs_loyers)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Agglomération Parisienne

Code
INDICES_LOYERS %>%
  filter(REF_AREA == "AGGLO_PARIS",
         NATURE == "INDICE") %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  quarter_to_date %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Secteurs_loyers)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

Province

Code
INDICES_LOYERS %>%
  filter(REF_AREA == "PR",
         NATURE == "INDICE") %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  quarter_to_date %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Secteurs_loyers)) +
  
  scale_x_date(breaks = seq(1920, 2025, 5) %>% 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(0, 200, 10),
                     labels = dollar_format(accuracy = 1, prefix = ""))

France (hors Mayotte)

Code
INDICES_LOYERS %>%
  filter(REF_AREA == "FR-D976",
         NATURE == "INDICE") %>%
  left_join(SECTEURS_LOYERS, by = "SECTEURS_LOYERS") %>%
  quarter_to_date %>%
  ggplot() + ylab("Indice des loyers") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Secteurs_loyers)) +
  
  scale_x_date(breaks = seq(1920, 2025, 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(0, 200, 1),
                     labels = dollar_format(accuracy = 1, prefix = ""))