GDP per capita (constant 2015 US$)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 2,365 +1.29% 136
Albania Albania 5,726 +5.16% 102
Andorra Andorra 41,035 +2.01% 26
United Arab Emirates United Arab Emirates 42,512 +0.0104% 23
Argentina Argentina 12,667 -2.06% 64
Armenia Armenia 5,378 +3.48% 104
Antigua & Barbuda Antigua & Barbuda 18,469 +3.82% 51
Australia Australia 61,212 -0.627% 11
Austria Austria 45,562 -1.68% 17
Azerbaijan Azerbaijan 5,871 +3.57% 98
Burundi Burundi 256 +0.849% 185
Belgium Belgium 44,838 +0.258% 19
Benin Benin 1,325 +4.84% 157
Burkina Faso Burkina Faso 764 +2.65% 174
Bangladesh Bangladesh 1,941 +2.96% 143
Bulgaria Bulgaria 10,090 +2.85% 74
Bahrain Bahrain 25,916 +2.26% 39
Bahamas Bahamas 33,968 +2.9% 30
Bosnia & Herzegovina Bosnia & Herzegovina 6,698 +3.15% 91
Belarus Belarus 6,791 +4.52% 88
Belize Belize 6,623 +6.6% 93
Bermuda Bermuda 117,661 +2.2% 1
Bolivia Bolivia 3,226 +0.00312% 127
Brazil Brazil 9,565 +2.98% 75
Barbados Barbados 20,475 +3.75% 45
Brunei Brunei 29,606 +3.35% 36
Botswana Botswana 6,937 -4.56% 85
Central African Republic Central African Republic 390 -1.86% 184
Canada Canada 44,402 -1.44% 21
Switzerland Switzerland 89,783 -0.335% 4
Chile Chile 14,579 +2.09% 62
China China 13,122 +5.11% 63
Côte d’Ivoire Côte d’Ivoire 2,391 +3.4% 135
Cameroon Cameroon 1,481 +0.997% 152
Congo - Kinshasa Congo - Kinshasa 555 +3.27% 180
Congo - Brazzaville Congo - Brazzaville 1,680 +0.149% 146
Colombia Colombia 6,873 +0.656% 86
Comoros Comoros 1,527 +1.45% 149
Cape Verde Cape Verde 4,475 +6.75% 111
Costa Rica Costa Rica 14,867 +3.83% 61
Cyprus Cyprus 32,999 +2.03% 33
Czechia Czechia 20,445 +0.952% 46
Germany Germany 44,109 +0.229% 22
Djibouti Djibouti 3,276 +4.52% 126
Dominica Dominica 9,173 +2.52% 77
Denmark Denmark 63,230 +3.16% 9
Dominican Republic Dominican Republic 9,168 +4.07% 78
Algeria Algeria 4,747 +1.87% 107
Ecuador Ecuador 5,999 -2.84% 96
Egypt Egypt 4,138 +0.64% 116
Spain Spain 29,193 +2.18% 37
Estonia Estonia 20,046 -0.385% 47
Ethiopia Ethiopia 916 +4.58% 170
Finland Finland 44,855 -1.1% 18
Fiji Fiji 5,927 +3.31% 97
France France 39,441 +0.828% 27
Micronesia (Federated States of) Micronesia (Federated States of) 2,938 +0.247% 128
Gabon Gabon 6,619 +1.18% 94
United Kingdom United Kingdom 47,265 +0.0287% 16
Georgia Georgia 6,840 +10.7% 87
Ghana Ghana 2,170 +3.72% 140
Guinea Guinea 1,049 +3.17% 165
Gambia Gambia 752 +3.37% 175
Guinea-Bissau Guinea-Bissau 786 +2.53% 173
Equatorial Guinea Equatorial Guinea 5,042 -1.49% 106
Greece Greece 21,654 +2.44% 44
Grenada Grenada 10,184 +3.58% 73
Guatemala Guatemala 4,563 +2.07% 110
Guyana Guyana 32,932 +42.6% 34
Hong Kong SAR China Hong Kong SAR China 44,725 +2.7% 20
Honduras Honduras 2,573 +1.82% 131
Croatia Croatia 17,771 +3.64% 53
Haiti Haiti 1,155 -5.27% 161
Hungary Hungary 16,525 +0.826% 58
Indonesia Indonesia 4,368 +4.18% 113
India India 2,397 +5.54% 134
Ireland Ireland 91,514 -0.146% 3
Iran Iran 5,779 +1.96% 101
Iraq Iraq 4,180 -3.62% 115
Iceland Iceland 57,955 -2.28% 12
Israel Israel 41,845 -0.396% 24
Italy Italy 34,398 +0.739% 29
Jamaica Jamaica 5,312 -0.697% 105
Jordan Jordan 4,017 +1.48% 119
Japan Japan 37,145 +0.521% 28
Kazakhstan Kazakhstan 11,850 +3.46% 69
Kenya Kenya 1,853 +2.47% 145
Kyrgyzstan Kyrgyzstan 1,391 +7.16% 154
Cambodia Cambodia 2,184 +4.72% 139
Kiribati Kiribati 2,042 +3.71% 142
St. Kitts & Nevis St. Kitts & Nevis 22,127 +0.983% 43
Kuwait Kuwait 23,500 -4.92% 41
Laos Laos 2,724 +2.85% 129
Liberia Liberia 670 +2.56% 176
Libya Libya 7,510 -1.62% 83
St. Lucia St. Lucia 11,855 +3.63% 68
Sri Lanka Sri Lanka 4,186 +5.59% 114
Lesotho Lesotho 990 +1.62% 166
Lithuania Lithuania 19,094 +2.19% 49
Luxembourg Luxembourg 103,909 -0.651% 2
Latvia Latvia 16,951 +0.36% 56
Macao SAR China Macao SAR China 64,078 +7.51% 8
Morocco Morocco 3,479 +2.22% 125
Moldova Moldova 3,873 +2.97% 123
Madagascar Madagascar 453 +1.69% 183
Maldives Maldives 11,961 +4.77% 66
Mexico Mexico 10,313 +0.585% 72
Marshall Islands Marshall Islands 5,814 +6.27% 100
North Macedonia North Macedonia 6,701 +4.8% 90
Mali Mali 908 +1.96% 171
Malta Malta 33,467 +1.98% 32
Myanmar (Burma) Myanmar (Burma) 1,158 -1.64% 160
Montenegro Montenegro 8,553 +2.99% 81
Mongolia Mongolia 4,615 +3.57% 108
Mozambique Mozambique 604 -1.08% 177
Mauritania Mauritania 1,666 +2.21% 147
Mauritius Mauritius 11,629 +4.82% 70
Malawi Malawi 552 -0.763% 181
Malaysia Malaysia 11,868 +3.84% 67
Namibia Namibia 4,034 +1.42% 117
Niger Niger 585 +4.92% 178
Nigeria Nigeria 2,448 +1.29% 133
Nicaragua Nicaragua 2,290 +2.2% 137
Netherlands Netherlands 51,471 +0.322% 14
Norway Norway 79,670 +1.14% 5
Nepal Nepal 1,180 +3.82% 159
Nauru Nauru 8,559 +1.15% 80
New Zealand New Zealand 41,416 -1.88% 25
Oman Oman 17,316 -2.8% 54
Pakistan Pakistan 1,644 +1.69% 148
Panama Panama 17,137 +1.57% 55
Peru Peru 6,711 +2.18% 89
Philippines Philippines 3,925 +4.82% 121
Papua New Guinea Papua New Guinea 2,572 +2.26% 132
Poland Poland 17,984 +3.3% 52
Puerto Rico Puerto Rico 30,914 +3.24% 35
Portugal Portugal 22,479 +0.753% 42
Paraguay Paraguay 6,641 +2.97% 92
Palestinian Territories Palestinian Territories 2,072 -28.3% 141
Qatar Qatar 62,189 -4.49% 10
Romania Romania 12,493 +0.762% 65
Russia Russia 11,043 +4.56% 71
Rwanda Rwanda 1,070 +6.58% 164
Saudi Arabia Saudi Arabia 24,917 -2.8% 40
Sudan Sudan 582 -14.2% 179
Senegal Senegal 1,524 +4.44% 150
Singapore Singapore 67,707 +2.33% 6
Solomon Islands Solomon Islands 1,940 +0.137% 144
Sierra Leone Sierra Leone 1,134 +1.82% 162
El Salvador El Salvador 4,585 +2.14% 109
Somalia Somalia 467 +0.414% 182
Serbia Serbia 8,576 +4.45% 79
São Tomé & Príncipe São Tomé & Príncipe 1,365 -1.1% 155
Suriname Suriname 7,335 +1.94% 84
Slovakia Slovakia 19,798 +2.15% 48
Slovenia Slovenia 26,046 +1.31% 38
Sweden Sweden 54,916 +0.658% 13
Eswatini Eswatini 3,833 +1.62% 124
Sint Maarten Sint Maarten 33,749 +2.07% 31
Seychelles Seychelles 16,586 +2.12% 57
Turks & Caicos Islands Turks & Caicos Islands 49,957 +4.87% 15
Chad Chad 917 -1.35% 169
Togo Togo 923 +2.97% 168
Thailand Thailand 6,573 +2.58% 95
Tajikistan Tajikistan 1,496 +6.34% 151
Turkmenistan Turkmenistan 7,919 +0.489% 82
Timor-Leste Timor-Leste 1,236 -3.33% 158
Trinidad & Tobago Trinidad & Tobago 16,179 +1.59% 59
Tunisia Tunisia 3,987 +0.718% 120
Turkey Turkey 15,148 +2.95% 60
Tanzania Tanzania 1,121 +2.55% 163
Uganda Uganda 987 +3.25% 167
Ukraine Ukraine 2,219 +2.53% 138
Uruguay Uruguay 18,959 +3.15% 50
United States United States 66,683 +1.8% 7
Uzbekistan Uzbekistan 3,890 +4.42% 122
St. Vincent & Grenadines St. Vincent & Grenadines 9,476 +4.79% 76
Vietnam Vietnam 4,018 +6.42% 118
Vanuatu Vanuatu 2,695 +1.63% 130
Samoa Samoa 4,378 +8.74% 112
Kosovo Kosovo 5,870 +15% 99
Yemen Yemen 821 -4.39% 172
South Africa South Africa 5,709 -0.669% 103
Zambia Zambia 1,346 +1.16% 156
Zimbabwe Zimbabwe 1,421 +0.229% 153

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