Carbon dioxide (CO2) emissions from Industrial Processes (Mt CO2e)

Source: worldbank.org, 03.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Aruba Aruba 0.0014 0% 173
Afghanistan Afghanistan 0.0879 -0.114% 153
Angola Angola 1.87 -0.743% 86
Albania Albania 1.09 +0.0183% 105
United Arab Emirates United Arab Emirates 19.3 +1.04% 22
Argentina Argentina 11 -0.342% 37
Armenia Armenia 0.392 +0.359% 130
American Samoa American Samoa 0.0001 0% 183
Antigua & Barbuda Antigua & Barbuda 0.0009 0% 177
Australia Australia 13.7 -1.7% 32
Austria Austria 4.75 -2.66% 52
Azerbaijan Azerbaijan 1.69 +0.94% 90
Burundi Burundi 0.136 +2.96% 147
Belgium Belgium 8.67 -7.44% 42
Benin Benin 0.94 +0.0319% 107
Burkina Faso Burkina Faso 1.24 +0.153% 101
Bangladesh Bangladesh 14.3 +0.466% 30
Bulgaria Bulgaria 4.49 -2.13% 54
Bahrain Bahrain 3.84 +0.266% 61
Bahamas Bahamas 0.0049 +4.26% 164
Bosnia & Herzegovina Bosnia & Herzegovina 1.45 -2.37% 95
Belarus Belarus 4.39 -0.0797% 55
Belize Belize 0.0013 0% 174
Bermuda Bermuda 0.0009 0% 177
Bolivia Bolivia 1.41 +0.0426% 98
Brazil Brazil 45.8 -1.84% 13
Barbados Barbados 0.0922 -0.108% 152
Brunei Brunei 0.109 -0.0916% 151
Bhutan Bhutan 0.753 -0.0133% 111
Botswana Botswana 0.348 +0.115% 132
Central African Republic Central African Republic 0.0106 +1.92% 161
Canada Canada 29.4 -0.996% 17
Switzerland Switzerland 2.55 -1.34% 75
Chile Chile 3.17 -0.829% 67
China China 1,454 -1.24% 1
Côte d’Ivoire Côte d’Ivoire 2.29 -0.314% 78
Cameroon Cameroon 2.03 +0.0936% 81
Congo - Kinshasa Congo - Kinshasa 0.8 +0.579% 109
Congo - Brazzaville Congo - Brazzaville 0.322 +0.0621% 134
Colombia Colombia 6.18 +0.941% 46
Comoros Comoros 0.0023 +4.55% 170
Cape Verde Cape Verde 0.0032 +3.23% 168
Costa Rica Costa Rica 0.425 +0.402% 126
Cuba Cuba 0.526 +0.574% 123
Cayman Islands Cayman Islands 0.001 0% 176
Cyprus Cyprus 1.14 +0.035% 103
Czechia Czechia 5.2 -1.53% 51
Germany Germany 39.1 -1.45% 14
Djibouti Djibouti 0.144 0% 146
Dominica Dominica 0.0014 0% 173
Denmark Denmark 1.58 -0.649% 92
Dominican Republic Dominican Republic 2.48 +0.0363% 76
Algeria Algeria 16.3 -0.294% 25
Ecuador Ecuador 2.15 -0.121% 80
Egypt Egypt 36.7 +5.48% 15
Eritrea Eritrea 0.082 +0.244% 154
Spain Spain 19 -2.45% 23
Estonia Estonia 0.171 +1.01% 143
Ethiopia Ethiopia 3.98 +0.139% 58
Finland Finland 2.66 -2.27% 74
Fiji Fiji 0.0453 -1.09% 155
France France 19.4 -2.65% 21
Faroe Islands Faroe Islands 0.0001 0% 183
Micronesia (Federated States of) Micronesia (Federated States of) 0 184
Gabon Gabon 0.212 +0.0944% 141
United Kingdom United Kingdom 10.8 -4.12% 39
Georgia Georgia 2 +0.065% 82
Ghana Ghana 2.34 +0.128% 77
Gibraltar Gibraltar 0.0001 0% 183
Guinea Guinea 0.653 +0.138% 116
Gambia Gambia 0.0053 +3.92% 163
Guinea-Bissau Guinea-Bissau 0.0044 +2.33% 166
Equatorial Guinea Equatorial Guinea 0.702 -13.2% 113
Greece Greece 4.63 -1.37% 53
Grenada Grenada 0.0005 0% 179
Greenland Greenland 0.0001 0% 183
Guatemala Guatemala 1.43 +0.274% 96
Guam Guam 0.0004 0% 180
Guyana Guyana 0.155 0% 145
Hong Kong SAR China Hong Kong SAR China 0.628 +0.175% 119
Honduras Honduras 0.638 +0.0157% 118
Croatia Croatia 1.95 +0.432% 84
Haiti Haiti 0.3 -2.05% 136
Hungary Hungary 3.03 -5.13% 68
Indonesia Indonesia 47.9 -1.42% 12
India India 238 +6.82% 2
Ireland Ireland 1.32 -0.777% 99
Iran Iran 60.4 +5.47% 7
Iraq Iraq 13.3 +0.064% 34
Iceland Iceland 1.6 -4.35% 91
Israel Israel 3.84 -0.459% 60
Italy Italy 19.6 -2.65% 20
Jamaica Jamaica 0.453 0% 125
Jordan Jordan 1.71 -0.117% 89
Japan Japan 66.9 -3.97% 6
Kazakhstan Kazakhstan 14.5 -1.83% 29
Kenya Kenya 3.86 -0.168% 59
Kyrgyzstan Kyrgyzstan 1.11 +0.0271% 104
Cambodia Cambodia 3.61 +0.0194% 63
Kiribati Kiribati 0.0003 -25% 181
St. Kitts & Nevis St. Kitts & Nevis 0.0004 0% 180
South Korea South Korea 58.5 -1.45% 8
Kuwait Kuwait 6.78 +2.62% 45
Laos Laos 5.9 0% 47
Lebanon Lebanon 0.843 +0.095% 108
Liberia Liberia 0.222 +0.18% 140
Libya Libya 2.77 +0.518% 71
St. Lucia St. Lucia 0.0011 +10% 175
Sri Lanka Sri Lanka 1.43 +0.007% 97
Lesotho Lesotho 0.0057 +1.79% 162
Lithuania Lithuania 1.86 +1.25% 87
Luxembourg Luxembourg 0.455 +0.331% 124
Latvia Latvia 0.592 -0.337% 120
Macao SAR China Macao SAR China 0.0035 -20.5% 167
Morocco Morocco 5.47 -0.122% 48
Moldova Moldova 0.643 +0.0935% 117
Madagascar Madagascar 0.122 +1.25% 150
Maldives Maldives 0.0048 -9.43% 165
Mexico Mexico 57.5 +0.193% 9
Marshall Islands Marshall Islands 0 184
North Macedonia North Macedonia 0.72 +0.349% 112
Mali Mali 0.694 +0.275% 114
Malta Malta 0.0115 +4.55% 160
Myanmar (Burma) Myanmar (Burma) 3.01 -0.249% 69
Mongolia Mongolia 0.54 +0.0926% 122
Northern Mariana Islands Northern Mariana Islands 0 184
Mozambique Mozambique 2.22 +1.39% 79
Mauritania Mauritania 0.409 +0.294% 128
Mauritius Mauritius 0.0154 0% 159
Malawi Malawi 0.325 +0.371% 133
Malaysia Malaysia 19.7 +0.859% 19
Namibia Namibia 0.395 +0.0253% 129
New Caledonia New Caledonia 0.0348 -2.79% 156
Niger Niger 0.203 +0.796% 142
Nigeria Nigeria 15.6 -0.212% 28
Nicaragua Nicaragua 0.279 -0.215% 138
Netherlands Netherlands 10.8 -1.67% 40
Norway Norway 8.38 -2.46% 43
Nepal Nepal 3.23 +0.0155% 65
Nauru Nauru 0 184
New Zealand New Zealand 3.2 +2.44% 66
Oman Oman 13.8 +0.937% 31
Pakistan Pakistan 25.2 -0.0856% 18
Panama Panama 0.322 +0.0311% 135
Peru Peru 5.46 -0.161% 49
Philippines Philippines 11.8 +0.286% 36
Palau Palau 0.0004 -20% 180
Papua New Guinea Papua New Guinea 0.125 -1.43% 149
Poland Poland 18.2 -1.85% 24
Puerto Rico Puerto Rico 0.127 -0.237% 148
North Korea North Korea 2.71 -0.0111% 72
Portugal Portugal 3.79 -2.95% 62
Paraguay Paraguay 0.571 -0.747% 121
French Polynesia French Polynesia 0.0019 -17.4% 171
Qatar Qatar 15.8 +3.8% 27
Romania Romania 7.54 -2.2% 44
Russia Russia 110 -0.144% 4
Rwanda Rwanda 0.287 +0.174% 137
Saudi Arabia Saudi Arabia 83.3 +1.68% 5
Sudan Sudan 1.04 +0.212% 106
Senegal Senegal 2.96 +0.0304% 70
Singapore Singapore 10.9 +11.7% 38
Solomon Islands Solomon Islands 0.0016 -5.88% 172
Sierra Leone Sierra Leone 0.157 +0.192% 144
El Salvador El Salvador 0.421 -0.095% 127
Somalia Somalia 0.0324 +3.18% 157
São Tomé & Príncipe São Tomé & Príncipe 0.0008 +14.3% 178
Suriname Suriname 0.0202 0% 158
Slovakia Slovakia 4.06 +0.512% 56
Slovenia Slovenia 1.46 -0.483% 93
Sweden Sweden 4.01 -3.06% 57
Eswatini Eswatini 0.0028 +3.7% 169
Seychelles Seychelles 0.0028 +3.7% 169
Syria Syria 1.25 +0.28% 100
Turks & Caicos Islands Turks & Caicos Islands 0.0003 0% 181
Chad Chad 0.25 +0.604% 139
Togo Togo 0.665 +0.015% 115
Thailand Thailand 29.9 +2.03% 16
Tajikistan Tajikistan 1.94 +0.587% 85
Turkmenistan Turkmenistan 1.99 +1.31% 83
Timor-Leste Timor-Leste 0.0032 -3.03% 168
Tonga Tonga 0.0005 0% 179
Trinidad & Tobago Trinidad & Tobago 13 -0.47% 35
Tunisia Tunisia 3.31 +0.0545% 64
Turkey Turkey 53.1 +5.47% 10
Tuvalu Tuvalu 0 184
Tanzania Tanzania 2.69 +0.138% 73
Uganda Uganda 1.85 +0.157% 88
Ukraine Ukraine 13.4 -2.06% 33
Uruguay Uruguay 0.376 -0.0531% 131
United States United States 163 -0.369% 3
Uzbekistan Uzbekistan 10 -0.144% 41
St. Vincent & Grenadines St. Vincent & Grenadines 0.0004 0% 180
Venezuela Venezuela 5.37 +1.95% 50
British Virgin Islands British Virgin Islands 0.0002 0% 182
U.S. Virgin Islands U.S. Virgin Islands 0.0002 0% 182
Vietnam Vietnam 49.3 -7.68% 11
Vanuatu Vanuatu 0.001 0% 176
Samoa Samoa 0.0009 -10% 177
Yemen Yemen 1.19 +0.0922% 102
South Africa South Africa 15.9 -0.261% 26
Zambia Zambia 1.46 -0.458% 94
Zimbabwe Zimbabwe 0.756 -1.02% 110

                    
# 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.IP.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.IP.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))