Methane (CH4) emissions (total) excluding LULUCF (% change from 1990)

Source: worldbank.org, 03.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Aruba Aruba 49.4 +2.67% 80
Afghanistan Afghanistan 115 +3.88% 38
Angola Angola 88.2 -2.72% 55
Albania Albania -43.4 +7.48% 188
United Arab Emirates United Arab Emirates 74.6 -2.5% 61
Argentina Argentina 0.744 -54.8% 142
Armenia Armenia -21.9 -1.44% 167
American Samoa American Samoa 7.94 0% 130
Antigua & Barbuda Antigua & Barbuda -23.5 +2.37% 171
Australia Australia -1.23 -64.9% 148
Austria Austria -33.4 -1.25% 181
Azerbaijan Azerbaijan 63.3 +1.04% 72
Burundi Burundi 118 +0.798% 37
Belgium Belgium -25.8 +0.724% 173
Benin Benin 176 +3.06% 20
Burkina Faso Burkina Faso 150 +3.29% 25
Bangladesh Bangladesh 24.6 +6.9% 107
Bulgaria Bulgaria -48.7 +7.39% 193
Bahrain Bahrain 71.1 -0.453% 64
Bahamas Bahamas 67.4 +2.68% 66
Bosnia & Herzegovina Bosnia & Herzegovina -15 +13% 160
Belarus Belarus -16 -2.45% 162
Belize Belize 95 +2.04% 47
Bermuda Bermuda -4.39 +11.1% 154
Bolivia Bolivia 22.1 +8.07% 111
Brazil Brazil 76.7 -0.168% 58
Barbados Barbados -22.7 -0.412% 169
Brunei Brunei 13.2 -17.8% 123
Bhutan Bhutan 18.1 -11.7% 116
Botswana Botswana -26.8 -1.04% 174
Central African Republic Central African Republic 125 +2.7% 31
Canada Canada 28.3 +6.39% 102
Switzerland Switzerland -16.3 -6.13% 163
Chile Chile -1.45 -23.5% 149
China China 52.5 +4.02% 79
Côte d’Ivoire Côte d’Ivoire 113 +2.19% 39
Cameroon Cameroon -1 -571% 145
Congo - Kinshasa Congo - Kinshasa 163 +2.52% 22
Congo - Brazzaville Congo - Brazzaville 90.6 +6.83% 52
Colombia Colombia 42.8 +3.91% 86
Comoros Comoros 53.1 +2.83% 78
Cape Verde Cape Verde 34 +5.45% 93
Costa Rica Costa Rica 9.07 +3% 128
Cuba Cuba -22.7 +1.34% 170
Cayman Islands Cayman Islands 119 +2.22% 35
Cyprus Cyprus 371 +14.2% 5
Czechia Czechia -38.1 +2.18% 186
Germany Germany -59.5 +1.71% 198
Djibouti Djibouti 66.6 +2.24% 67
Dominica Dominica 14.3 +2.86% 118
Denmark Denmark 4.27 +37.5% 136
Dominican Republic Dominican Republic 63.9 +2.31% 71
Algeria Algeria 13.8 -3.38% 119
Ecuador Ecuador 30 -4.26% 99
Egypt Egypt 13.3 -5.99% 122
Eritrea Eritrea 31.8 +2.49% 95
Spain Spain 16.5 -3.16% 117
Estonia Estonia -51.2 +1.32% 195
Ethiopia Ethiopia 149 +3.33% 26
Finland Finland -47 +13.2% 192
Fiji Fiji -14.9 -3.59% 159
France France -25.1 +3.89% 172
Faroe Islands Faroe Islands 4.95 +5.26% 135
Micronesia (Federated States of) Micronesia (Federated States of) 743 +0.926% 2
Gabon Gabon 6.93 -190% 131
United Kingdom United Kingdom -65.6 +0.762% 201
Georgia Georgia -28 -1.45% 176
Ghana Ghana 246 +4.43% 12
Gibraltar Gibraltar 27.2 +6.25% 104
Guinea Guinea 251 +4.39% 11
Gambia Gambia 64.6 -1.36% 69
Guinea-Bissau Guinea-Bissau 82.1 +1.77% 57
Equatorial Guinea Equatorial Guinea 2,943 -22.5% 1
Greece Greece -20.6 +12.3% 166
Grenada Grenada 36.2 +4.03% 91
Greenland Greenland 0.821 0% 141
Guatemala Guatemala 141 +1.79% 28
Guam Guam -0.82 -50% 144
Guyana Guyana 183 -5.36% 18
Hong Kong SAR China Hong Kong SAR China 46.9 +3.66% 82
Honduras Honduras 73.2 +2.44% 63
Croatia Croatia -19.9 +12% 165
Haiti Haiti 62.4 +0.0148% 74
Hungary Hungary -37.9 -1.15% 185
Indonesia Indonesia 136 +12% 29
India India 30.2 +6.36% 97
Ireland Ireland 0.461 -70.6% 143
Iran Iran 64.2 +32.5% 70
Iraq Iraq 62.8 -7.9% 73
Iceland Iceland 1.37 -70.4% 140
Israel Israel 111 +3.3% 42
Italy Italy -32.2 +4.8% 180
Jamaica Jamaica -28.1 +0.243% 177
Jordan Jordan 263 +2.87% 10
Japan Japan -34 +4.23% 182
Kazakhstan Kazakhstan -22.7 +1.32% 168
Kenya Kenya 185 +6.36% 17
Kyrgyzstan Kyrgyzstan 24.4 +6% 109
Cambodia Cambodia 59 +5.89% 76
Kiribati Kiribati 98.5 +3.05% 46
St. Kitts & Nevis St. Kitts & Nevis 43.3 +18.7% 85
South Korea South Korea 8.21 -20% 129
Kuwait Kuwait 123 -3.58% 33
Laos Laos 94 +3.04% 49
Lebanon Lebanon 179 +2.23% 19
Liberia Liberia 123 +0.592% 32
Libya Libya -46.7 -8.72% 191
St. Lucia St. Lucia -8.6 -5% 155
Sri Lanka Sri Lanka 4.16 +40.9% 137
Lesotho Lesotho -10.8 +52.1% 157
Lithuania Lithuania -62.1 +1.23% 200
Luxembourg Luxembourg -15.8 +3.58% 161
Latvia Latvia -55.1 +0.0136% 196
Macao SAR China Macao SAR China 49.2 +4.19% 81
Morocco Morocco 88.3 +3.42% 54
Moldova Moldova -46.2 -1.47% 190
Madagascar Madagascar 29.3 -3.57% 100
Maldives Maldives 357 +3.94% 7
Mexico Mexico 41.3 +4.29% 88
Marshall Islands Marshall Islands 13 0% 124
North Macedonia North Macedonia -37.7 +4.14% 184
Mali Mali 213 +3.21% 14
Malta Malta 38.7 -0.674% 89
Myanmar (Burma) Myanmar (Burma) 24.3 -20.8% 110
Mongolia Mongolia 393 +61.4% 4
Northern Mariana Islands Northern Mariana Islands 33.3 0% 94
Mozambique Mozambique 326 +2.22% 8
Mauritania Mauritania 87.2 +3.24% 56
Mauritius Mauritius 9.92 +2.97% 126
Malawi Malawi 157 +6.86% 24
Malaysia Malaysia 42.7 +5.35% 87
Namibia Namibia 60.1 -0.843% 75
New Caledonia New Caledonia -18.4 -0.853% 164
Niger Niger 265 +5.36% 9
Nigeria Nigeria 11 +35.4% 125
Nicaragua Nicaragua 88.6 +0.427% 53
Netherlands Netherlands -49.6 +1.5% 194
Norway Norway 9.55 +4.14% 127
Nepal Nepal 25.4 +1.89% 105
Nauru Nauru 28.6 0% 101
New Zealand New Zealand -1.1 +1,395% 146
Oman Oman 76.5 -0.128% 59
Pakistan Pakistan 135 +9.35% 30
Panama Panama 30 +2.47% 98
Peru Peru 34.6 +2.95% 92
Philippines Philippines 43.3 +0.345% 84
Palau Palau -77.4 +2.37% 203
Papua New Guinea Papua New Guinea 99.3 -1.52% 45
Poland Poland -59.2 +2.52% 197
Puerto Rico Puerto Rico -27.6 +1.39% 175
North Korea North Korea -29.2 +7.28% 178
Portugal Portugal -2.82 -35.4% 153
Paraguay Paraguay 75.6 -0.83% 60
French Polynesia French Polynesia 31.1 +3.21% 96
Qatar Qatar 146 +3.96% 27
Romania Romania -36 +0.24% 183
Russia Russia -2.06 -22.2% 151
Rwanda Rwanda 5.74 +6.36% 133
Saudi Arabia Saudi Arabia 106 -6.02% 43
Sudan Sudan 112 +1.55% 41
Senegal Senegal 105 +3.96% 44
Singapore Singapore 359 +11.1% 6
Solomon Islands Solomon Islands 118 +3.73% 36
Sierra Leone Sierra Leone 70.7 +1.75% 65
El Salvador El Salvador -8.94 -8.43% 156
Somalia Somalia 24.5 +0.815% 108
São Tomé & Príncipe São Tomé & Príncipe 91.4 +3.01% 51
Suriname Suriname 2.42 -37% 138
Slovakia Slovakia -43.5 +1.43% 189
Slovenia Slovenia -38.2 +4.6% 187
Sweden Sweden -31.4 +0.362% 179
Eswatini Eswatini -14.1 -2.01% 158
Seychelles Seychelles 73.5 +4.29% 62
Syria Syria -74.1 -0.577% 202
Turks & Caicos Islands Turks & Caicos Islands 18.6 -38.5% 114
Chad Chad 455 +5.98% 3
Togo Togo 197 +2.61% 15
Thailand Thailand 5.25 -29.2% 134
Tajikistan Tajikistan 92.3 +2.51% 50
Turkmenistan Turkmenistan 94.6 -2.87% 48
Timor-Leste Timor-Leste 158 0% 23
Tonga Tonga 13.6 +2.59% 121
Trinidad & Tobago Trinidad & Tobago 65.1 -1.44% 68
Tunisia Tunisia 25.1 -0.145% 106
Turkey Turkey 186 +2.42% 16
Tuvalu Tuvalu 18.2 0% 115
Tanzania Tanzania 170 +4.83% 21
Uganda Uganda 231 +0.941% 13
Ukraine Ukraine -61.2 -0.761% 199
Uruguay Uruguay 27.3 -10.8% 103
United States United States -2.3 -42.8% 152
Uzbekistan Uzbekistan 121 -2% 34
St. Vincent & Grenadines St. Vincent & Grenadines 19.4 +2.6% 112
Venezuela Venezuela 1.62 -343% 139
British Virgin Islands British Virgin Islands 43.4 +2.86% 83
U.S. Virgin Islands U.S. Virgin Islands -1.51 0% 150
Vietnam Vietnam 54.9 +0.996% 77
Vanuatu Vanuatu 6.58 +11.6% 132
Samoa Samoa -1.21 -163% 147
Yemen Yemen 36.4 -27% 90
South Africa South Africa 19 -0.549% 113
Zambia Zambia 112 +3.86% 40
Zimbabwe Zimbabwe 13.7 +24.2% 120

                    
# 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.CH4.ZG.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.CH4.ZG.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))