Indices des prix à la consommation harmonisés - IPCH-IPC-2025-ensemble

Données - INSEE

Info

source dataset Title Updated
insee IPCH-2025 Indices des prix à la consommation harmonisés - Base 2025 2026-08-16
insee IPCH-IPC-2025-ensemble Indices des prix à la consommation harmonisés 2026-08-02
insee IPC-2025 Indice des prix à la consommation - Base 2025 2026-08-17

LAST_COMPILE

LAST_COMPILE
2026-08-18

IPC vs IPCH

Annuel

1996-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("1996-01-01")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 10)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

1999-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("1999-01-01")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 10)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2008-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("2008-01-01")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2017-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("2017-01-01")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2020-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("2020-01-01")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

Trimestriel

1996-

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("1996 Q1")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1996, 2100, 2), c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 10)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

1999-

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("1999 Q1")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 2), c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 10)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2001-

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2001 Q1")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 2), c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 10)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2001-2021

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2001 Q1"),
         date <= zoo::as.yearqtr("2021 Q1")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 2), c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 10)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2001-2024

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2001 Q1"),
         date <= zoo::as.yearqtr("2024 Q1")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 2), c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 10)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2008-

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2008 Q1")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1996, 2100, 1), c(1)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2017T2-2024T2

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2017 Q2"),
         date <= zoo::as.yearqtr("2024 Q2")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 1), c(1, 3)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2017T1-

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2017 Q1")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 1), c(1, 3)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2017T2-

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2017 Q2")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 1), c(1, 3)) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

2021T4-

Code
`IPCH-IPC-2025-ensemble-Q` |>
  filter(date >= zoo::as.yearqtr("2021 Q4")) |>
  arrange(date) |>
  group_by(INDICATEUR) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE, color = INDICATEUR)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9),
        axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
  scale_x_yearqtr(labels = date_format("%YT%q"),
                  breaks = expand.grid(seq(1999, 2100, 1), 1:4) |>
                         mutate(breaks = zoo::as.yearqtr(paste0(Var1, "Q", Var2))) |>
                         pull(breaks)) +
  scale_y_log10(breaks = seq(0, 1000, 5)) +
  geom_label(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, color = INDICATEUR, label = round(OBS_VALUE, 1)),
             show.legend = F)

Mensuel

2008-

Code
`IPCH-IPC-2025-ensemble` |>
  month_to_date() |>
  filter(date >= as.Date("2008-01-01")) |>
  group_by(Indicateur) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Indicateur),
             show.legend = F)

2017-

Code
`IPCH-IPC-2025-ensemble` |>
  month_to_date() |>
  filter(date >= as.Date("2017-01-01")) |>
  group_by(Indicateur) |>
  arrange(date) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + ylab("Indice des prix, Ensemble") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Indicateur)) +
  
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2),
                     labels = dollar_format(accuracy = 1, prefix = "")) +
  geom_label(data = . %>%
               filter(date == max(date)), aes(date, y = OBS_VALUE, label = round(OBS_VALUE, 1), color = Indicateur),
             show.legend = F)

Ratio IPC IPCH

Annuel

1996-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("1996-01-01")) |>
  arrange(date) |>
  spread(INDICATEUR, OBS_VALUE) |>
  mutate(OBS_VALUE = 100*IPCH/IPC) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 1)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

1999-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("1999-01-01")) |>
  arrange(date) |>
  spread(INDICATEUR, OBS_VALUE) |>
  mutate(OBS_VALUE = 100*IPCH/IPC) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 1)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

2008-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("2008-01-01")) |>
  arrange(date) |>
  spread(INDICATEUR, OBS_VALUE) |>
  mutate(OBS_VALUE = 100*IPCH/IPC) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 1)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

2017-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("2017-01-01")) |>
  arrange(date) |>
  spread(INDICATEUR, OBS_VALUE) |>
  mutate(OBS_VALUE = 100*IPCH/IPC) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 1)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))

2020-

Code
`IPCH-IPC-2025-ensemble-A` |>
  filter(date >= zoo::as.Date("2020-01-01")) |>
  arrange(date) |>
  spread(INDICATEUR, OBS_VALUE) |>
  mutate(OBS_VALUE = 100*IPCH/IPC) |>
  mutate(OBS_VALUE = 100*OBS_VALUE/OBS_VALUE[1]) |>
  ggplot() + geom_line(aes(x = date, y = OBS_VALUE)) +
  xlab("") + ylab("") + theme_minimal() +
  theme(legend.title = element_blank(),
        legend.position = c(0.3, 0.9)) +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(0, 1000, 1)) +
  geom_label_repel(data = . %>% filter(date == max(date)),
             aes(x = date, y = OBS_VALUE, label = round(OBS_VALUE, 1)))