GNI per capita, Atlas method (current US$)

Source: worldbank.org, 01.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 2,220 +4.23% 136
Albania Albania 8,690 +13.2% 76
Andorra Andorra 48,870 +1.98% 22
United Arab Emirates United Arab Emirates 49,500 +0.979% 21
Argentina Argentina 13,440 +4.27% 62
Armenia Armenia 7,780 +13.7% 83
Antigua & Barbuda Antigua & Barbuda 21,380 +7.55% 49
Australia Australia 62,550 -0.966% 12
Austria Austria 54,160 -1.92% 17
Azerbaijan Azerbaijan 7,310 +9.6% 88
Burundi Burundi 190 -13.6% 171
Belgium Belgium 54,840 -0.327% 16
Benin Benin 1,430 +2.88% 148
Burkina Faso Burkina Faso 880 +2.33% 160
Bangladesh Bangladesh 2,820 -2.08% 128
Bulgaria Bulgaria 15,320 +7.36% 60
Bahrain Bahrain 28,810 +1.23% 36
Bosnia & Herzegovina Bosnia & Herzegovina 8,630 +4.35% 77
Belarus Belarus 8,240 +4.97% 81
Belize Belize 7,640 +10.9% 85
Bermuda Bermuda 140,280 +4.3% 1
Bolivia Bolivia 3,690 +1.93% 120
Brazil Brazil 9,950 +6.87% 75
Barbados Barbados 23,660 +3.45% 42
Brunei Brunei 36,150 +5.12% 28
Botswana Botswana 7,750 -7.3% 84
Central African Republic Central African Republic 520 -1.89% 169
Canada Canada 53,340 -2.41% 18
Switzerland Switzerland 95,900 +0.157% 3
Chile Chile 15,750 -1.25% 58
China China 13,660 -0.51% 61
Côte d’Ivoire Côte d’Ivoire 2,510 +0.4% 132
Cameroon Cameroon 1,680 -0.592% 144
Congo - Kinshasa Congo - Kinshasa 640 0% 165
Congo - Brazzaville Congo - Brazzaville 2,410 -1.63% 133
Colombia Colombia 7,040 +4.76% 91
Comoros Comoros 1,690 +1.81% 143
Cape Verde Cape Verde 5,000 +4.6% 106
Costa Rica Costa Rica 15,620 +9.54% 59
Cyprus Cyprus 32,980 +0.0607% 33
Czechia Czechia 29,140 +0.0343% 35
Germany Germany 54,960 0% 15
Djibouti Djibouti 3,540 +0.855% 123
Dominica Dominica 10,220 +2.3% 74
Denmark Denmark 73,790 +0.614% 10
Dominican Republic Dominican Republic 10,280 +5.98% 73
Algeria Algeria 5,320 +7.47% 103
Ecuador Ecuador 6,430 -2.43% 94
Egypt Egypt 3,510 -8.59% 124
Spain Spain 33,410 +1.43% 32
Estonia Estonia 28,700 +4.06% 37
Finland Finland 51,710 -2.65% 20
Fiji Fiji 5,680 0% 101
France France 45,180 -0.572% 25
Micronesia (Federated States of) Micronesia (Federated States of) 4,250 +2.91% 114
Gabon Gabon 7,550 -2.58% 86
United Kingdom United Kingdom 48,610 +0.103% 23
Georgia Georgia 8,200 +22.2% 82
Ghana Ghana 2,320 +1.75% 134
Guinea Guinea 1,470 +9.7% 147
Gambia Gambia 890 +2.3% 159
Guinea-Bissau Guinea-Bissau 960 -1.03% 158
Equatorial Guinea Equatorial Guinea 4,740 -2.07% 108
Greece Greece 23,030 +3.18% 43
Grenada Grenada 10,550 +4.35% 72
Guatemala Guatemala 5,780 +5.67% 100
Guyana Guyana 20,220 +13.8% 52
Hong Kong SAR China Hong Kong SAR China 57,100 +3.99% 14
Honduras Honduras 3,020 +4.86% 126
Croatia Croatia 22,080 +7.24% 45
Haiti Haiti 1,760 0% 142
Hungary Hungary 20,690 +4.18% 51
Indonesia Indonesia 4,910 +2.08% 107
India India 2,650 +2.71% 130
Ireland Ireland 77,920 -1.34% 7
Iran Iran 4,660 +0.431% 109
Iraq Iraq 6,030 +1.86% 98
Iceland Iceland 78,480 -2.82% 6
Israel Israel 52,940 -2.47% 19
Italy Italy 38,290 -0.829% 27
Jamaica Jamaica 6,490 +4.34% 93
Jordan Jordan 4,430 -0.449% 113
Japan Japan 36,030 -8.46% 29
Kazakhstan Kazakhstan 12,150 +13.7% 66
Kenya Kenya 2,110 0% 138
Kyrgyzstan Kyrgyzstan 2,150 +16.8% 137
Cambodia Cambodia 2,520 +5.44% 131
Kiribati Kiribati 3,620 -1.9% 121
St. Kitts & Nevis St. Kitts & Nevis 22,310 +1.32% 44
Kuwait Kuwait 40,250 -4.24% 26
Laos Laos 2,000 -5.21% 141
Liberia Liberia 760 +5.56% 162
Libya Libya 6,310 +6.23% 95
St. Lucia St. Lucia 12,800 +2.89% 65
Sri Lanka Sri Lanka 3,860 +9.35% 118
Lesotho Lesotho 1,170 -6.4% 153
Lithuania Lithuania 26,950 +6.61% 38
Luxembourg Luxembourg 91,470 +2.03% 4
Latvia Latvia 21,930 +2.48% 46
Morocco Morocco 3,760 0% 119
Moldova Moldova 6,940 +11% 92
Madagascar Madagascar 510 0% 170
Maldives Maldives 11,650 +5.05% 69
Mexico Mexico 12,800 +6.67% 65
Marshall Islands Marshall Islands 8,380 +6.62% 79
North Macedonia North Macedonia 8,360 +5.82% 80
Mali Mali 1,020 +0.99% 155
Malta Malta 34,660 +0.464% 31
Myanmar (Burma) Myanmar (Burma) 1,220 -0.813% 151
Montenegro Montenegro 12,020 +4.98% 67
Mongolia Mongolia 5,350 +9.86% 102
Mozambique Mozambique 550 +1.85% 167
Mauritania Mauritania 2,090 -1.88% 139
Mauritius Mauritius 12,850 +6.46% 64
Malawi Malawi 540 -10% 168
Malaysia Malaysia 11,670 -0.342% 68
Namibia Namibia 4,240 -1.17% 115
Niger Niger 660 +3.13% 164
Nigeria Nigeria 1,250 -33.5% 150
Nicaragua Nicaragua 2,510 +6.36% 132
Netherlands Netherlands 62,840 +0.48% 11
Norway Norway 98,280 -4.74% 2
Nepal Nepal 1,470 +2.8% 147
Nauru Nauru 21,260 -10.5% 50
New Zealand New Zealand 46,280 -4.77% 24
Oman Oman 19,280 -3.7% 54
Pakistan Pakistan 1,430 -2.05% 148
Panama Panama 17,960 +0.504% 55
Peru Peru 7,490 +5.79% 87
Philippines Philippines 4,470 +3.47% 112
Papua New Guinea Papua New Guinea 2,940 +5% 127
Poland Poland 21,560 +8.12% 48
Puerto Rico Puerto Rico 25,930 +2.61% 40
Portugal Portugal 26,620 +1.76% 39
Paraguay Paraguay 6,290 +1.45% 96
Palestinian Territories Palestinian Territories 3,080 -28.5% 125
Qatar Qatar 76,720 -3.41% 8
Romania Romania 17,600 +5.45% 56
Russia Russia 15,320 +5.95% 60
Rwanda Rwanda 1,040 +4% 154
Saudi Arabia Saudi Arabia 35,570 -2.09% 30
Sudan Sudan 720 +12.5% 163
Senegal Senegal 1,680 +3.07% 144
Singapore Singapore 74,750 +7.02% 9
Solomon Islands Solomon Islands 2,080 -1.42% 140
Sierra Leone Sierra Leone 840 -3.45% 161
El Salvador El Salvador 5,120 +3.43% 105
Somalia Somalia 600 +1.69% 166
Serbia Serbia 11,570 +7.53% 70
São Tomé & Príncipe São Tomé & Príncipe 2,770 +7.36% 129
Suriname Suriname 5,870 +12.9% 99
Slovakia Slovakia 23,900 +3.46% 41
Slovenia Slovenia 31,640 +2.1% 34
Sweden Sweden 58,820 -3.43% 13
Eswatini Eswatini 3,580 -4.53% 122
Seychelles Seychelles 17,460 +6.46% 57
Chad Chad 970 -3% 157
Togo Togo 1,010 +1% 156
Thailand Thailand 7,120 -0.974% 90
Tajikistan Tajikistan 1,650 +17.9% 145
Turkmenistan Turkmenistan 8,390 +1.7% 78
Timor-Leste Timor-Leste 1,560 -22.8% 146
Trinidad & Tobago Trinidad & Tobago 20,000 -0.349% 53
Tunisia Tunisia 3,900 +1.3% 117
Turkey Turkey 13,150 +12.1% 63
Tanzania Tanzania 1,200 -1.64% 152
Uganda Uganda 1,020 +5.15% 155
Ukraine Ukraine 5,220 +4.82% 104
Uruguay Uruguay 21,580 +8.72% 47
United States United States 83,660 +3.66% 5
Uzbekistan Uzbekistan 3,020 +9.82% 126
St. Vincent & Grenadines St. Vincent & Grenadines 11,020 +6.17% 71
Vietnam Vietnam 4,490 +8.19% 111
Vanuatu Vanuatu 3,940 +2.87% 116
Samoa Samoa 4,650 +10.2% 110
Kosovo Kosovo 7,180 +14.1% 89
South Africa South Africa 6,100 -5.86% 97
Zambia Zambia 1,260 -2.33% 149
Zimbabwe Zimbabwe 2,260 +9.71% 135

Gross National Income (GNI) per capita, measured using the Atlas method, is a vital indicator that provides insight into the economic performance and general well-being of residents within a country. GNI per capita reflects the average income earned per person in a given country, calculated by taking the total GNI and dividing it by the population. The Atlas method smooths exchange rate fluctuations, offering a more stable view of income levels in current US dollars, making it particularly useful for international comparisons.

The importance of GNI per capita lies in its ability to convey information about the economic health of countries. It serves as a proxy for wealth and living standards, influencing policy decisions, international aid, economic planning, and investment strategies. By examining GNI per capita, stakeholders can gauge economic vitality, identify trends that may indicate growth or recession, and assess the economic discrepancies between different nations.

GNI per capita is closely linked to other economic indicators, such as GDP per capita and Human Development Index (HDI). While GDP per capita measures the total economic output per person and is indicative of production capacity, GNI per capita provides insight into the income residents receive, including from overseas investments. The HDI, on the other hand, incorporates health and educational data, recognizing that income alone does not tell the full story of a nation's development or well-being. A high GNI per capita might coexist with low HDI if wealth is unevenly distributed, highlighting social inequalities within a country.

Several factors influence GNI per capita, including economic structure, employment rates, education levels, and external trade relationships. Countries with diversified economies, robust educational systems, and high employment rates typically show higher GNI figures. Conversely, regions suffering from political instability, corruption, or economic mismanagement often experience low GNI per capita. Unexpected global disruptions, such as the COVID-19 pandemic, can also drastically affect income levels, as evidenced by the economic downturn and recovery trajectories observed in various countries between 2020 and 2023.

To improve GNI per capita, nations may adopt several strategies, including investing in education to build a skilled workforce, fostering a favorable business environment that encourages investment, and pursuing trade partnerships that enhance market access. Infrastructure development also plays a crucial role, as improved transportation and communication networks can enhance productivity and facilitate economic activity. Additionally, policies aimed at reducing income inequality can create a more equitable environment that supports overall economic growth.

Despite its significance, GNI per capita is not without flaws. Primarily, it does not account for income distribution, meaning a high GNI per capita could mask significant income inequality, leading to misleading conclusions about a population's well-being. Additionally, the GNI figures may not accurately reflect the informal economy, which can be substantial in certain regions, especially in developing countries. This omission can skew the understanding of actual living standards and economic participation rates.

For context, the latest data indicates that the global median GNI per capita in 2023 is approximately $6,990. This median position underscores the existing economic disparity across different regions. For example, the top five regions with the highest GNI per capita include Bermuda at an astonishing $130,290, which is indicative of a highly developed, service-oriented economy. Norway, Switzerland, Luxembourg, and the United States follow, each with GNI per capita figures exceeding $80,000. Such figures reflect the long-standing stability and affluence in these economies, providing ample resources for health, education, and infrastructure.

Conversely, the bottom five regions present a stark contrast. Countries like Burundi, Afghanistan, Madagascar, the Central African Republic, and Mozambique have GNI per capita figures ranging from $220 to $540. These numbers indicate severe economic struggles, typically characterized by inadequate access to basic services, high poverty rates, and limited economic diversification. The gap between these nations and their more affluent counterparts underscores the pressing need for both local and international efforts to raise living standards and drive economic development.

Looking at the historical trajectory from 1962 to 2023 shows that the world's GNI per capita has significantly increased from approximately $492.24 to $13,179.37, illustrating a long-term trend of economic growth globally. However, the growth has not been uniform; while developed nations have steadily increased their figures, many developing and war-torn countries continue to lag years behind. The fluctuations seen in the data, such as the decline in 2020 due to the pandemic, serve as a reminder that global events can dramatically impact economic indicators.

In summary, GNI per capita, measured using the Atlas method, is an essential economic indicator that captures income levels while allowing for international comparisons. Although it has its limitations, understanding GNI per capita alongside other indicators can provide comprehensive insights into a country's economic health and general population well-being. With concerted efforts focused on investment, education, and infrastructure, nations can strive to improve their economic standings and elevate the living standards for all their residents.

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