Carbon dioxide (CO2) emissions from Industrial Combustion (Energy) (Mt CO2e)

Source: worldbank.org, 03.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Aruba Aruba 0.0356 +4.71% 176
Afghanistan Afghanistan 3.31 +7.66% 76
Angola Angola 1.51 -5.77% 97
Albania Albania 0.849 -3.13% 116
United Arab Emirates United Arab Emirates 72.2 +1.32% 12
Argentina Argentina 20.7 -4.25% 32
Armenia Armenia 0.541 +7.81% 131
Antigua & Barbuda Antigua & Barbuda 0.0217 +4.83% 182
Australia Australia 40 -1.23% 20
Austria Austria 9.56 -8.05% 48
Azerbaijan Azerbaijan 2.46 +9.86% 80
Burundi Burundi 0.102 0% 161
Belgium Belgium 14.8 -6.99% 39
Benin Benin 0.487 -4.49% 134
Burkina Faso Burkina Faso 0.689 -3.11% 121
Bangladesh Bangladesh 26.6 +19.6% 28
Bulgaria Bulgaria 4.06 -9.12% 67
Bahrain Bahrain 2.29 +4.07% 86
Bahamas Bahamas 0.113 +4.92% 159
Bosnia & Herzegovina Bosnia & Herzegovina 1.6 -2.83% 95
Belarus Belarus 4.63 -2.09% 63
Belize Belize 0.0184 +6.36% 185
Bermuda Bermuda 0.0236 +4.89% 181
Bolivia Bolivia 2.44 +9.74% 81
Brazil Brazil 88 -1.24% 10
Barbados Barbados 0.0474 +4.87% 173
Brunei Brunei 0.421 +2.71% 136
Bhutan Bhutan 0.396 +7.2% 137
Botswana Botswana 0.666 +2.53% 122
Central African Republic Central African Republic 0.0519 +4.43% 170
Canada Canada 67.8 -1.68% 14
Switzerland Switzerland 4.28 -2.84% 65
Chile Chile 14.4 -0.493% 40
China China 2,874 +5.45% 1
Côte d’Ivoire Côte d’Ivoire 1.42 -3.1% 100
Cameroon Cameroon 0.32 +4.48% 141
Congo - Kinshasa Congo - Kinshasa 0.0053 +3.92% 191
Congo - Brazzaville Congo - Brazzaville 0.125 +4.5% 157
Colombia Colombia 21.8 +30.4% 31
Comoros Comoros 0.0456 0% 174
Cape Verde Cape Verde 0.145 -3.07% 154
Costa Rica Costa Rica 1.32 +6.71% 102
Cuba Cuba 5.3 +5.91% 60
Cayman Islands Cayman Islands 0.0241 +5.24% 180
Cyprus Cyprus 0.555 +1.76% 129
Czechia Czechia 10.5 -9.43% 47
Germany Germany 78.3 -8.61% 11
Djibouti Djibouti 0.0875 0% 164
Dominica Dominica 0.0053 +6% 191
Denmark Denmark 3.63 -4.41% 72
Dominican Republic Dominican Republic 4.8 +5.24% 62
Algeria Algeria 15.4 -6.62% 38
Ecuador Ecuador 3.6 +6.41% 73
Egypt Egypt 31.9 +2.81% 25
Eritrea Eritrea 0.021 0% 183
Spain Spain 24.5 -9.3% 30
Estonia Estonia 0.293 -6.77% 144
Ethiopia Ethiopia 4.17 +3% 66
Finland Finland 5.6 -9.44% 58
Fiji Fiji 0.264 +2.73% 148
France France 38.1 -11.6% 21
Gabon Gabon 0.527 +4.31% 132
United Kingdom United Kingdom 29.4 -8.37% 27
Georgia Georgia 1.72 -1.51% 93
Ghana Ghana 2.49 -3.1% 79
Guinea Guinea 0.443 -3.1% 135
Gambia Gambia 0.0869 -3.12% 165
Guinea-Bissau Guinea-Bissau 0.0495 -2.94% 172
Equatorial Guinea Equatorial Guinea 0.932 -11.3% 112
Greece Greece 4.03 -7.52% 68
Grenada Grenada 0.0096 +5.49% 187
Greenland Greenland 0.0453 +1.57% 175
Guatemala Guatemala 2.89 +6.28% 77
Guyana Guyana 0.638 +0.933% 124
Hong Kong SAR China Hong Kong SAR China 2.15 +23.3% 87
Honduras Honduras 0.907 +6.28% 113
Croatia Croatia 2.37 0% 84
Haiti Haiti 0.621 +4.86% 125
Hungary Hungary 5.46 -8.15% 59
Indonesia Indonesia 141 -0.392% 6
India India 619 +8.84% 2
Ireland Ireland 3.49 -6.85% 74
Iran Iran 129 +2.05% 7
Iraq Iraq 17.9 +3.63% 36
Iceland Iceland 0.0658 -6.13% 167
Israel Israel 3.66 +2.08% 71
Italy Italy 34.2 -9.79% 23
Jamaica Jamaica 1.17 +6.5% 107
Jordan Jordan 2.77 +48.9% 78
Japan Japan 155 -6.16% 5
Kazakhstan Kazakhstan 29.4 +0.282% 26
Kenya Kenya 3.88 +9.22% 69
Kyrgyzstan Kyrgyzstan 0.526 +3.04% 133
Cambodia Cambodia 1.13 +5% 108
Kiribati Kiribati 0.0118 +2.61% 186
St. Kitts & Nevis St. Kitts & Nevis 0.008 +5.26% 188
South Korea South Korea 62.3 -3.41% 15
Kuwait Kuwait 16.8 +3.08% 37
Laos Laos 1.04 +7.63% 110
Lebanon Lebanon 1.25 +58.7% 105
Liberia Liberia 0.205 -3.08% 150
Libya Libya 2.08 +3.24% 88
St. Lucia St. Lucia 0.0199 +4.74% 184
Sri Lanka Sri Lanka 1.07 +5.72% 109
Lesotho Lesotho 0.127 +3.1% 156
Lithuania Lithuania 0.885 -16.3% 114
Luxembourg Luxembourg 0.764 -6.51% 118
Latvia Latvia 0.555 -2.92% 130
Macao SAR China Macao SAR China 0.367 +2.52% 138
Morocco Morocco 7.05 +5.88% 53
Moldova Moldova 0.863 +6.61% 115
Madagascar Madagascar 0.588 +8.03% 128
Maldives Maldives 0.349 +2.71% 139
Mexico Mexico 43 +4.84% 19
North Macedonia North Macedonia 1.3 +3.94% 104
Mali Mali 0.84 -3.1% 117
Malta Malta 0.0586 -1.84% 168
Myanmar (Burma) Myanmar (Burma) 7.64 +3.32% 50
Mongolia Mongolia 2.42 +4.16% 82
Mozambique Mozambique 0.726 +0.693% 119
Mauritania Mauritania 0.614 -3.09% 126
Mauritius Mauritius 0.334 +2.36% 140
Malawi Malawi 3.46 +10.9% 75
Malaysia Malaysia 36 -2.43% 22
Namibia Namibia 0.31 +3.09% 142
New Caledonia New Caledonia 2.32 +7.61% 85
Niger Niger 0.286 -3.08% 145
Nigeria Nigeria 13.1 -4.12% 45
Nicaragua Nicaragua 0.601 +6.3% 127
Netherlands Netherlands 19.2 -4.94% 33
Norway Norway 6.42 +1.05% 55
Nepal Nepal 6.97 +7.07% 54
New Zealand New Zealand 5.63 +0.631% 57
Oman Oman 14.2 +3.37% 43
Pakistan Pakistan 53.8 -4.66% 16
Panama Panama 1.56 +6.28% 96
Peru Peru 7.52 +1.67% 51
Philippines Philippines 14.2 +8.08% 42
Palau Palau 0.0962 +2.67% 162
Papua New Guinea Papua New Guinea 0.693 +2.52% 120
Poland Poland 25.8 -4.78% 29
Puerto Rico Puerto Rico 0.0958 +4.81% 163
North Korea North Korea 31.9 +8.79% 24
Portugal Portugal 4.55 -12.2% 64
Paraguay Paraguay 0.209 +1.01% 149
French Polynesia French Polynesia 0.153 +2.68% 153
Qatar Qatar 19.1 +8.77% 35
Romania Romania 11.9 -5.14% 46
Russia Russia 315 +1.22% 4
Rwanda Rwanda 0.278 +3.3% 146
Saudi Arabia Saudi Arabia 90.3 +0.838% 9
Sudan Sudan 1.51 +0.0332% 98
Senegal Senegal 1.31 -5.37% 103
Singapore Singapore 14.2 +6.02% 41
Solomon Islands Solomon Islands 0.0508 +2.63% 171
Sierra Leone Sierra Leone 0.133 -3.13% 155
El Salvador El Salvador 1.88 +6.29% 89
Somalia Somalia 0.121 0% 158
São Tomé & Príncipe São Tomé & Príncipe 0.031 +4.73% 178
Suriname Suriname 0.106 +0.957% 160
Slovakia Slovakia 8 -3.2% 49
Slovenia Slovenia 1.63 -3.75% 94
Sweden Sweden 6.34 -2.89% 56
Eswatini Eswatini 0.305 +2.31% 143
Seychelles Seychelles 0.179 +2.76% 151
Syria Syria 2.38 +0.638% 83
Turks & Caicos Islands Turks & Caicos Islands 0.0069 +4.55% 189
Chad Chad 0.272 +4.49% 147
Togo Togo 0.166 -3.09% 152
Thailand Thailand 53 -8.38% 17
Tajikistan Tajikistan 1.33 +2.82% 101
Turkmenistan Turkmenistan 0.655 -2.09% 123
Timor-Leste Timor-Leste 0.0811 +2.66% 166
Tonga Tonga 0.0267 +2.69% 179
Trinidad & Tobago Trinidad & Tobago 1.8 -4.7% 91
Tunisia Tunisia 4.99 +3.52% 61
Turkey Turkey 71.4 -3.24% 13
Tanzania Tanzania 3.75 +7.75% 70
Uganda Uganda 1.17 +0.0341% 106
Ukraine Ukraine 19.1 -6.9% 34
Uruguay Uruguay 0.963 +1.29% 111
United States United States 445 -1.53% 3
Uzbekistan Uzbekistan 13.4 -1.18% 44
St. Vincent & Grenadines St. Vincent & Grenadines 0.0065 +4.84% 190
Venezuela Venezuela 7.06 +10.6% 52
British Virgin Islands British Virgin Islands 0.0051 +6.25% 192
Vietnam Vietnam 107 +20.9% 8
Vanuatu Vanuatu 0.0349 +2.65% 177
Samoa Samoa 0.057 +2.7% 169
Yemen Yemen 1.44 +23.1% 99
South Africa South Africa 48 +0.00313% 18
Zambia Zambia 1.85 +3.15% 90
Zimbabwe Zimbabwe 1.78 +8.19% 92

                    
# Install missing packages
import sys
import subprocess

def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Required packages
for package in ['wbdata', 'country_converter']:
try:
__import__(package)
except ImportError:
install(package)

# Import libraries
import wbdata
import country_converter as coco
from datetime import datetime

# Define World Bank indicator code
dataset_code = 'EN.GHG.CO2.IC.MT.CE.AR5'

# Download data from World Bank API
data = wbdata.get_dataframe({dataset_code: 'value'},
date=(datetime(1960, 1, 1), datetime.today()),
parse_dates=True,
keep_levels=True).reset_index()

# Extract year
data['year'] = data['date'].dt.year

# Convert country names to ISO codes using country_converter
cc = coco.CountryConverter()
data['iso2c'] = cc.convert(names=data['country'], to='ISO2', not_found=None)
data['iso3c'] = cc.convert(names=data['country'], to='ISO3', not_found=None)

# Filter out rows where ISO codes could not be matched — likely not real countries
data = data[data['iso2c'].notna() & data['iso3c'].notna()]

# Sort for calculation
data = data.sort_values(['iso3c', 'year'])

# Calculate YoY absolute and percent change
data['value_change'] = data.groupby('iso3c')['value'].diff()
data['value_change_percent'] = data.groupby('iso3c')['value'].pct_change() * 100

# Calculate ranks (higher GDP per capita = better rank)
data['rank'] = data.groupby('year')['value'].rank(ascending=False, method='dense')

# Calculate rank change from previous year
data['rank_change'] = data.groupby('iso3c')['rank'].diff()

# Select desired columns
final_df = data[['country', 'iso2c', 'iso3c', 'year', 'value',
'value_change', 'value_change_percent', 'rank', 'rank_change']].copy()

# Optional: Add labels as metadata (could be useful for export or UI)
column_labels = {
'country': 'Country name',
'iso2c': 'ISO 2-letter country code',
'iso3c': 'ISO 3-letter country code',
'year': 'Year',
'value': 'GDP per capita (current US$)',
'value_change': 'Year-over-Year change in value',
'value_change_percent': 'Year-over-Year percent change in value',
'rank': 'Country rank by GDP per capita (higher = richer)',
'rank_change': 'Change in rank from previous year'
}

# Display first few rows
print(final_df.head(10))

# Optional: Save to CSV
#final_df.to_csv("gdp_per_capita_cleaned.csv", index=False)
                    
                
                    
# Check and install required packages
required_packages <- c("WDI", "countrycode", "dplyr")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

# Load the necessary libraries
library(WDI)
library(dplyr)
library(countrycode)

# Define the dataset code (World Bank indicator code)
dataset_code <- 'EN.GHG.CO2.IC.MT.CE.AR5'

# Download data using WDI package
dat <- WDI(indicator = dataset_code)

# Filter only countries using 'is_country' from countrycode
# This uses iso2c to identify whether the entry is a recognized country
dat <- dat %>%
  filter(countrycode(iso2c, origin = 'iso2c', destination = 'country.name', warn = FALSE) %in%
           countrycode::codelist$country.name.en)

# Ensure dataset is ordered by country and year
dat <- dat %>%
  arrange(iso3c, year)

# Rename the dataset_code column to "value" for easier manipulation
dat <- dat %>%
  rename(value = !!dataset_code)

# Calculate year-over-year (YoY) change and percentage change
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(
    value_change = value - lag(value),                              # Absolute change from previous year
    value_change_percent = 100 * (value - lag(value)) / lag(value) # Percent change from previous year
  ) %>%
  ungroup()

# Calculate rank by year (higher value => higher rank)
dat <- dat %>%
  group_by(year) %>%
  mutate(rank = dense_rank(desc(value))) %>% # Rank countries by descending value
  ungroup()

# Calculate rank change (positive = moved up, negative = moved down)
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(rank_change = rank - lag(rank)) %>% # Change in rank compared to previous year
  ungroup()

# Select and reorder final columns
final_data <- dat %>%
  select(
    country,
    iso2c,
    iso3c,
    year,
    value,
    value_change,
    value_change_percent,
    rank,
    rank_change
  )

# Add labels (variable descriptions)
attr(final_data$country, "label") <- "Country name"
attr(final_data$iso2c, "label") <- "ISO 2-letter country code"
attr(final_data$iso3c, "label") <- "ISO 3-letter country code"
attr(final_data$year, "label") <- "Year"
attr(final_data$value, "label") <- "GDP per capita (current US$)"
attr(final_data$value_change, "label") <- "Year-over-Year change in value"
attr(final_data$value_change_percent, "label") <- "Year-over-Year percent change in value"
attr(final_data$rank, "label") <- "Country rank by GDP per capita (higher = richer)"
attr(final_data$rank_change, "label") <- "Change in rank from previous year"

# Print the first few rows of the final dataset
print(head(final_data, 10))