[1] "fr_CA.UTF-8"
Indice des prix à la consommation - Base 2025
Data - INSEE
Info
Données sur l’inflation en France
| Title | source | dataset | .html | .RData |
|---|---|---|---|---|
| Budget de famille 2017 | insee | bdf2017 | 2026-02-03 | 2023-11-21 |
| Échantillon d’agglomérations enquêtées de l’IPC en 2024 | insee | echantillon-agglomerations-IPC-2024 | 2026-01-27 | 2026-01-27 |
| Échantillon d’agglomérations enquêtées de l’IPC en 2025 | insee | echantillon-agglomerations-IPC-2025 | 2026-01-27 | 2026-01-27 |
| Indices pour la révision d’un bail commercial ou professionnel | insee | ILC-ILAT-ICC | 2026-02-21 | 2026-02-21 |
| Indices des loyers d'habitation (ILH) | insee | INDICES_LOYERS | 2026-02-21 | 2026-02-21 |
| Indice des prix à la consommation - Base 1970, 1980 | insee | IPC-1970-1980 | 2026-02-21 | 2026-02-21 |
| Indices des prix à la consommation - Base 1990 | insee | IPC-1990 | 2026-02-21 | 2026-02-21 |
| Indice des prix à la consommation - Base 2015 | insee | IPC-2015 | 2026-02-21 | 2026-02-21 |
| Prix moyens de vente de détail | insee | IPC-PM-2015 | 2026-02-21 | 2026-02-21 |
| Indices des prix à la consommation harmonisés | insee | IPCH-2015 | 2026-02-21 | 2026-02-21 |
| Indices des prix à la consommation harmonisés | insee | IPCH-IPC-2015-ensemble | 2026-02-21 | 2026-02-21 |
| Indice des prix dans la grande distribution | insee | IPGD-2015 | 2026-02-21 | 2025-12-20 |
| Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens | insee | IPLA-IPLNA-2015 | 2026-02-21 | 2026-02-21 |
| Indices de prix de production et d'importation dans l'industrie | insee | IPPI-2015 | 2026-02-21 | 2026-02-21 |
| Indice pour la révision d’un loyer d’habitation | insee | IRL | 2026-01-08 | 2026-02-21 |
| Liste des variétés pour la mesure de l'IPC en 2024 | insee | liste-varietes-IPC-2024 | 2026-01-27 | 2025-04-02 |
| Liste des variétés pour la mesure de l'IPC en 2025 | insee | liste-varietes-IPC-2025 | 2026-01-27 | 2026-01-27 |
| Pondérations élémentaires 2024 intervenant dans le calcul de l’IPC | insee | ponderations-elementaires-IPC-2024 | 2026-01-27 | 2025-04-02 |
| Pondérations élémentaires 2025 intervenant dans le calcul de l’IPC | insee | ponderations-elementaires-IPC-2025 | 2026-01-27 | 2026-01-27 |
| Variation des loyers | insee | SERIES_LOYERS | 2026-02-21 | 2026-02-21 |
| Consommation effective des ménages par fonction | insee | T_CONSO_EFF_FONCTION | 2026-02-21 | 2025-12-22 |
| Montants de consommation selon différentes catégories de ménages | insee | table_conso_moyenne_par_categorie_menages | 2026-02-21 | 2026-01-27 |
| Ventilation de chaque sous-classe (niveau 4 de la COICOP v2) en postes et leurs pondérations | insee | table_poste_au_sein_sous_classe_ecoicopv2_france_entiere_ | 2026-02-21 | 2026-01-27 |
| Poids de chaque tranche d’unités urbaines dans la consommation | insee | tranches_unitesurbaines | 2026-02-21 | 2026-01-27 |
LAST_COMPILE
| LAST_COMPILE |
|---|
| 2026-02-21 |
LAST_UPDATE
Code
`IPC-2025` %>%
group_by(LAST_UPDATE) %>%
summarise(Nobs = n()) %>%
arrange(desc(LAST_UPDATE)) %>%
print_table_conditional()| LAST_UPDATE | Nobs |
|---|---|
| 2026-02-18 | 315417 |
| 2026-02-11 | 57088 |
| 2026-02-03 | 62451 |
Last
Code
`IPC-2025` %>%
group_by(TIME_PERIOD, FREQ) %>%
summarise(Nobs = n()) %>%
group_by(FREQ) %>%
filter(TIME_PERIOD == max(TIME_PERIOD)) %>%
print_table_conditional()| TIME_PERIOD | FREQ | Nobs |
|---|---|---|
| 2026 | A | 1457 |
| 2026-01 | M | 1116 |
Definitions
Moyenne annuelle: l’évolution en moyenne annuelle compare les prix d’une année donnée à ceux de l’année précédente.
Glissement annuel: l’évolution en glissement annuel compare les prix d’un seul mois d’une année donnée à ceux du même mois de l’année précédente.
Méthodo
- Indice des prix à la consommation (base 100=1998) (pdf, fr, 44 Ko, 01/02/2013)
- Indice des prix à la consommation des ménages du premier quintile de la distribution des niveaux de vie (pdf, fr, 119 Ko, 18/02/2013)
- Indice des prix à la consommation (base 100=2015) (pdf, fr, 145 Ko, 29/01/2016)
- Indice des prix à la consommation des ménages - base 100 en 2015 (pdf, fr, 955 Ko, 29/01/2016)
- Pour comprendre l’indice des prix - Édition 1998 (pdf, fr, 1 Mo, 01/01/1999)
- Indice des prix à la consommation des ménages - base 100 en 1998 (pdf, fr, 50 Ko, 01/01/1999)
- Dossier d’information méthodologique. Indice des prix, pouvoir d’achat (pdf, fr, 229 Ko, 01/02/2004)
Documents de travail
- L’IPC, miroir de l’évolution du coût de la vie en France ? - Ce qu’apporte l’analyse des courbes d’Engel. (pdf, fr, 615 Ko, 02/04/2010)
- Calcul d’un indice des prix des produits de grande consommation dans la grande distribution (pdf, fr, 204 Ko, 01/01/2014)
- Ce qui change pour l’IPC à partir du 29 janvier 2016 (pdf, fr, 129 Ko, 29/01/2016)
- L’expérience française des indices de prix a la consommation (pdf, fr, 107 Ko, 01/01/1996) Indice des prix à la consommation CVS et indice hors tarifs publics et produits à prix volatils corrigé des mesures fiscales, CVS (pdf, fr, 71 Ko, 27/03/1996)
- Indices mensuels des prix dans la grande distribution (pdf, fr, 126 Ko, 18/02/2016)
- Contenu des groupes avec les fonctions, les regroupements et les groupes publiés dans la nouvelle base 1998 (pdf, fr, 42 Ko, 01/01/1999)
- Comparaisons spatiales de prix au sein du territoire français (pdf, fr, 91 Ko, 01/12/2000)
- Les indices à utilité constante : une référence pour mesurer l’évolution des prix (pdf, fr, 219 Ko, 01/12/2000)
- La mesure des prix dans les domaines de la santé et de l’action sociale : quelques problèmes méthodologiques (pdf, fr, 212 Ko, 01/06/2003)
- Indice des prix à la consommation en base 100 en 1998 - Séries longues rétropolées, de 1990 à 2002 (pdf, fr, 201 Ko, 01/09/2003)
- Impact des ajustements de qualité dans le calcul de l’indice des prix à la consommation (pdf, fr, 53 Ko, 01/05/2004)
- Introduction à la pratique des indices statistiques (pdf, fr, 426 Ko, 01/11/2005)
- Note additionnelle sur les changements de l’année 2017 (pdf, fr, 228 Ko, 23/02/2017)
TEF 2020
Code
ig_b("insee", "TEF2020", "114-IPC-poids")
INDICATEUR
Code
`IPC-2025` %>%
left_join(INDICATEUR, by = "INDICATEUR") %>%
group_by(INDICATEUR, Indicateur) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| INDICATEUR | Indicateur | Nobs |
|---|---|---|
| IPC | Indice des prix à la consommation (IPC) | 434080 |
| ISJ | Indice d'inflation sous-jacente (ISJ) | 876 |
PRIX_CONSO
Code
`IPC-2025` %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
group_by(PRIX_CONSO, Prix_conso) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()CORRECTION
Code
`IPC-2025` %>%
left_join(CORRECTION, by = "CORRECTION") %>%
group_by(CORRECTION, Correction) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| CORRECTION | Correction | Nobs |
|---|---|---|
| BRUT | Non corrigé | 432997 |
| CVS | Corrigé des variations saisonnières | 1083 |
| CVS-FISC | Corrigé des mesures fiscales et des variations saisonnières | 876 |
NATURE
Code
`IPC-2025` %>%
left_join(NATURE, by = "NATURE") %>%
group_by(NATURE, Nature) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| NATURE | Nature | Nobs |
|---|---|---|
| INDICE | Indice | 300790 |
| VARIATIONS_M | Variations mensuelles | 48608 |
| GLISSEMENT_ANNUEL | Glissement annuel | 47200 |
| POND | Pondérations d'indice | 33886 |
| VARIATIONS_A | Variations annuelles | 2727 |
| CONTRIB_GLISSEMENT_ANNUEL | NA | 1745 |
FREQ
Code
`IPC-2025` %>%
left_join(FREQ, by = "FREQ") %>%
group_by(FREQ, Freq) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| FREQ | Freq | Nobs |
|---|---|---|
| M | Monthly | 366016 |
| A | Annual | 68940 |
MENAGES_IPC
Code
`IPC-2025` %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
group_by(MENAGES_IPC, Menages_ipc) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()COICOP2018
All
Code
`IPC-2025` %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()2-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 2) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()| COICOP2018 | Coicop2018 | Nobs |
|---|---|---|
| SO | Sans objet | 151312 |
| 00 | 00 - Ensemble | 5703 |
| 01 | 01 - Produits alimentaires et boissons non alcoolisées | 1000 |
| 02 | 02 - Boissons alcoolisées, tabac et stupéfiants | 1000 |
| 03 | 03 - Articles d’habillement et chaussures | 1000 |
| 04 | 04 - Logement, eau, gaz, électricité et autres combustibles | 1000 |
| 05 | 05 - Meubles, articles de ménage et entretien courant du foyer | 1000 |
| 06 | 06 - Santé | 1000 |
| 07 | 07 - Transports | 1000 |
| 08 | 08 - Information et communication | 1000 |
| 09 | 09 - Loisirs, sport et culture | 1000 |
| 10 | 10 - Services de l'enseignement | 1000 |
| 11 | 11 - Services de restauration et d'hébergement | 1000 |
| 12 | 12 - Assurance et services financiers | 1000 |
| 13 | 13 - Soins corporels, protection sociale et biens et services divers | 1000 |
3-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 3) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()4-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 4) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()5-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 5) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()6-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 6) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional()TITLE_FR
Code
`IPC-2025` %>%
group_by(TITLE_FR, IDBANK) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditionalREF_AREA
Code
`IPC-2025` %>%
group_by(REF_AREA) %>%
summarise(Nobs = n()) %>%
arrange(-Nobs) %>%
print_table_conditional| REF_AREA | Nobs |
|---|---|
| FE | 253879 |
| FM | 91027 |
| D973 | 21765 |
| D971 | 21721 |
| D972 | 21721 |
| D974 | 21721 |
| D976 | 3122 |
TIME_PERIOD
Code
`IPC-2025` %>%
group_by(TIME_PERIOD) %>%
summarise(Nobs = n()) %>%
arrange(desc(TIME_PERIOD)) %>%
print_table_conditionalDepuis 2017
2-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 2) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
filter(FREQ == "M",
TIME_PERIOD %in% c("2017-01", "2025-12"),
COICOP2018 != "SO",
MENAGES_IPC == "ENSEMBLE",
NATURE == "INDICE",
REF_AREA == "FE",
PRIX_CONSO == "SO") %>%
arrange(COICOP2018, Coicop2018) %>%
select(TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
mutate(`%` = round(100*((`2025-12`/`2017-01`)-1), 1)) %>%
arrange(- `%`) %>%
print_table_conditional()| COICOP2018 | Coicop2018 | 2017-01 | 2025-12 | % |
|---|---|---|---|---|
| 02 | 02 - Boissons alcoolisées, tabac et stupéfiants | 65.19 | 99.96 | 53.3 |
| 01 | 01 - Produits alimentaires et boissons non alcoolisées | 75.07 | 100.46 | 33.8 |
| 04 | 04 - Logement, eau, gaz, électricité et autres combustibles | 77.46 | 100.10 | 29.2 |
| 12 | 12 - Assurance et services financiers | 78.27 | 99.37 | 27.0 |
| 07 | 07 - Transports | 80.06 | 99.90 | 24.8 |
| 11 | 11 - Services de restauration et d'hébergement | 80.43 | 99.36 | 23.5 |
| 13 | 13 - Soins corporels, protection sociale et biens et services divers | 83.25 | 100.44 | 20.6 |
| 00 | 00 - Ensemble | 83.01 | 99.95 | 20.4 |
| 10 | 10 - Services de l'enseignement | 84.05 | 100.93 | 20.1 |
| 03 | 03 - Articles d’habillement et chaussures | 86.74 | 102.12 | 17.7 |
| 09 | 09 - Loisirs, sport et culture | 85.51 | 99.16 | 16.0 |
| 05 | 05 - Meubles, articles de ménage et entretien courant du foyer | 86.46 | 99.80 | 15.4 |
| 06 | 06 - Santé | 104.17 | 99.61 | -4.4 |
| 08 | 08 - Information et communication | 126.75 | 99.60 | -21.4 |
3-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 3) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
filter(FREQ == "M",
TIME_PERIOD %in% c("2017-01", "2025-12"),
COICOP2018 != "SO",
MENAGES_IPC == "ENSEMBLE",
NATURE == "INDICE",
REF_AREA == "FE",
PRIX_CONSO == "SO") %>%
arrange(COICOP2018, Coicop2018) %>%
select(TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
mutate(`%` = round(100*((`2025-12`/`2017-01`)-1), 1)) %>%
arrange(- `%`) %>%
print_table_conditional()4-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 4) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
filter(FREQ == "M",
TIME_PERIOD %in% c("2017-01", "2025-12"),
COICOP2018 != "SO",
MENAGES_IPC == "ENSEMBLE",
NATURE == "INDICE",
REF_AREA == "FE",
PRIX_CONSO == "SO") %>%
arrange(COICOP2018, Coicop2018) %>%
select(TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
mutate(`%` = round(100*((`2025-12`/`2017-01`)-1), 1)) %>%
arrange(- `%`) %>%
print_table_conditional()5-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 5) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
filter(FREQ == "M",
TIME_PERIOD %in% c("2017-01", "2025-12"),
COICOP2018 != "SO",
MENAGES_IPC == "ENSEMBLE",
NATURE == "INDICE",
REF_AREA == "FE",
PRIX_CONSO == "SO") %>%
arrange(COICOP2018, Coicop2018) %>%
select(TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
mutate(`%` = round(100*((`2025-12`/`2017-01`)-1), 1)) %>%
arrange(- `%`) %>%
print_table_conditional()6-digit
Code
`IPC-2025` %>%
filter(nchar(COICOP2018) == 6) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018, Coicop2018) %>%
filter(FREQ == "A",
TIME_PERIOD %in% c("2017", "2024"),
COICOP2018 != "SO",
MENAGES_IPC == "ENSEMBLE",
NATURE == "INDICE",
REF_AREA == "FE",
PRIX_CONSO == "SO") %>%
arrange(COICOP2018, Coicop2018) %>%
select(TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
mutate(`%` = round(100*((`2024`/`2017`)-1), 1)) %>%
arrange(- `%`) %>%
print_table_conditional()France Entiere (FE), France Métropolitaine (FM)
1990-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("SO"),
FREQ == "M",
COICOP2018 %in% c("00"),
REF_AREA %in% c("FE", "FM"),
NATURE == "INDICE") %>%
month_to_date %>%
arrange(desc(date)) %>%
group_by(REF_AREA) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = REF_AREA)) +
scale_x_date(breaks = seq(1920, 2100, 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 = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("SO"),
FREQ == "M",
COICOP2018 %in% c("00"),
REF_AREA %in% c("FE", "FM"),
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
arrange(desc(date)) %>%
group_by(REF_AREA) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = REF_AREA)) +
scale_x_date(breaks = seq(1920, 2100, 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 = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
Alimentation, loyers, chauffage, Ensemble
2017-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
COICOP2018 %in% c("041", "00", "01", "045"),
FREQ == "M",
REF_AREA == "FM",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("2017-01-01")) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "6 months",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.35, 0.8),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(100, 200, 5)) +
geom_label(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 3)
Hausse sur 2 ans
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
COICOP2018 %in% c("041", "00", "01", "045"),
FREQ == "M",
REF_AREA == "FM",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= max(date) - years(2)) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.28, 0.87),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(100, 130, 2),
labels = paste0(seq(0, 30, 2), "%")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
Par type de ménages
3 déciles
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("D6-D7", "INF-D1", "D9-PLUS")) %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
year_to_date %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.7, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
10 dixièmes
1998-
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("INF-D1", "D1-D2", "D2-D3", "D3-D4", "D4-D5",
"D5-D6", "D6-D7", "D7-D8", "D8-D9", "D9-PLUS")) %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
year_to_date %>%
group_by(MENAGES_IPC) %>%
mutate(MENAGES_IPC = factor(MENAGES_IPC, levels = c("INF-D1", "D1-D2", "D2-D3", "D3-D4", "D4-D5",
"D5-D6", "D6-D7", "D7-D8", "D8-D9", "D9-PLUS"))) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = MENAGES_IPC)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.7),
legend.title = element_blank()) +
guides(color = guide_legend(ncol = 3)) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2008-
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("INF-D1", "D1-D2", "D2-D3", "D3-D4", "D4-D5",
"D5-D6", "D6-D7", "D7-D8", "D8-D9", "D9-PLUS")) %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
year_to_date %>%
group_by(MENAGES_IPC) %>%
mutate(MENAGES_IPC = factor(MENAGES_IPC,
levels = c("INF-D1", "D1-D2", "D2-D3", "D3-D4", "D4-D5",
"D5-D6", "D6-D7", "D7-D8", "D8-D9", "D9-PLUS"))) %>%
arrange(date) %>%
filter(date >= as.Date("2008-01-01")) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = MENAGES_IPC)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.7),
legend.title = element_blank()) +
guides(color = guide_legend(ncol = 3)) +
scale_y_log10(breaks = seq(0, 200, 2),
labels = dollar_format(accuracy = 1, prefix = ""))
1er quintile, Tous
All
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("PREMIERQUINTILE", "ENSEMBLE"),
FREQ == "M",
PRIX_CONSO == "4018",
REF_AREA == "FE",
COICOP2018 == "SO",
NATURE == "INDICE") %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
month_to_date %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.7, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
1998-
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("PREMIERQUINTILE", "ENSEMBLE"),
FREQ == "M",
PRIX_CONSO == "4018",
REF_AREA == "FE",
COICOP2018 == "SO",
NATURE == "INDICE") %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
month_to_date %>%
filter(date >= as.Date("1998-01-01")) %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.6, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2012-
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("PREMIERQUINTILE", "ENSEMBLE"),
FREQ == "M",
PRIX_CONSO == "4018",
REF_AREA == "FE",
COICOP2018 == "SO",
NATURE == "INDICE") %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
month_to_date %>%
filter(date >= as.Date("2012-01-01")) %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.4, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 2),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
Glissement sur 2 ans
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("PREMIERQUINTILE", "ENSEMBLE"),
FREQ == "M",
PRIX_CONSO == "4018",
REF_AREA == "FE",
COICOP2018 == "SO",
NATURE == "INDICE") %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
month_to_date %>%
filter(date >= as.Date("2021-09-01")) %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.65, 0.2),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 1),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Cadres, Ouvriers, Retraités
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("CADRE", "OUVRIER", "RETRAITE", "ACTIF")) %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
year_to_date %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.7, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
Inflation - Tous
Table - COICOP2018
Table - PRIX_CONSO
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "INDICE",
COICOP2018 == "SO",
TIME_PERIOD %in% c("1990", "2000", "2010", "2020")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
select(PRIX_CONSO, Prix_conso, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditional| PRIX_CONSO | Prix_conso | 2000 | 2010 | 2020 |
|---|---|---|---|---|
| 4000 | Alimentation | NaN | 70.66 | 81.14 |
| 4001 | Produits frais | NaN | 58.49 | 80.85 |
| 4002 | Autres produits alimentaires | NaN | 72.94 | 81.19 |
| 4003 | Produits manufacturés | NaN | 97.13 | 93.80 |
| 4004 | Habillement, chaussures | NaN | 92.34 | 93.88 |
| 4005 | Produits de santé | NaN | 138.22 | 106.24 |
| 4006 | Autres produits manufacturés | NaN | 90.47 | 91.08 |
| 4007 | Énergie | NaN | 59.21 | 72.08 |
| 4008 | Produits pétroliers | NaN | 70.30 | 76.30 |
| 4009 | Services | NaN | 78.29 | 88.67 |
| 4010 | Services : Loyers, eau et enlèvement des ordures ménagères | NaN | 81.16 | 89.47 |
| 4011 | Services : Services de santé | NaN | 92.68 | 98.63 |
| 4012 | Services : Transports et communications | NA | 102.59 | 95.10 |
| 4013 | Autres services | NaN | 71.44 | 85.61 |
| 4014 | Alimentation, y compris tabac | NaN | 66.50 | 80.59 |
| 4015 | Produits manufacturés, y compris énergie | NaN | 86.13 | 87.63 |
| 4017 | Ensemble hors énergie | NaN | 80.37 | 88.12 |
| 4018 | Ensemble hors tabac | NaN | 79.34 | 86.79 |
| 4023 | Ensemble hors tabac et alcool | NA | 79.43 | 86.76 |
| 4024 | Ensemble non alimentaire, y compris tabac | NaN | 79.92 | 87.73 |
| 4025 | Ensemble hors produits frais | NaN | 78.87 | 86.73 |
| 4026 | Alimentation, y compris restaurants, cantines, cafés | NaN | 70.89 | 82.26 |
| 4034 | Tabac | NA | 40.71 | 76.25 |
| 4037 | Biens durables | NaN | 93.28 | 91.41 |
| 4038 | Produits manufacturés, hors habillement, biens durables et produits de santé | NaN | 87.77 | 90.89 |
| 4566 | Services : Transports, communications, hôtellerie | NA | NA | 86.19 |
| 5000 | NA | NA | NA | 86.43 |
| 5272 | Services : Transports | 60.83 | 74.05 | 79.68 |
| 5273 | Services : Communications | 161.17 | 149.44 | 119.44 |
| 5329 | Produits manufacturés, hors habillement et chaussures | NaN | 98.31 | 93.95 |
Inflation par catégorie
Tabac, Loyers, Ensemble, Carburants
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "045", "022", "0722"),
NATURE == "INDICE",
REF_AREA == "FE",
FREQ == "M",
is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
filter(date >= max(date) - years(2)) %>%
select(date, OBS_VALUE, Coicop2018) %>%
na.omit %>%
ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.72, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_y_continuous(breaks = 0.01*seq(-100, 300, 5),
labels = percent_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)),
fontface ="plain", color = "black", size = 3)
Tabac, Loyers, Ensemble
Glissement 1 an
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "01", "022"),
NATURE == "INDICE",
REF_AREA == "FE",
FREQ == "M",
is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
filter(date >= max(date) - years(2)) %>%
select(date, OBS_VALUE, Coicop2018) %>%
na.omit %>%
ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
labels = percent_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)),
fontface ="plain", color = "black", size = 3)
Glissement 2 ans
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "01", "022"),
NATURE == "INDICE",
REF_AREA == "FE",
FREQ == "M",
is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 24)-1) %>%
filter(date >= max(date) - years(2)) %>%
select(date, OBS_VALUE, Coicop2018) %>%
na.omit %>%
ggplot() + ylab("Glissement sur 2 ans (IPC, IPCH)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
labels = percent_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)),
fontface ="plain", color = "black", size = 3)
Alimentation, Loyers, Ensemble
Glissement 1 an
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "01", "041"),
NATURE == "INDICE",
REF_AREA == "FE",
FREQ == "M",
is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
filter(date >= max(date) - years(2)) %>%
select(date, OBS_VALUE, Coicop2018) %>%
na.omit %>%
ggplot() + ylab("Glissement sur 1 an (IPC, IPCH)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
labels = percent_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)),
fontface ="plain", color = "black", size = 3)
Glissement 2 ans
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "01", "041"),
NATURE == "INDICE",
REF_AREA == "FE",
FREQ == "M",
is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 24)-1) %>%
filter(date >= max(date) - years(2)) %>%
select(date, OBS_VALUE, Coicop2018) %>%
na.omit %>%
ggplot() + ylab("Glissement sur 2 ans (IPC, IPCH)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.3, 0.9),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_y_continuous(breaks = 0.01*seq(-100, 300, 1),
labels = percent_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)),
fontface ="plain", color = "black", size = 3)
Chauffage du logement, Loyers, Ensemble
Glissement 1 an
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "041", "045"),
NATURE == "INDICE",
REF_AREA == "FE",
FREQ == "M",
is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 12)-1) %>%
filter(date >= max(date) - years(2)) %>%
select(date, OBS_VALUE, Coicop2018) %>%
na.omit %>%
ggplot() + ylab("Inflation sur un an (IPC, IPCH)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.4, 0.45),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_y_continuous(breaks = 0.01*seq(-100, 300, 2),
labels = percent_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)),
fontface ="plain", color = "black", size = 3)
Glissement 2 ans
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "041", "045"),
NATURE == "INDICE",
REF_AREA == "FE",
FREQ == "M",
is.na(MENAGES_IPC) | MENAGES_IPC == "ENSEMBLE",
is.na(PRIX_CONSO) | PRIX_CONSO == "SO") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = OBS_VALUE/lag(OBS_VALUE, 24)-1) %>%
filter(date >= max(date) - years(2)) %>%
select(date, OBS_VALUE, Coicop2018) %>%
na.omit %>%
ggplot() + ylab("Glissement sur 2 ans (IPC, IPCH)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.4, 0.45),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
scale_y_continuous(breaks = 0.01*seq(-100, 300, 2),
labels = percent_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = percent(OBS_VALUE, acc = 0.1)),
fontface ="plain", color = "black", size = 3)
Pondérations d’indice
Table - COICOP2018
All
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "POND",
PRIX_CONSO == "SO",
CORRECTION == "BRUT",
TIME_PERIOD %in% c("1990", "2000", "2010", "2020")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
select(COICOP2018, Coicop2018, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditional2-digit
Javascript
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "POND",
PRIX_CONSO == "SO",
TIME_PERIOD %in% c("1990", "2000", "2010", "2020"),
nchar(COICOP2018) == 2) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
select(COICOP2018, Coicop2018, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditional| COICOP2018 | Coicop2018 | 2000 | 2010 | 2020 |
|---|---|---|---|---|
| 00 | 00 - Ensemble | 10000 | 10000 | 10000 |
| 01 | 01 - Produits alimentaires et boissons non alcoolisées | 1557 | 1477 | 1422 |
| 02 | 02 - Boissons alcoolisées, tabac et stupéfiants | 382 | 329 | 391 |
| 03 | 03 - Articles d’habillement et chaussures | 545 | 481 | 383 |
| 04 | 04 - Logement, eau, gaz, électricité et autres combustibles | 1381 | 1362 | 1427 |
| 05 | 05 - Meubles, articles de ménage et entretien courant du foyer | 633 | 602 | 482 |
| 06 | 06 - Santé | 898 | 1004 | 1053 |
| 07 | 07 - Transports | 1711 | 1672 | 1606 |
| 08 | 08 - Information et communication | 431 | 522 | 390 |
| 09 | 09 - Loisirs, sport et culture | 657 | 680 | 700 |
| 10 | 10 - Services de l'enseignement | 23 | 25 | 5 |
| 11 | 11 - Services de restauration et d'hébergement | 804 | 683 | 810 |
| 12 | 12 - Assurance et services financiers | 236 | 285 | 352 |
| 13 | 13 - Soins corporels, protection sociale et biens et services divers | 742 | 878 | 979 |
3-digit
Javascript
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "POND",
PRIX_CONSO == "SO",
CORRECTION == "BRUT",
TIME_PERIOD %in% c("1990", "2000", "2010", "2020"),
nchar(COICOP2018) == 3) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
select(COICOP2018, Coicop2018, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditional4-digit
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "POND",
PRIX_CONSO == "SO",
CORRECTION == "BRUT",
TIME_PERIOD %in% c("1990", "2000", "2010", "2020"),
nchar(COICOP2018) == 4) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
select(COICOP2018, Coicop2018, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditional5-digit
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "POND",
PRIX_CONSO == "SO",
CORRECTION == "BRUT",
TIME_PERIOD %in% c("1990", "2000", "2010", "2020"),
nchar(COICOP2018) == 5) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
select(COICOP2018, Coicop2018, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditionalTable - PRIX_CONSO
1990, 2000, 2010, 2020
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "POND",
CORRECTION == "BRUT",
COICOP2018 == "SO",
TIME_PERIOD %in% c("1990", "2000", "2010", "2020")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
select(PRIX_CONSO, Prix_conso, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditional| PRIX_CONSO | Prix_conso | 2000 | 2010 | 2020 |
|---|---|---|---|---|
| 4000 | Alimentation | 1745 | 1625 | 1610 |
| 4001 | Produits frais | 222 | 195 | 230 |
| 4002 | Autres produits alimentaires | 1523 | 1430 | 1380 |
| 4003 | Produits manufacturés | 3056 | 3110 | 2491 |
| 4004 | Habillement, chaussures | 531 | 470 | 380 |
| 4005 | Produits de santé | 375 | 476 | 412 |
| 4006 | Autres produits manufacturés | 2150 | 2164 | 1699 |
| 4007 | Énergie | 776 | 730 | 808 |
| 4008 | Produits pétroliers | 480 | 428 | 439 |
| 4009 | Services | 4226 | 4360 | 4886 |
| 4010 | Services : Loyers, eau et enlèvement des ordures ménagères | 780 | 759 | 752 |
| 4011 | Services : Services de santé | 506 | 521 | 604 |
| 4012 | Services : Transports et communications | 474 | 533 | 515 |
| 4013 | Autres services | 2466 | 2547 | 3015 |
| 4014 | Alimentation, y compris tabac | 1942 | 1800 | 1815 |
| 4015 | Produits manufacturés, y compris énergie | 3832 | 3839 | 3311 |
| 4017 | Ensemble hors énergie | 9224 | 9270 | 9192 |
| 4018 | Ensemble hors tabac | 9803 | 9825 | 9795 |
| 4023 | Ensemble hors tabac et alcool | 9618 | 9670 | NaN |
| 4024 | Ensemble non alimentaire, y compris tabac | 8255 | 8375 | 8390 |
| 4025 | Ensemble hors produits frais | 9743 | 9762 | 9790 |
| 4026 | Alimentation, y compris restaurants, cantines, cafés | 2379 | 2150 | 2239 |
| 4034 | Tabac | 197 | 175 | 205 |
| 4037 | Biens durables | NA | NA | 730 |
| 4038 | Produits manufacturés, hors habillement, biens durables et produits de santé | NA | NA | 975 |
| 4566 | Services : Transports, communications, hôtellerie | NA | NA | 2440 |
| 5000 | NA | NA | NA | 9185 |
| 5272 | Services : Transports | 229 | 244 | 300 |
| 5273 | Services : Communications | 245 | 289 | 215 |
| 5329 | Produits manufacturés, hors habillement et chaussures | 2525 | 2640 | 2111 |
2016, 2017, 2018, 2019, 2020
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
REF_AREA == "FE",
NATURE == "POND",
CORRECTION == "BRUT",
COICOP2018 == "SO",
TIME_PERIOD %in% c("2016", "2017", "2018", "2019", "2020")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
select(PRIX_CONSO, Prix_conso, TIME_PERIOD, OBS_VALUE) %>%
spread(TIME_PERIOD, OBS_VALUE) %>%
print_table_conditional()| PRIX_CONSO | Prix_conso | 2016 | 2017 | 2018 | 2019 | 2020 |
|---|---|---|---|---|---|---|
| 4000 | Alimentation | 1615 | 1627 | 1627 | 1619 | 1610 |
| 4001 | Produits frais | 217 | 235 | 243 | 244 | 230 |
| 4002 | Autres produits alimentaires | 1398 | 1392 | 1384 | 1375 | 1380 |
| 4003 | Produits manufacturés | 2651 | 2617 | 2594 | 2556 | 2491 |
| 4004 | Habillement, chaussures | 414 | 433 | 416 | 400 | 380 |
| 4005 | Produits de santé | 466 | 433 | 425 | 416 | 412 |
| 4006 | Autres produits manufacturés | 1771 | 1751 | 1753 | 1740 | 1699 |
| 4007 | Énergie | 773 | 748 | 777 | 804 | 808 |
| 4008 | Produits pétroliers | 419 | 378 | 408 | 425 | 439 |
| 4009 | Services | 4766 | 4820 | 4809 | 4830 | 4886 |
| 4010 | Services : Loyers, eau et enlèvement des ordures ménagères | 768 | 779 | 764 | 746 | 752 |
| 4011 | Services : Services de santé | 598 | 600 | 617 | 604 | 604 |
| 4012 | Services : Transports et communications | 524 | 524 | 505 | 504 | 515 |
| 4013 | Autres services | 2876 | 2917 | 2923 | 2976 | 3015 |
| 4014 | Alimentation, y compris tabac | 1810 | 1815 | 1820 | 1810 | 1815 |
| 4015 | Produits manufacturés, y compris énergie | 3434 | 3375 | 3382 | 3371 | 3311 |
| 4017 | Ensemble hors énergie | 9227 | 9252 | 9223 | 9196 | 9192 |
| 4018 | Ensemble hors tabac | 9805 | 9812 | 9807 | 9809 | 9795 |
| 4023 | Ensemble hors tabac et alcool | NaN | NaN | NaN | NaN | NaN |
| 4024 | Ensemble non alimentaire, y compris tabac | 8385 | 8373 | 8373 | 8381 | 8390 |
| 4025 | Ensemble hors produits frais | 9798 | 9785 | 9776 | 9777 | 9790 |
| 4026 | Alimentation, y compris restaurants, cantines, cafés | 2185 | 2214 | 2229 | 2238 | 2239 |
| 4034 | Tabac | 195 | 188 | 193 | 191 | 205 |
| 4037 | Biens durables | 745 | 739 | 753 | 755 | 730 |
| 4038 | Produits manufacturés, hors habillement, biens durables et produits de santé | 1033 | 1019 | 1005 | 990 | 975 |
| 4566 | Services : Transports, communications, hôtellerie | 2304 | 2289 | 2359 | 2403 | 2440 |
| 5000 | NA | 9183 | 9183 | 9192 | 9208 | 9185 |
| 5272 | Services : Transports | 279 | 282 | 282 | 285 | 300 |
| 5273 | Services : Communications | 245 | 242 | 223 | 219 | 215 |
| 5329 | Produits manufacturés, hors habillement et chaussures | 2237 | 2184 | 2178 | 2156 | 2111 |
Alimentation, Produits alimentaires
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("01", "011"),
REF_AREA == "FE",
NATURE == "POND") %>%
year_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
mutate(OBS_VALUE = OBS_VALUE/10000) %>%
ggplot() + ylab("Poids de l'alimentation dans l'indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.65, 0.9),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 40, 0.5),
labels = percent_format(accuracy = .1))
Santé
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("06"),
REF_AREA == "FE",
NATURE == "POND") %>%
year_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
mutate(OBS_VALUE = OBS_VALUE/10000) %>%
ggplot() + ylab("Poids de la santé dans l'indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE)) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 20, 0.5),
labels = percent_format(accuracy = .1))
Logement total
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("04", "041"),
REF_AREA == "FE",
NATURE == "POND") %>%
year_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
mutate(OBS_VALUE = OBS_VALUE/10000) %>%
ggplot() + ylab("Poids du logement dans l'indice des prix IPC") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.4, 0.9),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 20, 0.5),
labels = percent_format(accuracy = .1))
Santé, Assurance santé complémentaire
All
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("06", "1253"),
REF_AREA == "FE",
NATURE == "POND") %>%
year_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
mutate(OBS_VALUE = OBS_VALUE/10000) %>%
ggplot() + ylab("Poids de la santé dans l'indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_color_manual(values = viridis(2)[1:2]) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.15, 0.9),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 20, 0.5),
labels = percent_format(accuracy = .1))
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("06", "1253"),
REF_AREA == "FE",
NATURE == "POND") %>%
year_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
mutate(OBS_VALUE = OBS_VALUE/10000) %>%
ggplot() + ylab("Poids de la santé dans l'indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_color_manual(values = viridis(2)[1:2]) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.15, 0.9),
legend.title = element_blank()) +
scale_y_continuous(breaks = 0.01*seq(0, 20, 0.5),
labels = percent_format(accuracy = .1))
Santé
Santé, Assurance Santé vs. Ensemble
1990-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO == "SO",
COICOP2018 %in% c("06", "1253", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.15, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = c(100, 164, 200, 400, 816, seq(100, 180, 10)),
labels = dollar_format(accuracy = 1, prefix = ""))
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO == "SO",
COICOP2018 %in% c("06", "1253", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix, IPC") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.15, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = c(100, 164, 200, 400, 816, seq(100, 180, 10)),
labels = dollar_format(accuracy = 1, prefix = ""))
Péages
Péages vs. Ensemble
1990-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO == "SO",
COICOP2018 %in% c("07242", "0724", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(100, 400, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO == "SO",
COICOP2018 %in% c("07242", "0724", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("1996-01-01")) %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(100, 400, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
Pondération des péages, services divers dans l’IPC
1990-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("07242", "0724"),
REF_AREA == "FE",
NATURE == "POND") %>%
year_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
mutate(OBS_VALUE = OBS_VALUE/10000) %>%
ggplot() + ylab("Poids des péages dans l'indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 10, 0.1),
labels = percent_format(accuracy = .1),
limits = c(0, 0.016))
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("07242", "0724"),
REF_AREA == "FE",
NATURE == "POND") %>%
year_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
mutate(OBS_VALUE = OBS_VALUE/10000) %>%
filter(date >= as.Date("1996-01-01")) %>%
ggplot() + ylab("Poids des péages dans l'indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_y_continuous(breaks = 0.01*seq(0, 10, 0.1),
labels = percent_format(accuracy = .1),
limits = c(0, 0.016))
Services à domicile
Services à domicile vs. Ensemble
1998-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO == "SO",
COICOP2018 %in% c("05621", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("1998-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(100, 200, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
Tabac
Tabac vs. Ensemble
1990-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("SO"),
COICOP2018 %in% c("022", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
arrange(date) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.15, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = c(100, 164, 200, 400, 600, 800, 1000),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
1992-2022
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO == "SO",
COICOP2018 %in% c("022", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
arrange(date) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
filter(date >= as.Date("1992-01-01"),
date <= as.Date("2022-01-01")) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
mutate(Coicop2018 = factor(Coicop2018, levels = c("02.2 - Tabac", "00 - Ensemble"), labels = c("Tabac", "Ensemble de l'IPC"))) %>%
ggplot() + ylab("Indice des prix (100 = Janvier 1992)") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018), size = 1) +
scale_x_date(breaks = seq(1992, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
scale_color_manual(values = viridis(3)[1:2]) +
theme(legend.position = c(0.15, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = c(100, 200, 400, 600, 800, 1000),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_label(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 4, show.legend = F)
1992-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("022", "00"),
FREQ == "M",
PRIX_CONSO == "SO",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("1992-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = c(100, 164, 200, 400, 816),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 3, show.legend = F)
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("022", "00"),
FREQ == "M",
PRIX_CONSO == "SO",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(100, 1000, 100),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 3, show.legend = F)
2000-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("022", "00"),
FREQ == "M",
PRIX_CONSO == "SO",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("2000-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = c(seq(0, 100, 20), seq(0, 1000, 50)),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 3, show.legend = F)
2012-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("022", "00"),
FREQ == "M",
PRIX_CONSO == "SO",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("2012-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = c(seq(0, 100, 10), seq(0, 1000, 10)),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 3, show.legend = F)
2017-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("022", "00"),
FREQ == "M",
PRIX_CONSO == "SO",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("2017-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = c(seq(0, 100, 10), seq(0, 1000, 10)),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_label(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 3, show.legend = F)
Tabac, Alcool
2017-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("022", "00", "021"),
FREQ == "M",
PRIX_CONSO == "SO",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("2017-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = c(seq(0, 100, 10), seq(0, 1000, 10)),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_label_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Coicop2018), size = 3, show.legend = F)
Ensemble avec Tabac (IdBank: 001763852, 001759970)
1992-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("1992-01-01")) %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
scale_x_date(breaks = seq(1920, 2100, 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 = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
scale_x_date(breaks = seq(1920, 2100, 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 = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
2000-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("2000-01-01")) %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
scale_x_date(breaks = seq(1920, 2100, 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, 5),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
2012-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("2012-01-01")) %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 1),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
2017-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= as.Date("2017-01-01")) %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 1),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
Glissement sur 3 ans
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
month_to_date %>%
filter(date >= max(date) - years(3)) %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.65, 0.2),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 1),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Glissement sur 2 ans
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
month_to_date %>%
filter(date >= max(date) - years(2)) %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.65, 0.2),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 1),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Glissement sur 1 an
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4035", "4018", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
month_to_date %>%
filter(date >= max(date) - years(1)) %>%
group_by(Prix_conso) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.65, 0.2),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 1),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Immobilier
4003, 4009, 4034
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
PRIX_CONSO %in% c("4003", "4009", "4034"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Prix_conso, linetype = Prix_conso)) +
scale_x_date(breaks = seq(1920, 2100, 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 = ""))
041, 043, 044
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("041", "043", "044"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE",
#OBS_STATUS == "A"
) %>%
month_to_date %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
left_join(COICOP2018, by = "COICOP2018") %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 5) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.6, 0.3),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
041 Loyers effectifs, 00 Ensemble
1996-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("041", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018, Prix_conso) %>%
filter(date >= as.Date("1996-01-01")) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1996-01-01")]) %>%
mutate(Variable = paste0(Coicop2018, " - ", Prix_conso),
Variable = gsub(" - Sans objet", "", Variable)) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Variable)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.7, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
1999-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("041", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018, Prix_conso) %>%
filter(date >= as.Date("1999-01-01")) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("1999-01-01")]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = paste0(Coicop2018, " - ", Prix_conso))) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.7, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2000-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("041", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018, Prix_conso) %>%
filter(date >= as.Date("2000-01-01")) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2000-01-01")]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = paste0(Coicop2018, " - ", Prix_conso))) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.7, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2017-
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("041", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(Coicop2018, Prix_conso) %>%
filter(date >= as.Date("2017-01-01")) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[date == as.Date("2017-01-01")]) %>%
ggplot() + ylab("Base 100 = Janvier 2017") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = paste0(Coicop2018, " - ", Prix_conso))) +
scale_x_date(breaks = seq(1920, 2100, 1) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.8),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 2),
labels = dollar_format(accuracy = 1, prefix = ""))
Glissement sur 2 ans
Code
`IPC-2025` %>%
filter(INDICATEUR == "IPC",
MENAGES_IPC == "ENSEMBLE",
COICOP2018 %in% c("041", "00"),
FREQ == "M",
REF_AREA == "FE",
NATURE == "INDICE") %>%
month_to_date %>%
filter(date >= max(date) - years(2)) %>%
left_join(PRIX_CONSO, by = "PRIX_CONSO") %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = paste0(Coicop2018, " - ", Prix_conso))) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.28, 0.87),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 2),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Insee calcule y compris loyers fictifs
Categories
Par Deciles - INF-D1, D5-D6, D9-PLUS
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("INF-D1", "D5-D6", "D9-PLUS")) %>%
year_to_date %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
Par CSP - Actif, Retraité, Cadre, Ouvrier
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("ACTIF", "RETRAITE", "CADRE", "OUVRIER")) %>%
year_to_date %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(data = . %>%
filter(date == max(date)), aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)), size = 3)
Par Age - 30-44, 45-59, 60-74
All
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("MOINS-29", "30-44", "45-59", "60-74", "PLUS-75")) %>%
year_to_date %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc)) +
scale_color_manual(values = viridis(6)[1:5]) +
scale_x_date(breaks = seq(1920, 2100, 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, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
Locataire VS Propriétaire VS Accédant
Code
`IPC-2025` %>%
filter(MENAGES_IPC %in% c("ACCES-PROPRIETE", "LOCATAIRE", "PROPRIETAIRE")) %>%
year_to_date %>%
left_join(MENAGES_IPC, by = "MENAGES_IPC") %>%
group_by(MENAGES_IPC) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Menages_ipc, linetype = Menages_ipc)) +
scale_x_date(breaks = seq(1920, 2100, 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, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
Cantines
1990-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "1112"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("1990-01-01")) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2000-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "1112"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("2000-01-01")) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2010-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "1112"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("2010-01-01")) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
Assurance santé
1990-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "12532", "1253"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("1990-01-01")) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2000-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "12532", "1253"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("2000-01-01")) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2010-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "12532"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
filter(date >= as.Date("2010-01-01")) %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.9),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(0, 200, 5),
labels = dollar_format(accuracy = 1, prefix = ""))
2-digit
Boissons Alcoolisées, Logement, Restaurants et hôtels
All
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "02", "11", "04"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.3, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = c(100, 120, 150, 200, 220, 250, 300, 400, 500),
labels = dollar_format(accuracy = 1, prefix = ""))
Glissement sur 2 ans
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "02", "11", "04"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
filter(date >= max(date) - years(2)) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.28, 0.87),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 1),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Transports, Enseignement, B&S Divers
Tous
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "10", "07", "12"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.3, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(100, 300, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
Glissement sur 2 ans
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "10", "07", "12"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
filter(date >= max(date) - years(2)) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.18, 0.87),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 2),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Alimentation, Habillement, Meubles
Tous
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "05", "01", "03"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.35, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(100, 300, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
Glissement sur 2 ans
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "05", "01", "03"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
filter(date >= max(date) - years(2)) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.28, 0.87),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 2),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Santé, Communications, Loisirs
Tous
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "06", "09", "08"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
1996-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "06", "09", "08"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
filter(date >= as.Date("1996-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.2),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
2000-
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "06", "09", "08"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
filter(date >= as.Date("2000-01-01")) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot() + ylab("Indice des prix") + xlab("") + theme_minimal() +
geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
labels = date_format("%Y")) +
theme(legend.position = c(0.18, 0.22),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10),
labels = dollar_format(accuracy = 1, prefix = ""))
Glissement sur 2 ans
Code
`IPC-2025` %>%
filter(COICOP2018 %in% c("00", "06", "09", "08"),
REF_AREA == "FM",
FREQ == "M") %>%
month_to_date %>%
filter(date >= max(date) - years(2)) %>%
left_join(COICOP2018, by = "COICOP2018") %>%
group_by(COICOP2018) %>%
arrange(date) %>%
mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) %>%
ggplot + geom_line(aes(x = date, y = OBS_VALUE, color = Coicop2018)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = "1 month",
labels = date_format("%b %Y")) +
theme(legend.position = c(0.28, 0.87),
legend.title = element_blank(),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)) +
scale_y_log10(breaks = seq(0, 200, 2),
labels = dollar_format(accuracy = 1, prefix = "")) +
geom_text_repel(aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)),
fontface ="plain", color = "black", size = 3)
Comparer l’IPC et le déflateur de la consommation
Revenu primaire au RDB
Code
ig_b("insee", "FPS2021", "revenu-primaire-RDB")
Déflateur consommation finale des ménages
Code
ig_b("insee", "FPS2021", "depense-consommation-finale-menages")