Out-of-pocket expenditure per capita (current US$)

Source: worldbank.org, 03.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 62.9 -0.129% 115
Angola Angola 29.1 +66.2% 143
Albania Albania 212 -23.6% 67
Andorra Andorra 282 -32% 54
United Arab Emirates United Arab Emirates 284 +20.8% 53
Argentina Argentina 362 +34.3% 43
Armenia Armenia 534 +13.9% 33
Antigua & Barbuda Antigua & Barbuda 269 +48% 56
Australia Australia 1,029 +5.61% 6
Austria Austria 936 -8.79% 9
Azerbaijan Azerbaijan 196 +18.3% 71
Burundi Burundi 6.05 +6.03% 182
Belgium Belgium 1,083 +0.445% 4
Benin Benin 14.4 -13% 164
Burkina Faso Burkina Faso 19.6 -0.898% 155
Bangladesh Bangladesh 44.3 +3.73% 128
Bulgaria Bulgaria 355 +0.384% 44
Bahrain Bahrain 261 -13.6% 57
Bahamas Bahamas 568 +9.21% 28
Bosnia & Herzegovina Bosnia & Herzegovina 206 -3.75% 68
Belarus Belarus 146 +37.7% 82
Belize Belize 79.1 +15.6% 106
Bolivia Bolivia 67.2 +6.99% 113
Brazil Brazil 232 +19.6% 61
Barbados Barbados 609 +12.8% 23
Brunei Brunei 51 +10.6% 124
Bhutan Bhutan 53.4 +140% 119
Botswana Botswana 21 -0.0418% 152
Central African Republic Central African Republic 22.8 -0.432% 149
Canada Canada 929 +2.76% 10
Switzerland Switzerland 2,366 -1.31% 1
Chile Chile 549 +6.64% 31
China China 226 -2.03% 64
Côte d’Ivoire Côte d’Ivoire 24.8 -5.31% 147
Cameroon Cameroon 48.7 -4.94% 126
Congo - Kinshasa Congo - Kinshasa 9.04 +7.03% 177
Congo - Brazzaville Congo - Brazzaville 12.9 -32.2% 166
Colombia Colombia 72.6 -5.33% 111
Comoros Comoros 54 -3.27% 118
Cape Verde Cape Verde 73.5 +21.8% 110
Costa Rica Costa Rica 220 +9.54% 66
Cyprus Cyprus 417 -2.79% 41
Czechia Czechia 347 +9.64% 45
Germany Germany 664 -16.3% 20
Djibouti Djibouti 25.4 +6.73% 145
Dominica Dominica 158 +25.7% 81
Denmark Denmark 841 -11.3% 13
Dominican Republic Dominican Republic 127 +29.7% 88
Algeria Algeria 89.8 +6.63% 101
Ecuador Ecuador 160 +4.54% 79
Egypt Egypt 92 -5.26% 99
Eritrea Eritrea 14.7 +7.33% 163
Spain Spain 558 -8.22% 30
Estonia Estonia 463 -0.129% 36
Ethiopia Ethiopia 12.1 +25.1% 167
Finland Finland 789 -10% 14
Fiji Fiji 17.4 -78.8% 157
France France 434 -7.6% 39
Micronesia (Federated States of) Micronesia (Federated States of) 11.3 +6.6% 169
Gabon Gabon 46 -6.53% 127
United Kingdom United Kingdom 669 -3.76% 19
Georgia Georgia 193 +49.7% 73
Ghana Ghana 20.6 -17.6% 154
Guinea Guinea 30.5 +29.4% 140
Gambia Gambia 5.75 +7.62% 184
Guinea-Bissau Guinea-Bissau 42.9 +5.15% 129
Equatorial Guinea Equatorial Guinea 134 -27% 84
Greece Greece 593 -3.61% 24
Grenada Grenada 280 +4.69% 55
Guatemala Guatemala 231 +11.2% 62
Guyana Guyana 123 -6.15% 91
Honduras Honduras 128 -2.27% 87
Croatia Croatia 124 -5.05% 90
Haiti Haiti 25.2 -0.674% 146
Hungary Hungary 297 -12.7% 52
Indonesia Indonesia 42 -2.68% 130
India India 36.6 +7.28% 134
Ireland Ireland 688 -4.81% 18
Iran Iran 92.9 +15.2% 98
Iraq Iraq 122 -3% 92
Iceland Iceland 937 -4.17% 8
Israel Israel 855 -2.79% 12
Italy Italy 713 -7.75% 17
Jamaica Jamaica 51.9 +6.99% 121
Jordan Jordan 119 +5.18% 95
Japan Japan 427 -18.8% 40
Kazakhstan Kazakhstan 130 +32.5% 86
Kenya Kenya 21.9 +2.6% 150
Kyrgyzstan Kyrgyzstan 32.9 +16.2% 137
Cambodia Cambodia 67 +2.01% 114
Kiribati Kiribati 1.71 -2.32% 190
St. Kitts & Nevis St. Kitts & Nevis 502 +14% 35
South Korea South Korea 878 -6.71% 11
Kuwait Kuwait 196 +34.1% 70
Laos Laos 11.9 -43.7% 168
Lebanon Lebanon 131 +21.1% 85
Liberia Liberia 62 +7.26% 116
Libya Libya 84.8 +5.03% 103
St. Lucia St. Lucia 250 +14% 60
Sri Lanka Sri Lanka 58.5 -13.3% 117
Lesotho Lesotho 16.9 -1.39% 159
Lithuania Lithuania 582 +4.93% 25
Luxembourg Luxembourg 609 -9.36% 22
Latvia Latvia 505 -1.41% 34
Morocco Morocco 85.7 -4.34% 102
Monaco Monaco 579 +2.2% 27
Moldova Moldova 126 +4.65% 89
Madagascar Madagascar 5.27 -6.23% 185
Maldives Maldives 202 +28% 69
Mexico Mexico 254 +1.48% 59
Marshall Islands Marshall Islands 9.1 -2.49% 176
North Macedonia North Macedonia 226 -15% 63
Mali Mali 12.9 -5.04% 165
Malta Malta 1,007 -6.83% 7
Myanmar (Burma) Myanmar (Burma) 37.8 -1.9% 132
Montenegro Montenegro 407 +4.27% 42
Mongolia Mongolia 175 +71.4% 76
Mozambique Mozambique 4.79 +15% 187
Mauritania Mauritania 36.9 +3.98% 133
Mauritius Mauritius 260 +8.37% 58
Malawi Malawi 4.8 -18.2% 186
Malaysia Malaysia 174 +13.4% 77
Namibia Namibia 32.9 +1.57% 138
Niger Niger 10.7 -29% 171
Nigeria Nigeria 69.2 +10.9% 112
Nicaragua Nicaragua 74.3 +18.1% 109
Netherlands Netherlands 581 -5.42% 26
Norway Norway 1,224 -3.61% 3
Nepal Nepal 49.2 +44.4% 125
Nauru Nauru 10.6 -4.55% 172
New Zealand New Zealand 561 -2.41% 29
Oman Oman 52.9 +0.648% 120
Pakistan Pakistan 18.4 -15.3% 156
Panama Panama 547 +3.32% 32
Peru Peru 120 +5.31% 93
Philippines Philippines 81.7 -4.85% 104
Palau Palau 328 +5.72% 48
Papua New Guinea Papua New Guinea 7.51 +18.8% 178
Poland Poland 225 -4.29% 65
Portugal Portugal 765 -5.75% 16
Paraguay Paraguay 187 +8.29% 74
Palestinian Territories Palestinian Territories 118 -3.32% 96
Qatar Qatar 138 +13.7% 83
Romania Romania 193 -4.16% 72
Russia Russia 299 +17.9% 51
Rwanda Rwanda 7.39 +21% 179
Saudi Arabia Saudi Arabia 176 +4.44% 75
Sudan Sudan 16.2 +39.3% 160
Senegal Senegal 31.1 -6.66% 139
Singapore Singapore 1,069 +9.49% 5
Solomon Islands Solomon Islands 3.6 +0.0972% 189
Sierra Leone Sierra Leone 20.7 -10.3% 153
El Salvador El Salvador 158 +10.5% 80
San Marino San Marino 443 -7.33% 38
Somalia Somalia 6.47 +3.76% 181
Serbia Serbia 330 +0.375% 47
South Sudan South Sudan 17 +58.3% 158
São Tomé & Príncipe São Tomé & Príncipe 21.6 -0.983% 151
Suriname Suriname 79.4 +10.6% 105
Slovakia Slovakia 316 -3.21% 49
Slovenia Slovenia 340 -4.9% 46
Sweden Sweden 765 -12.7% 15
Eswatini Eswatini 29.4 -8.18% 142
Seychelles Seychelles 170 +17.9% 78
Syria Syria 15.7 +26.1% 161
Chad Chad 23.4 -10.5% 148
Togo Togo 34.1 -6.18% 135
Thailand Thailand 34.1 +3.6% 136
Tajikistan Tajikistan 51.2 +4.75% 123
Turkmenistan Turkmenistan 459 +25.5% 37
Timor-Leste Timor-Leste 9.58 +23.1% 175
Tonga Tonga 11.1 -6.53% 170
Trinidad & Tobago Trinidad & Tobago 636 +15.7% 21
Tunisia Tunisia 90 -1.4% 100
Turkey Turkey 75.2 +7.09% 107
Tuvalu Tuvalu 4 -4.27% 188
Tanzania Tanzania 10.2 +6.78% 174
Uganda Uganda 15 +7.8% 162
Uruguay Uruguay 302 +19.8% 50
United States United States 1,380 +6.18% 2
Uzbekistan Uzbekistan 111 +17.3% 97
St. Vincent & Grenadines St. Vincent & Grenadines 120 +0.836% 94
Venezuela Venezuela 51.9 +13.9% 122
Vietnam Vietnam 74.7 +9.83% 108
Vanuatu Vanuatu 10.3 +0.672% 173
Samoa Samoa 29.5 -2.37% 141
Yemen Yemen 26.8 +15.9% 144
South Africa South Africa 38.2 -2.29% 131
Zambia Zambia 7.37 +39.1% 180
Zimbabwe Zimbabwe 5.76 -11.4% 183

                    
# 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 = 'SH.XPD.OOPC.PC.CD'

# 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 <- 'SH.XPD.OOPC.PC.CD'

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