Prix de vente des maisons anciennes sous-jacents aux indices Notaires-INSEE - Historiquedesprixdesmaisonspardep

Data - Notaires

Last observation: Q3 2025 (N = 10)

First observation: Q1 1991 (N = 9)

Last data update: 04 sept. 2026, 00:11

Last compile: 04 sept. 2026, 00:11

variable

Code
Historiquedesprixdesmaisonspardep |>
  group_by(variable) |>
  summarise(Nobs = n()) |>
  print_table_conditional()
variable Nobs
Appartements 1390
Maisons 1370

Exemples

2008-Today

Code
Historiquedesprixdesmaisonspardep |>
  filter(date %in% c(as.Date("2008-01-01"), max(date))) |>
  spread(date, value) %>%
  #setNames(c("Arrondissement", "2021T3", "2023T2")) %>%
  mutate(`Croissance (%)` = round(100*(.[[4]]/.[[3]]-1), 1),
         `Croissance (€)` = round(.[[4]]-.[[3]])) |>
  arrange(-`Croissance (%)`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2008-2020

Code
Historiquedesprixdesmaisonspardep |>
  filter(date %in% c(as.Date("2008-01-01"), as.Date("2020-01-01"))) |>
  spread(date, value) %>%
  #setNames(c("Arrondissement", "2021T3", "2023T2")) %>%
  mutate(`Croissance (%)` = round(100*(.[[4]]/.[[3]]-1), 1),
         `Croissance (€)` = round(.[[4]]-.[[3]])) |>
  arrange(-`Croissance (%)`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2022T2-2023T2

Code
Historiquedesprixdesmaisonspardep |>
  filter(date %in% c(as.Date("2022-04-01"), as.Date("2023-04-01"))) |>
  spread(date, value) %>%
  #setNames(c("Arrondissement", "2021T3", "2023T2")) %>%
  mutate(`Croissance (%)` = round(100*(.[[4]]/.[[3]]-1), 1),
         `Croissance (€)` = round(.[[4]]-.[[3]])) |>
  arrange(-`Croissance (%)`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2021T3-2023T2

Code
Historiquedesprixdesmaisonspardep |>
  filter(date %in% c(as.Date("2021-07-01"), as.Date("2023-04-01"))) |>
  spread(date, value) %>%
  #setNames(c("Arrondissement", "2021T3", "2023T2")) %>%
  mutate(`Croissance (%)` = round(100*(.[[4]]/.[[3]]-1), 1),
         `Croissance (€)` = round(.[[4]]-.[[3]])) |>
  arrange(-`Croissance (%)`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Paris, Petite Couronne, Grande Couronne

€ / m2

Code
Historiquedesprixdesmaisonspardep |>
  filter(Location %in% c("Paris", "Grande Couronne", "Petite Couronne"),
         variable == "Maisons") |>
  group_by(Location) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Location)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Prix au mètre carré") +
  scale_y_log10(breaks = seq(0, 1000000, 10000),
                labels = dollar_format(p = "", su = "€", a = 1))

100 = 2008

Code
Historiquedesprixdesmaisonspardep |>
  filter(Location %in% c("Paris", "Grande Couronne", "Petite Couronne"),
         variable == "Maisons") |>
  group_by(Location) |>
  mutate(value = 100*value/value[date == as.Date("2008-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Location)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix au mètre carré (2008 = 100)") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Essonne, Seine et Marne, Paris

€ / m2

Code
Historiquedesprixdesmaisonspardep |>
  filter(Location %in% c("Paris", "Essonne", "Seine-et-Marne"),
         variable == "Maisons") |>
  group_by(Location) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Location)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Prix au mètre carré") +
  scale_y_log10(breaks = seq(0, 1000000, 10000),
                labels = dollar_format(p = "", su = "€", a = 1))

100 = 2008

Code
Historiquedesprixdesmaisonspardep |>
  filter(Location %in% c("Paris", "Essonne", "Seine-et-Marne"),
         variable == "Maisons") |>
  group_by(Location) |>
  mutate(value = 100*value/value[date == as.Date("2008-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Location)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix au mètre carré (2008 = 100)") +
  scale_y_log10(breaks = seq(0, 7000, 10))

Paris, Ile de France, Hauts-de- Seine

€ / m2

Code
Historiquedesprixdesmaisonspardep |>
  filter(Location %in% c("Paris", "Ile de France", "Hauts-de-Seine"),
         variable == "Maisons") |>
  group_by(Location) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Location)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Prix au mètre carré") +
  scale_y_log10(breaks = seq(0, 1000000, 10000),
                labels = dollar_format(p = "", su = "€", a = 1))

100 = 2008

Code
Historiquedesprixdesmaisonspardep |>
  filter(Location %in% c("Paris", "Ile de France", "Hauts-de-Seine"),
         variable == "Maisons") |>
  group_by(Location) |>
  mutate(value = 100*value/value[date == as.Date("2008-01-01")]) |>
  ggplot() + geom_line(aes(x = date, y = value, color = Location)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Indice des prix au mètre carré (2008 = 100)") +
  scale_y_log10(breaks = seq(0, 7000, 10))