GNI per capita growth (annual %)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola -0.334 -96.1% 79
Argentina Argentina -5.34 +143% 92
Armenia Armenia 0.264 -96.5% 75
Australia Australia -1.3 -433% 83
Benin Benin 5.21 +76.9% 20
Burkina Faso Burkina Faso 9.27 -3,105% 6
Bangladesh Bangladesh 3.3 -26.9% 36
Bulgaria Bulgaria 2.54 +3.86% 50
Bosnia & Herzegovina Bosnia & Herzegovina 3.64 -28.2% 32
Belarus Belarus 4.7 +396% 23
Bermuda Bermuda 5.69 +188% 18
Brazil Brazil 2.54 -21.4% 51
Brunei Brunei 1.46 -114% 62
Central African Republic Central African Republic -1.86 -1,888% 85
Canada Canada -1.51 -59.3% 84
Chile Chile 2.97 +40.8% 42
Côte d’Ivoire Côte d’Ivoire 8.42 +74% 11
Cameroon Cameroon -0.507 -1,796% 80
Congo - Kinshasa Congo - Kinshasa 8.89 -85.5% 8
Colombia Colombia 1.5 +283% 59
Comoros Comoros 1.48 -25.6% 60
Cape Verde Cape Verde 8.61 +22.3% 10
Costa Rica Costa Rica 3.82 -30% 31
Germany Germany 0.726 -20.6% 69
Djibouti Djibouti 2.47 -62.3% 52
Denmark Denmark 3.43 -164% 34
Dominican Republic Dominican Republic 2.99 -19% 41
Ecuador Ecuador -0.059 -111% 78
Egypt Egypt -1.11 -224% 82
Ethiopia Ethiopia 8.22 +56% 12
Gabon Gabon 0.184 -102% 77
Georgia Georgia 14.4 +73.1% 2
Ghana Ghana 8.94 -269% 7
Guinea Guinea 8.71 -1,835% 9
Gambia Gambia -2.65 -148% 86
Guinea-Bissau Guinea-Bissau 2.63 -17.2% 48
Equatorial Guinea Equatorial Guinea -3.56 -24% 88
Guatemala Guatemala 4.02 -22.9% 28
Hong Kong SAR China Hong Kong SAR China 5.14 +229% 21
Honduras Honduras 4.22 +61.7% 25
Croatia Croatia 5.54 -8.31% 19
Haiti Haiti -3.73 +403% 89
Indonesia Indonesia 4 +78.5% 29
India India 3.22 -74.6% 38
Iraq Iraq -3.91 -79% 90
Israel Israel 0.53 -119% 71
Italy Italy 1.16 -39.1% 65
Kenya Kenya 2.83 -9.59% 45
Cambodia Cambodia 1.06 -78.3% 66
Libya Libya 3.94 -126% 30
Sri Lanka Sri Lanka 7.84 -570% 13
Moldova Moldova 6.86 +50.2% 14
Madagascar Madagascar 0.362 +358% 72
Mexico Mexico 0.205 -97.6% 76
North Macedonia North Macedonia 5.84 +100% 16
Mali Mali 2.86 +95.2% 44
Malta Malta 1.36 -47% 64
Montenegro Montenegro 2.02 -73.8% 56
Mongolia Mongolia 2.94 -84.3% 43
Mozambique Mozambique 0.347 -76.4% 73
Malaysia Malaysia 3.48 +28.6% 33
Namibia Namibia 3.37 +3.27% 35
Niger Niger 9.8 +92.1% 5
Nicaragua Nicaragua 5.79 -54.4% 17
Nepal Nepal 4.2 +143% 26
Pakistan Pakistan 2.46 +15% 53
Peru Peru 4.77 +167% 22
Philippines Philippines 6.67 -37% 15
Poland Poland 3.23 +67% 37
Portugal Portugal 3.02 +0.774% 40
Paraguay Paraguay 1.61 -31.4% 58
Romania Romania 3.13 -13.9% 39
Rwanda Rwanda 11.6 +113% 3
Saudi Arabia Saudi Arabia -5.94 -31.5% 93
Senegal Senegal 2.74 +12.5% 47
Singapore Singapore 4.08 -151% 27
Sierra Leone Sierra Leone -4.83 -265% 91
El Salvador El Salvador 1.47 -66.4% 61
Somalia Somalia 2.36 -32.7% 55
Serbia Serbia 4.63 -34.4% 24
Slovakia Slovakia 2.41 -29.6% 54
Sweden Sweden 0.733 -216% 68
Seychelles Seychelles 1.43 -64.1% 63
Chad Chad -2.83 -31.3% 87
Togo Togo 2.81 -36% 46
Tunisia Tunisia 0.714 -87.6% 70
Uganda Uganda 0.912 -10.1% 67
Uruguay Uruguay 2.61 +1.45% 49
United States United States 1.63 -10.3% 57
Samoa Samoa 11.6 +3.4% 4
Kosovo Kosovo 16 +44.1% 1
South Africa South Africa -1.1 -16.8% 81
Zimbabwe Zimbabwe 0.281 -93% 74

The Gross National Income (GNI) per capita growth (annual %) is an essential economic indicator that reflects the annual change in GNI per capita expressed as a percentage. GNI measures the total income earned by a nation's residents and businesses, including any income earned abroad, divided by the population. This statistic provides a comprehensive understanding of how the economic prosperity of a country is evolving on a per-person basis, making it critical for policymakers, economists, and researchers.

The importance of GNI per capita growth lies in its ability to highlight living standards and economic health. A consistent increase in GNI per capita indicates that individuals are gaining wealth, which can lead to increased consumption, improved living standards, and a reduction in poverty. Conversely, a decline in GNI per capita may signal economic distress, highlighting potential problems such as unemployment, reduced investment, or fiscal mismanagement. Additionally, GNI per capita growth can be a powerful tool for international comparisons, aiding in the assessment of economic progress between nations and over time.

GNI per capita growth is interconnected with other important economic indicators, including GDP growth, unemployment rates, and income inequality. For example, robust GDP growth generally leads to higher GNI per capita growth, as a thriving economy typically produces more income for residents. However, if income gains are not distributed equitably, GNI per capita may still mask underlying issues of income inequality. Furthermore, unemployment rates can negatively impact GNI per capita growth. High unemployment reduces overall income levels and can hinder economic activity, leading to stagnation or decline in GNI per capita.

Several factors influence GNI per capita growth, including economic policies, investment levels, labor market conditions, social stability, and external economic influences. Effective economic policies that promote investment and innovation can drive growth in GNI per capita. For instance, policies focused on education and skills development can enhance labor productivity, leading to higher incomes across the workforce. Additionally, external factors such as global trade dynamics and foreign investment flows can significantly impact national income levels, affecting overall growth.

To enhance GNI per capita growth, countries often pursue various strategies and solutions. Investment in infrastructure, education, and healthcare is paramount, as these sectors contribute significantly to long-term economic stability and growth. Policies that foster a favorable business environment, including tax incentives and streamlined regulatory processes, can attract foreign direct investment and stimulate domestic entrepreneurship. Furthermore, promoting research and development initiatives can boost innovation, leading to new industries and job creation, both contributing to increased GNI per capita.

Despite its relevance, GNI per capita growth is not without flaws. While it provides a snapshot of economic health, it does not account for income distribution within a country, potentially masking significant disparities between wealth and poverty. Moreover, GNI per capita growth may overlook environmental factors, leading to unsustainable practices that can jeopardize future income and prosperity. It is crucial to complement GNI data with additional metrics, such as the Human Development Index (HDI) or measures of inequality, to achieve a more holistic understanding of economic health and citizen well-being.

Analyzing the latest available data for 2023 reveals that the world median GNI per capita growth is approximately 2.63%. This figure is indicative of a moderate level of growth, showing that many countries are experiencing increases in national income per person. Among the top performers, Libya leads with an impressive growth rate of 10.12%, followed by the Philippines at 9.56%, Samoa at 9.1%, Armenia at 7.48%, and India at 7.23%. These countries demonstrate dynamic economies that are likely benefiting from positive investment trends, remittances, and governmental reforms aimed at enhancing economic productivity.

However, the data also reveals areas of concern, particularly among the bottom five performers. Sudan is experiencing a staggering decline of -13.11%, followed by the Palestinian Territories at -11.53%. Other negative performers include Denmark, Canada, and Finland, showing negative growth rates of -5.36%, -3.79%, and -3.55%, respectively. Such significant declines in GNI per capita growth signal potential crises, including political instability, economic downturns, or shifts in trade relationships. For example, Denmark's decline could point to challenging economic transitions, despite its previously strong economic performance.

Historically, observing changes from 1996 to 2023, it is apparent that the world has experienced both highs and lows in GNI per capita growth. The late 1990s and early 2000s were characterized by fluctuations, with notable highs such as the peak year of 2010 at 3.23%. However, 2020 marked a significant downturn with -4.08%, a reflection of the economic impacts of the COVID-19 pandemic. The rebound seen in 2021 with a growth of 5.56% illustrates the potential for recovery, underscoring the resiliency of global economies even amidst challenges.

In conclusion, while GNI per capita growth is a vital measure of economic prosperity, it must be interpreted with caution. Policymakers and stakeholders should consider a range of economic indicators to gain a more comprehensive view of economic health and societal well-being, ensuring growth leads to equitable and sustainable development.

                    
# 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.KD.ZG'

# 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.KD.ZG'

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