Consommation des ménages

Données - INSEE

Info

Last observation: Annuelle: 2022 (N = 13)

First observation: Annuelle: 1949 (N = 6)

Number of observations: 141 634

Last data update: 15 aoû 2026, 00:19. Last compile: 15 aoû 2026, 02:57

Structure

Données sur l’inflation en France

source dataset Title Updated
insee ILC-ILAT-ICC Indices pour la révision d’un bail commercial ou professionnel 2026-08-13
insee INDICES_LOYERS Indices des loyers d'habitation (ILH) 2026-08-13
insee IPC-1970-1980 Indice des prix à la consommation - Base 1970, 1980 2026-08-13
insee IPC-1990 Indices des prix à la consommation - Base 1990 2026-08-13
insee IPC-2015 Indice des prix à la consommation - Base 2015 2026-08-14
insee IPC-PM-2015 Prix moyens de vente de détail 2026-08-13
insee IPCH-2015 Indices des prix à la consommation harmonisés 2026-08-13
insee IPCH-IPC-2015-ensemble Indices des prix à la consommation harmonisés 2026-08-02
insee IPGD-2015 Indice des prix dans la grande distribution 2026-08-13
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2026-08-14
insee IPPI-2015 Indices de prix de production et d'importation dans l'industrie 2026-08-14
insee IRL Indice pour la révision d’un loyer d’habitation 2026-08-14
insee SERIES_LOYERS Variation des loyers 2026-08-14
insee T_CONSO_EFF_FONCTION Consommation effective des ménages par fonction 2026-08-02
insee bdf2017 Budget de famille 2017 2026-08-13
insee echantillon-agglomerations-IPC-2024 Échantillon d’agglomérations enquêtées de l’IPC en 2024 2026-08-02
insee echantillon-agglomerations-IPC-2025 Échantillon d’agglomérations enquêtées de l’IPC en 2025 2026-08-02
insee liste-varietes-IPC-2024 Liste des variétés pour la mesure de l'IPC en 2024 2026-08-02
insee liste-varietes-IPC-2025 Liste des variétés pour la mesure de l'IPC en 2025 2026-08-02
insee ponderations-elementaires-IPC-2024 Pondérations élémentaires 2024 intervenant dans le calcul de l’IPC 2026-08-02
insee ponderations-elementaires-IPC-2025 Pondérations élémentaires 2025 intervenant dans le calcul de l’IPC 2026-08-02
insee table_conso_moyenne_par_categorie_menages Montants de consommation selon différentes catégories de ménages 2026-08-02
insee table_poste_au_sein_sous_classe_ecoicopv2_france_entiere_ Ventilation de chaque sous-classe (niveau 4 de la COICOP v2) en postes et leurs pondérations 2026-08-02
insee tranches_unitesurbaines Poids de chaque tranche d’unités urbaines dans la consommation 2026-08-02

Data on inflation

source dataset Title Updated
bis CPI Consumer Price Index 2026-08-13
ecb CES Consumer Expectations Survey 2026-08-12
eurostat nama_10_co3_p3 Final consumption expenditure of households by consumption purpose (COICOP 3 digit) 2026-08-14
eurostat prc_hicp_cow HICP - country weights 2026-08-13
eurostat prc_hicp_ctrb Contributions to euro area annual inflation (in percentage points) 2026-08-13
eurostat prc_hicp_inw HICP - item weights 2026-08-13
eurostat prc_hicp_manr HICP (2015 = 100) - monthly data (annual rate of change) 2026-08-13
eurostat prc_hicp_midx HICP (2015 = 100) - monthly data (index) 2026-08-13
eurostat prc_hicp_mmor HICP (2015 = 100) - monthly data (monthly rate of change) 2026-08-13
eurostat prc_ppp_ind Purchasing power parities (PPPs), price level indices and real expenditures for ESA 2010 aggregates 2026-08-13
eurostat sts_inpp_m Producer prices in industry, total - monthly data 2026-08-13
eurostat sts_inppd_m Producer prices in industry, domestic market - monthly data 2026-08-13
eurostat sts_inppnd_m Producer prices in industry, non domestic market - monthly data 2026-08-14
fred cpi Consumer Price Index 2026-08-13
fred inflation Inflation 2026-08-13
imf CPI Consumer Price Index (CPI) 2026 February - CPI_2026_FEB_VINTAGE 2026-08-13
oecd MEI_PRICES_PPI Producer Prices - MEI_PRICES_PPI 2026-08-02
oecd PPP2017 2017 PPP Benchmark results 2026-08-02
oecd PRICES_CPI Consumer price indices (CPIs) 2026-08-02
wdi FP.CPI.TOTL.ZG Inflation, consumer prices (annual %) 2026-08-13
wdi NY.GDP.DEFL.KD.ZG Inflation, GDP deflator (annual %) 2026-08-13

LAST_DOWNLOAD

dataset LAST_DOWNLOAD
CNA-2014-CONSO-MEN 2026-07-23 03:40:48
CNA-2014-PIB 2026-07-23 23:57:41
IPC-PM-2015 NA

LAST_COMPILE

LAST_COMPILE
2026-08-15

Last

Code
`CNA-2014-CONSO-MEN` |>
  group_by(TIME_PERIOD) |>
  summarise(Nobs = n()) |>
  arrange(desc(TIME_PERIOD)) |>
  head(1) |>
  print_table_conditional()
TIME_PERIOD Nobs
2022 13

% de la consommation des ménages, postes

FON01, FON02, FON03, FON04

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON01", "FON02", "FON03", "FON04"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") |>
  #select_if(~ n_distinct(.) > 1) %>%
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation des ménages)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = scales::percent_format(accuracy = 1))

FON05, FON06, FON07, FON08

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON05", "FON06", "FON07", "FON08"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") |>
  #select_if(~ n_distinct(.) > 1) %>%
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation des ménages)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = scales::percent_format(accuracy = 1))

FON09, FON10, FON11, FON12

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON09", "FON10", "FON11", "FON12"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") |>
  #select_if(~ n_distinct(.) > 1) %>%
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation des ménages)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = scales::percent_format(accuracy = 1))

FON081, FON082, FON083

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON081", "FON082", "FON083", "FON08"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") |>
  #select_if(~ n_distinct(.) > 1) %>%
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation des ménages)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.4, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                     labels = scales::percent_format(accuracy = 1))

Définitions de la consommation

% du PIB

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FONDEPHSI", "FONDEP", "FONTOTAL"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(gdp, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% du PIB)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(gdp), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.5, 0.5)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = scales::percent_format(accuracy = 1))

% de la conso finale

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FONDEPHSI", "FONDEP", "FONTOTAL"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(conso_finale_effective, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la conso finale effective)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_finale_effective), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.5, 0.5)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 2),
                     labels = scales::percent_format(accuracy = 1))

% de la consommation des ménages hors SIFIM

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FONDEPHSI", "FONDEP", "FONTOTAL"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation des ménages)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.5, 0.5)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 200, 5),
                     labels = scales::percent_format(accuracy = 1))

Santé

% du PIB

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON06", "FON1253", "FON142"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(gdp, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% du PIB)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(gdp), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.91)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 0.5),
                     labels = scales::percent_format(accuracy = 0.1))

% de la consommation finale effective

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON06", "FON1253", "FON142"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(conso_finale_effective, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation finale effective)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_finale_effective), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.91)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 0.5),
                     labels = scales::percent_format(accuracy = 0.1))

% de la consommation des ménages hors SIFIM

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON06", "FON1253", "FON142"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation des ménages)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.91)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 0.5),
                     labels = scales::percent_format(accuracy = 0.1))

Loyers réels, loyers imputés

% du PIB

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON041", "FON042"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(gdp, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% du PIB)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(gdp), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.91)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 0.5),
                     labels = scales::percent_format(accuracy = 0.1))

% de la consommation finale effective

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON041", "FON042"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(conso_finale_effective, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_finale_effective), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.91)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 0.5),
                     labels = scales::percent_format(accuracy = 0.1))

% de la consommation des ménages hors SIFIM

Tous

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON041", "FON042"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  ggplot() + theme_minimal() + ylab("Consommation (% de la consommation)") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.91)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 0.5),
                     labels = scales::percent_format(accuracy = 0.1))

-2020

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON041", "FON042"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL") %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  left_join(conso_menages, by = "date") |>
  
  filter(date <= as.Date("2020-01-01")) |>
  ggplot() + theme_minimal() + ylab("Consommation de loyers\n% de la consommation des ménages hors SIFIM") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE/(conso_menages), color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.91)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 100, 1),
                     labels = scales::percent_format(accuracy = 1))

Tables 2020

Tous

Code
`CNA-2014-CONSO-MEN` |>
  filter(TIME_PERIOD == "2020",
         OPERATION == "P4") |>
  
  select_if(function(col) length(unique(col)) > 1) |>
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()

Tables 2019

Tous

Code
`CNA-2014-CONSO-MEN` |>
  filter(TIME_PERIOD == "2019",
         OPERATION == "P4") |>
  
  select_if(function(col) length(unique(col)) > 1) |>
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()

A10

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A10", CNA_PRODUIT),
         TIME_PERIOD == "2019") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()
CNA_PRODUIT EUR2014 EUROS_COURANTS SO
A10-AZ 31388 37961 120.9
A10-BE 578729 590072 102.0
A10-FZ 18355 19949 108.7
A10-GI 149994 161801 107.9
A10-JZ 47850 46810 97.8
A10-KZ 63668 69731 109.5
A10-LZ 255168 258910 101.5
A10-MN 27674 27870 100.7
A10-OQ 370420 384739 103.9
A10-RU 87036 88859 102.1

A17

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A17", CNA_PRODUIT),
         TIME_PERIOD == "2019") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()
CNA_PRODUIT EUR2014 EUROS_COURANTS SO
A17-AZ 31388 37961 120.9
A17-C1 175245 186526 106.4
A17-C2 46549 49859 107.1
A17-C3 38603 32220 83.5
A17-C4 73249 75510 103.1
A17-C5 192860 187893 97.4
A17-DE 52498 58064 110.6
A17-FZ 18355 19949 108.7
A17-GZ 14655 16063 109.6
A17-HZ 45388 48046 105.9
A17-IZ 89924 97692 108.6
A17-JZ 47850 46810 97.8
A17-KZ 63668 69731 109.5
A17-LZ 255168 258910 101.5
A17-MN 27674 27870 100.7
A17-OQ 370420 384739 103.9
A17-RU 87036 88859 102.1

A38

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A38", CNA_PRODUIT),
         TIME_PERIOD == "2019") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()

A88

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A88", CNA_PRODUIT),
         TIME_PERIOD == "2019") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()

DUR - Par durabilité

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("DUR", CNA_PRODUIT),
         TIME_PERIOD == "2019") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()
CNA_PRODUIT EUR2014 EUROS_COURANTS SO
DUR1 113326 109143 96.3
DUR11 40467 41159 101.7
DUR12 15625 15550 99.5
DUR13 7923 7221 91.1
DUR14 49365 45214 91.6
DUR2 94188 92842 98.6
DUR21 47808 47423 99.2
DUR22 46389 45419 97.9
DUR3 384514 406918 105.8
DUR31 180554 192568 106.7
DUR32 91241 99623 109.2
DUR33 112671 114727 101.8
DUR4 1038362 1077799 103.8
DUR41 252449 256083 101.5
DUR42 169548 171654 101.2
DUR43 76222 77221 101.3
DUR44 90026 97725 108.6
DUR45 107062 110931 103.6
DUR46 342942 364184 106.2
DUR5 -14495 -15056 103.9
DURTOTAL 1615941 1671646 103.4

FON

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("FON", CNA_PRODUIT),
         TIME_PERIOD == "2019") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()

GG

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("GG", CNA_PRODUIT),
         TIME_PERIOD == "2019") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, UNIT_MEASURE, OBS_VALUE) |>
  spread(UNIT_MEASURE, OBS_VALUE) |>
  print_table_conditional()

Loyers réels, loyers imputés, Tous

Montant

1990-2020

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON041", "FON042", "NNTOTAL"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "VAL",
         OPERATION %in% c("P4")) %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  filter(date >= as.Date("1990-01-01"),
         date <= as.Date("2020-01-01")) |>
  
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + ylab("Consommation en valeur") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_log10(breaks = seq(80, 1000, 10)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = CNA_PRODUIT), show.legend = F)

PCH (Prix chaîné année de base (non équilibré))

1990-2020

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON041", "FON042", "NNTOTAL"),
         NATURE == "VALEUR_ABSOLUE",
         PRIX_REF == "PCH",
         OPERATION %in% c("P4")) %>%
  select_if(~ n_distinct(.) > 1) |>
  year_to_date() |>
  filter(date >= as.Date("1990-01-01"),
         date <= as.Date("2020-01-01")) |>
  
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + ylab("Consommation en volume\nPrix chaîné année de base") + xlab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  
  scale_y_log10(breaks = seq(80, 1000, 5)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = CNA_PRODUIT), show.legend = F)

Remontées mécaniques

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("remontées", TITLE_FR)) |>
  year_to_date() |>
  arrange(date) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = UNIT_MEASURE)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 5, 10, 20, 50, 100, 200, 300, 500, 1000)) +
  
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

Loyers effectifs, loyers imputés

1959-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON042", "NNTOTAL", "FON041"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  arrange(date) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(100, 200, 300, 500, 1000, 2000)) +
  #
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

1990-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON042", "NNTOTAL", "FON041"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  filter(date >= as.Date("1990-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  #
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

1992-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON042", "FON041", "NNTOTAL"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  bind_rows(baguette) |>
  filter(date >= as.Date("1992-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Cna_produit)) +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

1996-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON042", "FON041", "NNTOTAL"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  bind_rows(baguette) |>
  filter(date >= as.Date("1996-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Cna_produit)) +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  #
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

1998-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON042", "FON041", "NNTOTAL"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  filter(date >= as.Date("1998-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

FON

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON042", "FON041"),
         NATURE == "INDICE") |>
  
  year_to_date() |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 5, 10, 20, 50, 100, 200, 300, 500, 1000)) +
  
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

GG

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("GGL68I", "GGL68R", "GGL68A"),
         NATURE == "INDICE") |>
  
  year_to_date() |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 5, 10, 20, 50, 100, 200, 300, 500, 1000)) +
  
  theme(legend.position = c(0.55, 0.15),
        legend.title = element_blank())

Immobilier, Loyers

1992-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("FON042", "FON041", "NNTOTAL"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  filter(date >= as.Date("1992-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  bind_rows(baguette) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = Cna_produit)) +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Activités immobilières, Ensemble

1959-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("A88-68", "NNTOTAL"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  arrange(date) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(100, 200, 300, 500, 1000, 2000)) +
  
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

1990-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("A88-68", "NNTOTAL"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  filter(date >= as.Date("1990-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

2000-

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("A88-68", "NNTOTAL"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Comparaisons

Immobilier, Pain, Ensemble

Code
`CNA-2014-CONSO-MEN` |>
  filter(CNA_PRODUIT %in% c("A88-68", "HIHC10G1A", "NNTOTAL", "FON0111"),
         NATURE == "INDICE",
         OPERATION == "P4") |>
  
  year_to_date() |>
  filter(date >= as.Date("1990-01-01")) |>
  group_by(CNA_PRODUIT) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + theme_minimal() + xlab("") + ylab("") +
  geom_line(aes(x = date, y = OBS_VALUE, color = CNA_PRODUIT)) +
  scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(100, 300, 10)) +
  
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Price Deflator

A10

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A10", CNA_PRODUIT),
         TIME_PERIOD %in% c("2019", "1959"),
         UNIT_MEASURE == "SO") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, TIME_PERIOD, OBS_VALUE) |>
  spread(TIME_PERIOD, OBS_VALUE) |>
  mutate(`Avg growth` = round(100*((`2019`/`1959`)^(1/60)-1), 1)) |>
  arrange(-`Avg growth`) |>
  print_table_conditional()
CNA_PRODUIT 1959 2019 Avg growth
A10-FZ 4.0 108.7 5.7
A10-GI 4.3 107.9 5.5
A10-RU 4.1 102.1 5.5
A10-LZ 4.4 101.5 5.4
A10-OQ 6.4 103.9 4.8
A10-MN 8.7 100.7 4.2
A10-KZ 9.8 109.5 4.1
A10-AZ 11.6 120.9 4.0
A10-BE 14.9 102.0 3.3
A10-JZ 22.1 97.8 2.5

A17

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A17", CNA_PRODUIT),
         TIME_PERIOD %in% c("2019", "1959"),
         UNIT_MEASURE == "SO") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, TIME_PERIOD, OBS_VALUE) |>
  spread(TIME_PERIOD, OBS_VALUE) |>
  mutate(`Avg growth` = round(100*((`2019`/`1959`)^(1/60)-1), 1)) |>
  arrange(-`Avg growth`) |>
  print_table_conditional()
CNA_PRODUIT 1959 2019 Avg growth
A17-GZ 1.6 109.6 7.3
A17-FZ 4.0 108.7 5.7
A17-IZ 4.3 108.6 5.5
A17-RU 4.1 102.1 5.5
A17-LZ 4.4 101.5 5.4
A17-C2 6.6 107.1 4.8
A17-HZ 6.5 105.9 4.8
A17-OQ 6.4 103.9 4.8
A17-MN 8.7 100.7 4.2
A17-KZ 9.8 109.5 4.1
A17-AZ 11.6 120.9 4.0
A17-C1 10.7 106.4 3.9
A17-DE 11.3 110.6 3.9
A17-C4 13.6 103.1 3.4
A17-C5 15.9 97.4 3.1
A17-JZ 22.1 97.8 2.5
A17-C3 315.2 83.5 -2.2

A38

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A38", CNA_PRODUIT),
         TIME_PERIOD %in% c("2019", "1959"),
         UNIT_MEASURE == "SO") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, TIME_PERIOD, OBS_VALUE) |>
  spread(TIME_PERIOD, OBS_VALUE) |>
  mutate(`Avg growth` = round(100*((`2019`/`1959`)^(1/60)-1), 1)) |>
  arrange(-`Avg growth`) |>
  print_table_conditional()

A88

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("A88", CNA_PRODUIT),
         TIME_PERIOD %in% c("2019", "1959"),
         UNIT_MEASURE == "SO") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, TIME_PERIOD, OBS_VALUE) |>
  spread(TIME_PERIOD, OBS_VALUE) |>
  mutate(`Avg growth` = round(100*((`2019`/`1959`)^(1/60)-1), 1)) |>
  arrange(-`Avg growth`) |>
  print_table_conditional()

DUR

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("DUR", CNA_PRODUIT),
         TIME_PERIOD %in% c("2019", "1959"),
         UNIT_MEASURE == "SO") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, TIME_PERIOD, OBS_VALUE) |>
  spread(TIME_PERIOD, OBS_VALUE) |>
  mutate(`Avg growth` = round(100*((`2019`/`1959`)^(1/60)-1), 1)) |>
  arrange(-`Avg growth`) |>
  print_table_conditional()
CNA_PRODUIT 1959 2019 Avg growth
DUR44 4.3 108.6 5.5
DUR41 4.4 101.5 5.4
DUR45 5.2 103.6 5.1
DUR46 5.7 106.2 5.0
DUR4 6.0 103.8 4.9
DUR32 8.7 109.2 4.3
DUR42 8.2 101.2 4.3
DURTOTAL 9.5 103.4 4.1
DUR3 11.6 105.8 3.8
DUR31 11.9 106.7 3.7
DUR5 11.8 103.9 3.7
DUR12 12.7 99.5 3.5
DUR21 13.4 99.2 3.4
DUR33 15.2 101.8 3.2
DUR11 15.9 101.7 3.1
DUR2 15.7 98.6 3.1
DUR43 16.7 101.3 3.1
DUR22 20.1 97.9 2.7
DUR1 33.6 96.3 1.8
DUR14 74.5 91.6 0.3
DUR13 85.3 91.1 0.1

FON

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("FON", CNA_PRODUIT),
         TIME_PERIOD %in% c("2019", "1959"),
         UNIT_MEASURE == "SO") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, TIME_PERIOD, OBS_VALUE) |>
  spread(TIME_PERIOD, OBS_VALUE) |>
  mutate(`Avg growth` = round(100*((`2019`/`1959`)^(1/60)-1), 1)) |>
  arrange(-`Avg growth`) |>
  print_table_conditional()

GG

Code
`CNA-2014-CONSO-MEN` |>
  filter(grepl("GG", CNA_PRODUIT),
         TIME_PERIOD %in% c("2019", "1959"),
         UNIT_MEASURE == "SO") |>
  
  arrange(CNA_PRODUIT) |>
  select(CNA_PRODUIT, CNA_PRODUIT, TIME_PERIOD, OBS_VALUE) |>
  spread(TIME_PERIOD, OBS_VALUE) |>
  mutate(`Avg growth` = round(100*((`2019`/`1959`)^(1/60)-1), 1)) |>
  arrange(-`Avg growth`) |>
  print_table_conditional()