GNI, Atlas method (current US$)

Source: worldbank.org, 01.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 83,996,121,678 +7.53% 69
Albania Albania 23,594,433,057 +11.9% 111
Andorra Andorra 4,004,487,518 +3.36% 154
United Arab Emirates United Arab Emirates 538,363,555,457 +4.75% 25
Argentina Argentina 614,323,620,535 +4.67% 23
Armenia Armenia 23,586,569,904 +16.4% 112
Antigua & Barbuda Antigua & Barbuda 2,004,613,169 +8.05% 166
Australia Australia 1,701,532,748,783 +1.08% 12
Austria Austria 497,098,263,416 -1.43% 29
Azerbaijan Azerbaijan 74,596,878,603 +10.1% 79
Burundi Burundi 2,711,217,734 -10.8% 159
Belgium Belgium 651,341,848,517 +0.427% 21
Benin Benin 20,642,195,713 +5.22% 116
Burkina Faso Burkina Faso 20,656,399,353 +4.87% 115
Bangladesh Bangladesh 490,163,577,972 -0.763% 30
Bulgaria Bulgaria 98,739,790,335 +7.35% 66
Bahrain Bahrain 45,764,136,214 +1.95% 92
Bosnia & Herzegovina Bosnia & Herzegovina 27,298,381,572 +3.61% 108
Belarus Belarus 75,231,909,885 +4.43% 78
Belize Belize 3,187,641,997 +12.5% 156
Bermuda Bermuda 9,066,859,145 +4.2% 144
Bolivia Bolivia 45,811,313,494 +3.37% 91
Brazil Brazil 2,108,530,453,343 +7.24% 11
Barbados Barbados 6,682,283,993 +3.51% 148
Brunei Brunei 16,725,104,699 +5.95% 128
Botswana Botswana 19,548,512,881 -5.77% 119
Central African Republic Central African Republic 2,745,604,870 +1.42% 158
Canada Canada 2,202,315,879,885 +0.522% 10
Switzerland Switzerland 866,358,987,863 +1.8% 19
Chile Chile 311,279,825,283 -0.711% 44
China China 19,251,262,764,511 -0.643% 2
Côte d’Ivoire Côte d’Ivoire 80,243,465,049 +3.15% 72
Cameroon Cameroon 49,039,480,921 +2.44% 88
Congo - Kinshasa Congo - Kinshasa 70,357,001,205 +4.48% 81
Congo - Brazzaville Congo - Brazzaville 15,243,149,155 +0.654% 135
Colombia Colombia 372,510,473,189 +5.88% 40
Comoros Comoros 1,467,449,587 +3.82% 168
Cape Verde Cape Verde 2,625,425,708 +5.16% 160
Costa Rica Costa Rica 80,152,107,546 +10.1% 73
Cyprus Cyprus 30,996,274,293 +1.43% 105
Czechia Czechia 317,109,586,695 +0.188% 43
Germany Germany 4,589,971,753,976 -0.452% 3
Djibouti Djibouti 4,136,580,969 +2.07% 153
Dominica Dominica 676,427,200 +1.77% 174
Denmark Denmark 441,049,942,284 +1.12% 33
Dominican Republic Dominican Republic 117,474,309,428 +6.9% 61
Algeria Algeria 249,052,479,062 +9% 51
Ecuador Ecuador 116,591,070,593 -1.54% 62
Egypt Egypt 408,684,228,939 -6.96% 38
Spain Spain 1,630,801,971,424 +2.39% 14
Estonia Estonia 39,369,580,046 +4.16% 97
Finland Finland 291,527,846,192 -1.72% 45
Fiji Fiji 5,271,446,725 +0.416% 150
France France 3,095,690,083,211 -0.24% 7
Micronesia (Federated States of) Micronesia (Federated States of) 481,159,851 +3.33% 177
Gabon Gabon 19,160,116,182 -0.496% 120
United Kingdom United Kingdom 3,365,232,730,555 +1.18% 6
Georgia Georgia 30,118,413,628 +20.8% 106
Ghana Ghana 79,779,355,453 +3.54% 75
Guinea Guinea 21,718,974,571 +12.5% 113
Gambia Gambia 2,464,145,181 +5.15% 161
Guinea-Bissau Guinea-Bissau 2,118,719,639 +1.87% 165
Equatorial Guinea Equatorial Guinea 8,964,113,100 +0.171% 145
Greece Greece 239,264,858,381 +3% 53
Grenada Grenada 1,237,016,451 +4.53% 170
Guatemala Guatemala 106,394,520,027 +7.22% 64
Guyana Guyana 16,806,394,315 +14.5% 127
Hong Kong SAR China Hong Kong SAR China 429,592,798,493 +3.82% 34
Honduras Honduras 32,658,132,972 +6.61% 100
Croatia Croatia 85,350,397,576 +7.38% 67
Haiti Haiti 20,747,380,559 +1.58% 114
Hungary Hungary 197,811,788,306 +3.82% 56
Indonesia Indonesia 1,393,237,295,551 +3.08% 15
India India 3,838,578,885,156 +3.61% 5
Ireland Ireland 419,245,327,840 +0.0125% 36
Iran Iran 426,384,362,530 +1.34% 35
Iraq Iraq 277,800,635,913 +4.11% 48
Iceland Iceland 31,752,683,934 -0.0401% 102
Israel Israel 528,040,540,408 -1.23% 26
Italy Italy 2,258,742,057,987 -0.839% 8
Jamaica Jamaica 18,428,226,999 +4.38% 123
Jordan Jordan 51,176,187,351 +0.636% 86
Japan Japan 4,467,327,039,084 -8.85% 4
Kazakhstan Kazakhstan 250,145,015,032 +15.1% 50
Kenya Kenya 119,075,651,822 +1.81% 60
Kyrgyzstan Kyrgyzstan 15,513,654,838 +18.6% 134
Cambodia Cambodia 44,428,246,001 +6.61% 93
Kiribati Kiribati 487,161,836 -0.39% 176
St. Kitts & Nevis St. Kitts & Nevis 1,044,959,755 +1.51% 172
Kuwait Kuwait 200,213,833,966 -1.85% 55
Laos Laos 15,540,345,056 -4.04% 133
Liberia Liberia 4,268,932,840 +7.48% 152
Libya Libya 46,571,961,809 +7.24% 90
St. Lucia St. Lucia 2,301,595,571 +3.17% 162
Sri Lanka Sri Lanka 84,550,766,012 +8.59% 68
Lesotho Lesotho 2,745,901,598 -5.25% 157
Lithuania Lithuania 77,823,656,932 +7.22% 76
Luxembourg Luxembourg 61,989,895,783 +3.75% 85
Latvia Latvia 40,849,953,159 +1.68% 96
Morocco Morocco 145,352,920,911 +0.995% 58
Moldova Moldova 16,579,707,184 +7.92% 129
Madagascar Madagascar 16,429,216,421 +3.8% 130
Maldives Maldives 6,148,427,971 +5.37% 149
Mexico Mexico 1,674,496,758,673 +7.52% 13
Marshall Islands Marshall Islands 314,544,744 +3.12% 178
North Macedonia North Macedonia 14,973,734,979 +3.68% 136
Mali Mali 24,929,896,154 +4.15% 110
Malta Malta 19,908,964,152 +4.41% 117
Myanmar (Burma) Myanmar (Burma) 66,335,706,414 -0.325% 83
Montenegro Montenegro 7,498,460,935 +5% 146
Mongolia Mongolia 18,861,736,916 +11.2% 122
Mozambique Mozambique 18,931,957,198 +4% 121
Mauritania Mauritania 10,791,454,124 +0.943% 142
Mauritius Mauritius 16,186,595,721 +6.33% 132
Malawi Malawi 11,789,280,903 -6.64% 139
Malaysia Malaysia 414,910,324,317 +0.858% 37
Namibia Namibia 12,842,007,922 +1.13% 138
Niger Niger 17,948,518,500 +8.02% 124
Nigeria Nigeria 290,800,579,158 -32.3% 46
Nicaragua Nicaragua 17,375,415,691 +8.02% 126
Netherlands Netherlands 1,130,796,677,918 +1.14% 17
Norway Norway 547,619,093,459 -3.84% 24
Nepal Nepal 43,728,566,187 +3.15% 94
Nauru Nauru 254,038,972 -9.94% 179
New Zealand New Zealand 247,066,939,033 -3.08% 52
Oman Oman 101,804,173,723 +0.71% 65
Pakistan Pakistan 360,169,510,666 -0.0908% 41
Panama Panama 81,094,782,191 +1.77% 71
Peru Peru 256,374,121,483 +6.96% 49
Philippines Philippines 518,146,695,730 +4.48% 27
Papua New Guinea Papua New Guinea 31,059,740,717 +6.75% 103
Poland Poland 787,995,932,631 +7.72% 20
Puerto Rico Puerto Rico 83,046,255,143 +2.58% 70
Portugal Portugal 284,824,883,315 +2.94% 47
Paraguay Paraguay 43,611,163,671 +2.73% 95
Palestinian Territories Palestinian Territories 16,295,064,903 -26.8% 131
Qatar Qatar 219,241,257,235 +3.92% 54
Romania Romania 335,653,415,175 +5.51% 42
Russia Russia 2,236,147,772,038 +5.69% 9
Rwanda Rwanda 14,790,509,312 +6.11% 137
Saudi Arabia Saudi Arabia 1,255,607,286,966 +2.56% 16
Sudan Sudan 36,153,767,105 +13.1% 99
Senegal Senegal 31,045,543,547 +5.31% 104
Singapore Singapore 451,255,703,973 +9.17% 32
Solomon Islands Solomon Islands 1,705,763,897 +1.14% 167
Sierra Leone Sierra Leone 7,256,029,068 -1.15% 147
El Salvador El Salvador 32,452,737,359 +3.86% 101
Somalia Somalia 11,469,521,446 +6.3% 140
Serbia Serbia 76,209,500,022 +6.96% 77
São Tomé & Príncipe São Tomé & Príncipe 653,171,905 +9.55% 175
Suriname Suriname 3,722,270,584 +13.9% 155
Slovakia Slovakia 129,590,380,485 +3.4% 59
Slovenia Slovenia 67,269,510,186 +2.37% 82
Sweden Sweden 621,736,453,865 -3.13% 22
Eswatini Eswatini 4,454,721,873 -3.39% 151
Seychelles Seychelles 2,119,265,861 +7.91% 164
Chad Chad 19,684,619,240 +1.49% 118
Togo Togo 9,596,899,827 +3.15% 143
Thailand Thailand 510,212,864,178 -1.05% 28
Tajikistan Tajikistan 17,507,861,514 +20.2% 125
Turkmenistan Turkmenistan 62,885,456,310 +3.48% 84
Timor-Leste Timor-Leste 2,180,493,931 -22% 163
Trinidad & Tobago Trinidad & Tobago 27,367,427,449 -0.31% 107
Tunisia Tunisia 47,877,752,567 +1.86% 89
Turkey Turkey 1,124,431,545,043 +12.4% 18
Tanzania Tanzania 80,000,272,925 +1.15% 74
Uganda Uganda 50,873,994,246 +8.22% 87
Ukraine Ukraine 184,634,530,924 +5.23% 57
Uruguay Uruguay 73,085,254,275 +8.69% 80
United States United States 28,455,051,806,572 +4.68% 1
Uzbekistan Uzbekistan 109,649,235,867 +11.8% 63
St. Vincent & Grenadines St. Vincent & Grenadines 1,109,177,122 +5.45% 171
Vietnam Vietnam 453,512,405,007 +8.99% 31
Vanuatu Vanuatu 1,291,558,918 +5.13% 169
Samoa Samoa 1,013,886,341 +10.9% 173
Kosovo Kosovo 10,966,664,529 +3.64% 141
South Africa South Africa 390,391,576,221 -4.73% 39
Zambia Zambia 26,958,917,050 +0.85% 109
Zimbabwe Zimbabwe 37,646,160,931 +11.8% 98

The Gross National Income (GNI) measured using the Atlas method (current US$) serves as a significant economic indicator utilized to gauge the composition and growth of economies on a global scale. The Atlas method is designed to smooth out exchange rate fluctuations by employing a three-year average exchange rate, making it an effective tool for accurately assessing the incomes of nations without the volatility associated with annual currency shifts. This approach proves to be invaluable, particularly for developing countries, allowing for a more stable representation of their economic performance. In 2023, the GNI, calculated using this method, reached a staggering median value of approximately 43.61 billion dollars.

The importance of GNI cannot be understated; it serves as a direct reflection of a country's economic health and overall standard of living. Policymakers use this data to make informed decisions regarding fiscal and developmental policies, while investors evaluate GNI as part of their risk assessment when considering investments in a given nation. Further, GNI is also pivotal in international funding, with various financial institutions and aid organizations often basing assistance allocation on the income levels indicated by these figures.

When analyzing GNI, it is essential to understand its relationship with other key economic indicators. The correlation between GNI and Gross Domestic Product (GDP) is particularly noteworthy. While GDP focuses solely on the economic activity within a nation’s borders, GNI accounts for the income residents earn abroad and the remittances sent back home. A nation with high GNI compared to its GDP typically has significant overseas investments and remittance income, showcasing a broader economic engagement relative to its domestic economic activity.

Various factors influence GNI figures, including population growth, employment rates, productivity, levels of household consumption, and international trade relations. For instance, the latest data illustrates that the top five areas by GNI are the United States, China, Japan, Germany, and India, with the United States leading substantially with a GNI of approximately $26.94 trillion. This dominance is likely attributed to its expansive economy, robust technological sector, and global position as a leader in numerous industries.

China's GNI, around $18.88 trillion, reflects its rapid economic growth and increasing global trade integration, making it a formidable economic powerhouse. Japan and Germany, with GNI values of approximately $4.90 trillion and $4.56 trillion respectively, contribute significantly to the global economy, driven by technology and engineering sectors. India, at about $3.65 trillion, showcases how emerging markets are positioned to challenge traditional economic giants through population and consumption growth.

Conversely, the bottom five areas by GNI include Tuvalu, Palau, Nauru, Marshall Islands, and the Federated States of Micronesia, all of which have GNI figures indicating a much smaller economic footprint. For instance, Tuvalu's GNI is a mere $86 million, primarily reflecting its limited economic diversification and heavy reliance on a narrow base of income sources like fishing and some tourism, underscoring the vulnerabilities faced by smaller island nations.

Strategies to bolster GNI involve focusing on sustainable economic growth, enhancing productivity, and expanding international trade relationships. Countries can also improve their GNI through policies that encourage entrepreneurship, innovation, and foreign direct investment, emphasizing diversification to mitigate dependence on a single economic sector.

In terms of solutions, collaborative efforts in regional trade agreements, investments in emerging technologies, and building human capital through education are vital in enhancing GNI, particularly for developing countries. Moreover, addressing income disparity within nations can lead to an overall increase in GNI as more individuals partake in the nation's economic activities.

Despite its many strengths, the GNI indicator is not without flaws. For instance, it does not adequately account for income inequality within countries—two nations may have similar GNI figures but vastly different living standards when wealth is concentrated in the hands of a few. Moreover, issues such as tax avoidance by multinational corporations can distort GNI numbers, leading to inflated perceptions of economic strength in countries considered tax havens.

To summarize, while GNI, using the Atlas method, remains a crucial measure of economic performance on both national and global scales, it must be interpreted with an understanding of its complexities, limitations, and the distinct factors shaping income generation in different regions. The data from 1962 to 2023 demonstrates a notable upward trend in the global GNI, indicative of expanding economic activity and interconnectedness, with 2023 figures forecasted at approximately $106.25 trillion, signaling a resilient recovery and growth pathway following economic disruptions faced in the past few years. As economies continue to evolve, ongoing analysis and adaptation of strategies to enhance GNI will be paramount for prosperity and sustainability.

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