Complete energy balances

Data - Eurostat

Info

Last observation: Annual: 2024 (N = 1,156,881)

First observation: Annual: 1990 (N = 1,066,377)

Last data update: 23 jul 2026, 22:51. Last compile: 24 jul 2026, 03:08

Structure

Final Energy Consumption

Major Economies

Code
nrg_bal_c %>%
  filter(nrg_bal == "FC_E",
         siec == "TOTAL",
         unit == "KTOE",
         geo %in% c("FR", "DE", "IT", "ES")) %>%
  year_to_date %>%
  mutate(values = values/1000) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal() + scale_color_identity() + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Final energy consumption (Mtoe)")

France: By Sector

Code
nrg_bal_c %>%
  filter(nrg_bal %in% c("FC_IND_E", "FC_TRA_E", "FC_OTH_HH_E"),
         siec == "TOTAL",
         unit == "KTOE",
         geo == "FR") %>%
  year_to_date %>%
  mutate(values = values/1000) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Nrg_bal)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Final energy consumption (Mtoe)")

unit

Compare Shares: Same

Code
nrg_bal_c %>%
  filter(time == "2019",
         nrg_bal == "FC_OTH_HH_E",
         geo == "FR") %>%
  select(-geo, -time, -nrg_bal, -freq, -Freq, -Unit) %>%

  spread(unit, values) %>%
  arrange(-GWH) %>%
  mutate(across(where(is.numeric), ~ ./.[siec == "TOTAL"])) %>%
  print_table_conditional()

Share of fuels in the final energy consumption in the residential sector, 2019 (%)

Eurostat website

Code
include_graphics("https://ec.europa.eu/eurostat/statistics-explained/images/a/ae/Share_of_fuels_in_the_final_energy_consumption_in_the_residential_sector%2C_2019_%28%25%29_T1.png")

Interactive

Code
nrg_bal_c %>%
  filter(time == "2020",
         nrg_bal == "FC_OTH_HH_E",
         siec %in% c("E7000", "G3000", "FE", "RA000", "H8000", "TOTAL"),
         unit == "GWH") %>%
  select(-time, -nrg_bal, -unit) %>%
  
  group_by(geo) %>%
  mutate(values = round(100*values/values[siec == "TOTAL"], 1)) %>%
  filter(siec != "TOTAL") %>%
  select(-siec) %>%
  spread(Siec, values) %>%
  
  ungroup %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  select(-geo) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, Geo, `Natural gas`, everything()) %>%
  arrange(-`Natural gas`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

pdf

Code
i_g("bib/eurostat/nrg_bal_c_ISGU_1.png")