GDP, PPP (constant 2021 international $)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 278,239,182,846 +4.42% 62
Albania Albania 51,360,027,803 +3.96% 120
Andorra Andorra 5,402,033,635 +3.37% 165
United Arab Emirates United Arab Emirates 745,993,988,413 +3.76% 35
Argentina Argentina 1,213,098,233,452 -1.72% 27
Armenia Armenia 60,908,993,990 +5.9% 108
Antigua & Barbuda Antigua & Barbuda 2,772,069,806 +4.33% 170
Australia Australia 1,634,519,491,772 +1.43% 19
Austria Austria 581,130,657,036 -1.17% 43
Azerbaijan Azerbaijan 225,198,384,996 +4.07% 71
Burundi Burundi 11,738,623,008 +3.49% 154
Belgium Belgium 749,229,139,749 +1.02% 34
Benin Benin 56,423,799,508 +7.45% 115
Burkina Faso Burkina Faso 60,000,707,833 +4.99% 109
Bangladesh Bangladesh 1,472,986,459,828 +4.22% 22
Bulgaria Bulgaria 219,644,843,140 +2.81% 72
Bahrain Bahrain 93,936,691,918 +3.02% 95
Bahamas Bahamas 14,544,115,518 +3.38% 149
Bosnia & Herzegovina Bosnia & Herzegovina 64,641,024,680 +2.48% 107
Belarus Belarus 265,220,428,357 +4.01% 64
Belize Belize 5,537,855,017 +8.15% 164
Bermuda Bermuda 6,807,651,687 +2.11% 158
Bolivia Bolivia 122,200,109,507 +1.38% 89
Brazil Brazil 4,165,328,804,627 +3.4% 7
Barbados Barbados 5,634,012,548 +3.8% 163
Brunei Brunei 36,640,142,252 +4.2% 133
Botswana Botswana 45,553,212,803 -2.99% 127
Central African Republic Central African Republic 5,925,879,192 +1.54% 160
Canada Canada 2,340,729,415,083 +1.53% 15
Switzerland Switzerland 741,034,943,165 +1.3% 36
Chile Chile 596,555,875,617 +2.64% 41
China China 33,597,882,047,419 +4.98% 1
Côte d’Ivoire Côte d’Ivoire 215,018,089,222 +5.95% 74
Cameroon Cameroon 143,263,822,679 +3.67% 83
Congo - Kinshasa Congo - Kinshasa 164,367,209,943 +6.68% 79
Congo - Brazzaville Congo - Brazzaville 39,147,011,808 +2.58% 132
Colombia Colombia 978,591,840,245 +1.74% 30
Comoros Comoros 3,091,707,406 +3.39% 169
Cape Verde Cape Verde 5,200,265,316 +7.27% 166
Costa Rica Costa Rica 138,371,299,882 +4.32% 85
Cyprus Cyprus 50,054,705,237 +3.45% 123
Czechia Czechia 521,928,276,859 +1.12% 46
Germany Germany 5,246,975,952,527 -0.239% 6
Djibouti Djibouti 7,995,421,831 +5.95% 157
Dominica Dominica 1,240,639,596 +2.05% 179
Denmark Denmark 440,558,114,301 +3.68% 51
Dominican Republic Dominican Republic 276,883,628,047 +4.95% 63
Algeria Algeria 722,912,369,992 +3.3% 38
Ecuador Ecuador 252,727,662,994 -2% 66
Egypt Egypt 1,957,627,322,504 +2.4% 17
Spain Spain 2,360,949,862,238 +3.15% 14
Estonia Estonia 57,000,695,251 -0.261% 114
Ethiopia Ethiopia 380,895,311,983 +7.32% 54
Finland Finland 313,590,782,225 -0.154% 59
Fiji Fiji 13,099,981,526 +3.83% 150
France France 3,731,760,755,095 +1.17% 9
Micronesia (Federated States of) Micronesia (Federated States of) 432,679,041 +0.719% 182
Gabon Gabon 48,044,817,323 +3.38% 124
United Kingdom United Kingdom 3,635,610,019,745 +1.1% 10
Georgia Georgia 91,848,574,231 +9.43% 96
Ghana Ghana 243,124,126,422 +5.68% 68
Guinea Guinea 59,439,407,532 +5.67% 110
Gambia Gambia 8,365,452,099 +5.75% 156
Guinea-Bissau Guinea-Bissau 5,911,989,296 +4.81% 161
Equatorial Guinea Equatorial Guinea 29,247,753,195 +0.907% 140
Greece Greece 392,204,733,303 +2.27% 52
Grenada Grenada 2,079,507,172 +3.69% 171
Guatemala Guatemala 232,672,706,257 +3.65% 69
Guyana Guyana 58,423,257,845 +43.4% 112
Hong Kong SAR China Hong Kong SAR China 497,879,917,171 +2.54% 48
Honduras Honduras 71,296,514,098 +3.55% 104
Croatia Croatia 164,825,453,946 +3.81% 77
Haiti Haiti 32,970,942,041 -4.17% 138
Hungary Hungary 389,206,772,373 +0.512% 53
Indonesia Indonesia 4,102,194,303,077 +5.03% 8
India India 14,243,939,416,928 +6.48% 3
Ireland Ireland 620,543,598,505 +1.22% 40
Iran Iran 1,485,598,217,736 +3.04% 21
Iraq Iraq 585,886,626,485 -1.55% 42
Iceland Iceland 26,560,661,830 +0.517% 145
Israel Israel 472,176,550,257 +0.872% 49
Italy Italy 3,133,050,580,636 +0.726% 11
Jamaica Jamaica 29,129,921,615 -0.719% 141
Jordan Jordan 109,986,275,190 +2.49% 91
Japan Japan 5,714,945,983,582 +0.0837% 5
Kazakhstan Kazakhstan 739,385,353,249 +4.8% 37
Kenya Kenya 328,632,034,678 +4.5% 57
Kyrgyzstan Kyrgyzstan 50,906,871,855 +9.04% 121
Cambodia Cambodia 123,675,890,228 +6.02% 88
Kiribati Kiribati 438,143,467 +5.27% 181
St. Kitts & Nevis St. Kitts & Nevis 1,464,812,876 +1.17% 177
Kuwait Kuwait 225,947,312,053 -2.56% 70
Laos Laos 66,905,147,347 +4.26% 106
Liberia Liberia 9,307,509,886 +4.79% 155
Libya Libya 90,608,777,729 -0.606% 97
St. Lucia St. Lucia 4,359,235,763 +3.89% 167
Sri Lanka Sri Lanka 301,407,170,002 +5.01% 60
Lesotho Lesotho 6,165,926,723 +2.76% 159
Lithuania Lithuania 136,226,690,610 +2.77% 86
Luxembourg Luxembourg 86,870,919,446 +1.03% 98
Latvia Latvia 72,516,087,307 -0.442% 103
Macao SAR China Macao SAR China 77,523,802,405 +8.81% 101
Morocco Morocco 350,594,100,691 +3.24% 56
Moldova Moldova 39,341,631,765 +0.103% 131
Madagascar Madagascar 52,967,520,949 +4.2% 117
Maldives Maldives 12,324,662,897 +5.13% 152
Mexico Mexico 2,883,296,481,990 +1.45% 13
Marshall Islands Marshall Islands 270,808,729 +2.77% 183
North Macedonia North Macedonia 43,843,840,436 +2.76% 129
Mali Mali 71,252,671,858 +5% 105
Malta Malta 34,730,576,723 +5.97% 135
Myanmar (Burma) Myanmar (Burma) 287,558,521,666 -0.972% 61
Montenegro Montenegro 17,374,966,800 +3.04% 148
Mongolia Mongolia 59,221,044,569 +4.86% 111
Mozambique Mozambique 51,785,655,733 +1.85% 119
Mauritania Mauritania 33,068,574,626 +5.2% 137
Mauritius Mauritius 34,406,240,719 +4.69% 136
Malawi Malawi 35,424,948,954 +1.83% 134
Malaysia Malaysia 1,211,519,077,201 +5.11% 28
Namibia Namibia 31,153,793,835 +3.71% 139
Niger Niger 47,921,019,367 +8.42% 125
Nigeria Nigeria 1,318,234,315,608 +3.43% 25
Nicaragua Nicaragua 52,988,712,245 +3.59% 116
Netherlands Netherlands 1,275,824,484,217 +0.98% 26
Norway Norway 507,679,877,840 +2.1% 47
Nepal Nepal 149,643,411,660 +3.67% 81
Nauru Nauru 150,580,735 +1.76% 184
New Zealand New Zealand 257,117,433,912 -0.126% 65
Oman Oman 193,590,714,736 +1.67% 75
Pakistan Pakistan 1,389,768,773,486 +3.23% 24
Panama Panama 164,484,443,672 +2.86% 78
Peru Peru 535,911,373,085 +3.3% 45
Philippines Philippines 1,201,987,017,722 +5.69% 29
Papua New Guinea Papua New Guinea 45,486,636,832 +4.1% 128
Poland Poland 1,649,077,853,051 +2.92% 18
Puerto Rico Puerto Rico 141,343,921,419 +3.23% 84
Portugal Portugal 448,225,732,177 +1.93% 50
Paraguay Paraguay 112,919,442,527 +4.25% 90
Palestinian Territories Palestinian Territories 20,339,449,745 -26.6% 147
Qatar Qatar 317,063,578,087 +2.77% 58
Romania Romania 774,375,748,380 +0.814% 33
Russia Russia 6,088,997,179,872 +4.34% 4
Rwanda Rwanda 46,542,623,256 +8.89% 126
Saudi Arabia Saudi Arabia 2,212,504,988,183 +1.81% 16
Sudan Sudan 94,419,727,847 -13.5% 94
Senegal Senegal 83,182,975,384 +6.89% 99
Singapore Singapore 800,303,664,055 +4.39% 32
Solomon Islands Solomon Islands 2,070,174,671 +2.54% 172
Sierra Leone Sierra Leone 26,728,309,890 +4% 144
El Salvador El Salvador 73,960,892,033 +2.6% 102
Somalia Somalia 26,770,174,821 +3.97% 143
Serbia Serbia 177,093,386,953 +3.88% 76
São Tomé & Príncipe São Tomé & Príncipe 1,290,839,800 +0.9% 178
Suriname Suriname 12,316,397,542 +2.84% 153
Slovakia Slovakia 218,761,912,554 +2.06% 73
Slovenia Slovenia 103,117,974,143 +1.59% 93
Sweden Sweden 668,628,249,137 +0.974% 39
Eswatini Eswatini 12,884,669,068 +2.64% 151
Sint Maarten Sint Maarten 1,986,375,365 +3.5% 173
Seychelles Seychelles 3,548,606,461 +3.47% 168
Turks & Caicos Islands Turks & Caicos Islands 1,553,828,161 +5.64% 175
Chad Chad 52,894,879,068 +3.65% 118
Togo Togo 27,114,653,136 +5.3% 142
Thailand Thailand 1,557,860,310,007 +2.53% 20
Tajikistan Tajikistan 50,369,738,871 +8.4% 122
Turkmenistan Turkmenistan 134,555,061,341 +2.26% 87
Timor-Leste Timor-Leste 5,863,371,397 -2.19% 162
Trinidad & Tobago Trinidad & Tobago 43,362,105,898 +1.65% 130
Tunisia Tunisia 156,085,637,253 +1.35% 80
Turkey Turkey 3,018,329,288,132 +3.18% 12
Tanzania Tanzania 246,705,840,511 +5.53% 67
Uganda Uganda 144,136,790,455 +6.14% 82
Ukraine Ukraine 577,582,962,154 +2.91% 44
Uruguay Uruguay 108,502,123,258 +3.11% 92
United States United States 25,675,525,530,500 +2.8% 2
Uzbekistan Uzbekistan 379,988,885,832 +6.5% 55
St. Vincent & Grenadines St. Vincent & Grenadines 1,882,947,831 +4.06% 174
Vietnam Vietnam 1,455,759,302,312 +7.09% 23
Vanuatu Vanuatu 1,038,801,498 +3.97% 180
Samoa Samoa 1,503,216,991 +9.42% 176
Kosovo Kosovo 25,018,893,739 +4.41% 146
South Africa South Africa 870,420,221,900 +0.58% 31
Zambia Zambia 79,207,172,681 +4.04% 100
Zimbabwe Zimbabwe 57,390,744,456 +2.03% 113

                    
# 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 = 'NY.GDP.MKTP.PP.KD'

# 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 <- 'NY.GDP.MKTP.PP.KD'

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