HICP (2015 = 100) - annual data (average index and rate of change) - prc_hicp_aind
Data - Eurostat
Last observation: 2025 (N = 32535)
First observation: 1996 (N = 6214)
Last data update: 12 août 2026, 23:09
Last compile: 04 sept. 2026, 00:08
Structure
| source | dataset | Title | Updated |
|---|---|---|---|
eurostat |
prc_hicp_manr | HICP (2015 = 100) - monthly data (annual rate of change) - prc_hicp_manr | 2026-08-07 |
eurostat |
prc_hicp_aind | HICP (2015 = 100) - annual data (average index and rate of change) - prc_hicp_aind | 2026-08-12 |
eurostat |
prc_hicp_cow | HICP - country weights - prc_hicp_cow | 2026-07-15 |
eurostat |
nama_10_co3_p3 | Final consumption expenditure of households by consumption purpose (COICOP 3 digit) - nama_10_co3_p3 | 2026-08-30 |
Last
Code
prc_hicp_aind |>
group_by(time) |>
summarise(Nobs = n()) |>
arrange(desc(time)) |>
head(2) |>
print_table_conditional()| time | Nobs |
|---|---|
| 2025 | 32549 |
| 2024 | 32554 |
geo
Code
prc_hicp_aind |>
left_join(geo, by = "geo") |>
group_by(geo, Geo) |>
summarise(Nobs = n()) |>
arrange(-Nobs) |>
mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}Années
2025
Tous
Code
coicop <- read_parquet("coicop_fr.parquet")
prc_hicp_aind |>
filter(time == "2025",
geo %in% c("DE", "FR", "IT", "EA20"),
unit == "RCH_A_AVG") %>%
select_if(~ n_distinct(.) > 1) |>
left_join(coicop, by = "coicop") |>
spread(geo, values) |>
select(coicop, Coicop, FR, EA20, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}Sélection
Code
coicop <- read_parquet("coicop_fr.parquet")
prc_hicp_aind |>
filter(time == "2025",
geo %in% c("DE", "FR", "IT", "EA20"),
unit == "RCH_A_AVG",
coicop %in% c(paste0("CP0", 0:9), paste0("CP1", 0:3), "CP041", "CP0830")) %>%
select_if(~ n_distinct(.) > 1) |>
left_join(coicop, by = "coicop") |>
spread(geo, values) |>
select(coicop, Coicop, FR, EA20, everything())# # A tibble: 15 × 6
# coicop Coicop FR EA20 DE IT
# <chr> <chr> <dbl> <dbl> <dbl> <dbl>
# 1 CP00 Ensemble ICPH 0.9 2.1 2.3 1.7
# 2 CP01 Produits alimentaires et boissons non alcooli… 1.3 2.6 2.6 3
# 3 CP02 Boissons alcoolisées, tabac et stupéfiants 2.4 3.7 3.1 2.1
# 4 CP03 Articles d'habillement et chaussures 0.8 0.3 0.7 0.9
# 5 CP04 Logement, eau, électricité, gaz et autres com… -0.2 2.1 1.1 1.1
# 6 CP041 Loyers d'habitation effectifs 2.3 2.9 2.1 3.8
# 7 CP05 Meubles, articles de ménage et entretien cour… -0.2 0.4 0 0.5
# 8 CP06 Santé 2 2.7 2.7 2.8
# 9 CP07 Transports -0.1 0.8 2 -0.2
# 10 CP08 Communications -8 -2.3 -0.8 -4.8
# 11 CP0830 Services de téléphonie et de télécopie -9.9 -1.7 -1.2 0.1
# 12 CP09 Loisirs et culture 0.8 1.6 1.5 1.2
# 13 CP10 Enseignement 2.9 3.8 4.8 2.6
# 14 CP11 Restaurants et hôtels 2.4 3.8 3.7 3.3
# 15 CP12 Biens et services divers 3.7 4 5.5 2.9
Quality
Code
compare_coicop <- function(CPname, legend.position = c(0.2, 0.2), start = 1996, geos = c("DE", "FR", "IT", "ES", "NL"), ytick = 10){
inflation <- prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop == CPname,
geo %in% geos) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
filter(date >= as.Date(paste0(start, "-01-01"))) |>
add_flag_color("Geo") |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
ungroup() |>
mutate(variable = "Price index")
cons <- nama_10_co3_p3 |>
filter(unit == "PD15_EUR",
geo %in% geos,
coicop == CPname) |>
left_join(geo, by = "geo") |>
year_to_date() |>
filter(date >= as.Date(paste0(start, "-01-01"))) |>
add_flag_color("Geo") |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
ungroup() |>
mutate(variable = "Consumption Deflator")
cons |>
bind_rows(inflation) |>
ggplot() + geom_line(aes(x = date, y = values, color = color, linetype = variable)) +
theme_minimal() +
scale_color_identity() + xlab("") + ylab(CPname) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = legend.position,
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 1000, ytick))
}
compare_coicop2 <- function(CPname, CPname2, legend.position = c(0.2, 0.2), start = 1996, geos = c("DE", "FR", "IT", "ES", "NL"), ytick = 10){
inflation <- prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop == CPname,
geo %in% geos) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
add_flag_color("Geo") |>
filter(date >= as.Date(paste0(start, "-01-01"))) |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
ungroup() |>
mutate(variable = "Price index")
cons <- nama_10_co3_p3 |>
filter(unit == "PD15_EUR",
geo %in% geos,
coicop == CPname2) |>
left_join(geo, by = "geo") |>
year_to_date() |>
filter(date >= as.Date(paste0(start, "-01-01"))) |>
add_flag_color("Geo") |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
ungroup() |>
mutate(variable = "Consumption Deflator")
cons |>
bind_rows(inflation) |>
ggplot() + geom_line(aes(x = date, y = values, color = color, linetype = variable)) +
theme_minimal() +
scale_color_identity() + xlab("") + ylab(CPname) +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = legend.position,
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 1000, ytick))
}CP00
All
Code
compare_coicop2("CP00", "TOTAL", legend.position = c(0.2, 0.8))
DE, FR
Code
compare_coicop2("CP00", "TOTAL", geos = c("DE", "FR"), legend.position = c(0.2, 0.8))
CP09
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP09"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP09") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
CP08 - Communications
Annual Inflation
Code
inflation_CP08 <- prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP08"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
add_flag_color("Geo") |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
ungroup() |>
mutate(variable = "Price index")
inflation_CP08 |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP08") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
Annual Consumption Deflator Inflation
Code
cons_CP08 <- nama_10_co3_p3 |>
filter(unit == "PD15_EUR",
geo %in% c("FR", "NL", "IT", "DE", "ES"),
coicop == "CP08") |>
left_join(geo, by = "geo") |>
year_to_date() |>
filter(date >= as.Date("1996-01-01")) |>
add_flag_color("Geo") |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
ungroup() |>
mutate(variable = "Consumption Deflator")
cons_CP08 |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_flags +
scale_color_identity() + xlab("") + ylab("Communications (08)") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10))
Bind
Code
compare_coicop("CP08")
CP081 - Postal services
Bind
Code
compare_coicop("CP081", legend.position = c(0.2, 0.8))
CP082_083
CP0820
Bind
Code
compare_coicop2("CP0820", "CP082", legend.position = c(0.2, 0.8))
CP0830
Bind
Code
compare_coicop2("CP0830", "CP083", legend.position = c(0.2, 0.2))
Annual Consumption Deflator Inflation
Code
cons_CP083 <- nama_10_co3_p3 |>
filter(unit == "PD15_EUR",
geo %in% c("FR", "NL", "IT", "DE", "ES"),
coicop == "CP083") |>
left_join(geo, by = "geo") |>
year_to_date() |>
filter(date >= as.Date("1996-01-01")) |>
add_flag_color("Geo") |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
ungroup() |>
mutate(variable = "Consumption Deflator")
cons_CP083 |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + add_flags +
scale_color_identity() + xlab("") + ylab("Communications (083)") +
scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_log10(breaks = seq(10, 300, 10))
CP071
Bind
Code
compare_coicop("CP071", legend.position = c(0.2, 0.8))
CP041
Bind
Code
compare_coicop("CP041", legend.position = c(0.2, 0.8))
1999-
Code
compare_coicop("CP041", legend.position = c(0.2, 0.8), start = 1999)
2000-
Code
compare_coicop("CP041", legend.position = c(0.2, 0.8), start = 2000)
CP01
Bind
Code
compare_coicop("CP01", legend.position = c(0.2, 0.8))
CP02
Bind
Code
compare_coicop("CP02", legend.position = c(0.2, 0.8))
CP022
Bind
Code
compare_coicop("CP022", legend.position = c(0.2, 0.8), ytick = 50)
CP03
Bind
Code
compare_coicop("CP03", legend.position = c(0.2, 0.8))
CP04
Bind
Code
compare_coicop("CP04", legend.position = c(0.2, 0.8))
CP05
Bind
Code
compare_coicop("CP05", legend.position = c(0.2, 0.8))
CP06
Bind
Code
compare_coicop("CP06", legend.position = c(0.2, 0.8))
CP07
Bind
Code
compare_coicop("CP07", legend.position = c(0.2, 0.8))
CP09
Bind
Code
compare_coicop("CP09")
CP091
Bind
Code
compare_coicop("CP091")
CP10
Bind
Code
compare_coicop("CP10", legend.position = c(0.2, 0.8))
CP11
Bind
Code
compare_coicop("CP11", legend.position = c(0.2, 0.8))
CP12
Bind
Code
compare_coicop("CP12", legend.position = c(0.2, 0.8))
CP082_083 - Telephone and telefax equipment
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP082_083"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP082_083") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
CP0820 - Telephone and telefax equipment
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP0820"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP0820 - Telephone and telefax equipment") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP082_083"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP082_083") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
CP091
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP091"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP091") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
CP071 - Cars
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP071"),
geo %in% c("DE", "FR", "IT", "ES", "NL")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP071 - Cars") +
scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
CP03 - Clothing
2017-
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP03"),
geo %in% c("DE", "FR", "IT", "ES", "EA20")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
filter(date >= as.Date("2017-01-01")) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP03 - Clothing and footwear") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 1), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
CP08202 - Mobile Telephone equipment
2017-
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP08202"),
geo %in% c("DE", "FR", "IT", "ES", "EA20")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
arrange(time) |>
year_to_date() |>
group_by(Geo) |>
arrange(date) |>
filter(date >= as.Date("2017-01-01")) |>
mutate(values = 100*values/values[1]) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("CP08202 - Mobile Telephone equipment") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = c(seq(0, 200, 10), 2, 3, 5, 15, 8, 4)) +
scale_color_identity() + add_flags +
theme(legend.position = "none")
Greece, Europe, France, Spain, Italy, Germany
2011-2013 -
HICP
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop == "CP00",
geo %in% c("EL", "FR", "ES", "IT", "DE")) |>
year_to_date() |>
group_by(geo) |>
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) |>
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) |>
left_join(geo, by = "geo") |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_color_identity() + add_flags +
scale_y_log10(breaks = seq(0, 200, 2)) +
theme(legend.position = "none",
legend.title = element_blank())
Rents
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop == "CP041",
geo %in% c("EL", "FR", "ES", "IT", "DE")) |>
year_to_date() |>
group_by(geo) |>
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) |>
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) |>
left_join(geo, by = "geo") |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("100 = Janv. 2011") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_color_identity() + add_flags +
scale_y_log10(breaks = seq(0, 200, 2)) +
theme(legend.position = "none",
legend.title = element_blank())
Real Rents
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP041", "CP00"),
geo %in% c("EL", "FR", "ES", "IT", "DE")) |>
left_join(geo, by = "geo") |>
select(geo, Geo, coicop, time, values) |>
spread(coicop, values) |>
mutate(values = 100*CP041/CP00) |>
year_to_date() |>
group_by(geo) |>
mutate(values = 100*values/values[date == as.Date("2011-01-01")]) |>
filter(date >= as.Date("2009-01-01"),
date <= as.Date("2016-01-01")) |>
mutate(Geo = ifelse(geo == "EA", "Europe", Geo),
Geo = ifelse(geo == "DE", "Germany", Geo)) |>
add_flag_color("Geo") |>
ggplot() + geom_line(aes(x = date, y = values, color = color)) +
theme_minimal() + xlab("") + ylab("Real Rents (100 = Janv. 2011)") +
scale_x_date(breaks = seq(1960, 2100, 1) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_color_identity() + add_flags +
scale_y_log10(breaks = seq(0, 200, 2)) +
theme(legend.position = "none",
legend.title = element_blank())
Europe - Real Rents
Value
Code
prc_hicp_aind |>
filter(unit == "INX_A_AVG",
coicop %in% c("CP041", "CP00"),
geo %in% c("EA")) |>
left_join(tibble(geo = c("EA", "EA18", "EA19"),
Geo = c("Euro Area (time-dep geography)")),
by = "geo") |>
select(geo, Geo, coicop, time, values) |>
spread(coicop, values) |>
mutate(values = 100*CP041/CP00) |>
year_to_date() |>
ggplot() + geom_line(aes(x = date, y = values)) +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1960, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = seq(0, 200, 1)) +
scale_color_manual(values = viridis(5)[1:4]) +
theme(legend.position = c(0.5, 0.85),
legend.title = element_blank())





