GNI growth (annual %)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 2.75 -149% 62
Argentina Argentina -5.01 +162% 97
Armenia Armenia 2.6 -65.1% 64
Australia Australia 0.53 88
Benin Benin 7.83 +40.5% 12
Burkina Faso Burkina Faso 11.8 +494% 6
Bangladesh Bangladesh 4.56 -21.3% 36
Bulgaria Bulgaria 2.51 +16.3% 67
Bosnia & Herzegovina Bosnia & Herzegovina 2.97 -33% 56
Belarus Belarus 4.19 +942% 39
Bermuda Bermuda 5.59 +195% 25
Brazil Brazil 2.95 -18.8% 57
Brunei Brunei 2.3 -123% 71
Central African Republic Central African Republic 1.54 +31.2% 80
Canada Canada 1.42 -320% 81
Chile Chile 3.53 +32.4% 51
Côte d’Ivoire Côte d’Ivoire 11.1 +48% 8
Cameroon Cameroon 2.13 -21.5% 72
Congo - Kinshasa Congo - Kinshasa 12.5 -81.3% 4
Colombia Colombia 2.6 +70.6% 65
Comoros Comoros 3.42 -13.9% 52
Cape Verde Cape Verde 9.14 +20.7% 11
Costa Rica Costa Rica 4.32 -34.8% 37
Cyprus Cyprus 1.75 +152% 79
Germany Germany 0.237 -77.5% 90
Djibouti Djibouti 3.87 -51.8% 47
Denmark Denmark 4.05 -208% 43
Dominican Republic Dominican Republic 3.86 -16.3% 48
Ecuador Ecuador 0.805 -43.2% 86
Egypt Egypt 0.619 -76.3% 87
Ethiopia Ethiopia 11.1 +37.4% 9
Gabon Gabon 2.37 -135% 68
Georgia Georgia 13.1 +56.1% 3
Ghana Ghana 11 -418% 10
Guinea Guinea 11.3 +474% 7
Gambia Gambia -0.408 -105% 91
Guinea-Bissau Guinea-Bissau 4.92 -10.9% 32
Equatorial Guinea Equatorial Guinea -1.21 -48.6% 92
Guatemala Guatemala 5.63 -17.7% 24
Honduras Honduras 6 +36.6% 19
Croatia Croatia 5.72 -7.02% 23
Haiti Haiti -2.61 -730% 95
Indonesia Indonesia 4.85 +56.2% 34
India India 4.15 -69.7% 41
Iran Iran 2.03 -165% 76
Iraq Iraq -1.85 -89% 94
Israel Israel 1.79 +472% 78
Italy Italy 1.19 -40.9% 83
Kenya Kenya 4.86 -6.4% 33
Cambodia Cambodia 2.31 -63% 70
Libya Libya 5.02 -136% 31
Sri Lanka Sri Lanka 7.25 -414% 14
Morocco Morocco 4.78 -25.5% 35
Moldova Moldova 3.88 +137% 46
Madagascar Madagascar 2.84 +10.2% 60
Mexico Mexico 1.07 -88.6% 84
North Macedonia North Macedonia 3.78 +39.9% 49
Mali Mali 5.93 +31% 21
Malta Malta 5.32 -21.1% 26
Montenegro Montenegro 2.07 -73.1% 75
Mongolia Mongolia 4.23 -79.2% 38
Mozambique Mozambique 3.32 -26.4% 53
Malaysia Malaysia 5.22 +95.7% 28
Namibia Namibia 6.46 +0.188% 16
Niger Niger 13.5 +56.1% 2
Nicaragua Nicaragua 7.23 -49.3% 15
Nepal Nepal 4.05 +144% 44
Pakistan Pakistan 4.01 +7.62% 45
Peru Peru 5.93 +103% 22
Philippines Philippines 7.56 -34.2% 13
Poland Poland 2.86 +83% 59
Portugal Portugal 4.17 -7.22% 40
Paraguay Paraguay 2.87 -20.5% 58
Palestinian Territories Palestinian Territories -27.5 +411% 99
Romania Romania 3.19 -13.9% 54
Rwanda Rwanda 14 +80.1% 1
Saudi Arabia Saudi Arabia -1.48 -65.9% 93
Sudan Sudan -14.6 -49.5% 98
Senegal Senegal 5.15 +4.93% 29
Singapore Singapore 6.18 -285% 17
Sierra Leone Sierra Leone -2.79 -154% 96
El Salvador El Salvador 1.93 -60.3% 77
Somalia Somalia 5.99 -11.2% 20
Serbia Serbia 4.07 -36.5% 42
Slovakia Slovakia 2.33 -43.8% 69
Sweden Sweden 1.07 +2,867% 85
Seychelles Seychelles 2.77 -28.8% 61
Chad Chad 2.1 +459% 73
Togo Togo 5.14 -25% 30
Tunisia Tunisia 1.35 -79.1% 82
Tanzania Tanzania 6.04 +28% 18
Uganda Uganda 3.73 -3.96% 50
Ukraine Ukraine 3.15 -15.3% 55
Uruguay Uruguay 2.57 +3.12% 66
United States United States 2.73 -5.41% 63
Samoa Samoa 12.3 +2.97% 5
Kosovo Kosovo 5.25 -8.03% 27
South Africa South Africa 0.311 -418% 89
Zimbabwe Zimbabwe 2.08 -64% 74

GNI growth (annual %) is a critical economic indicator that reflects the annual percentage increase in the Gross National Income (GNI) at market prices, adjusted for inflation. GNI is an essential measure as it includes all income generated by residents of a country, regardless of whether it is sourced domestically or abroad. Monitoring GNI growth provides insights into the economic health and expansion of a nation, showcasing how well it can enhance the living standards of its population over time.

The importance of GNI growth cannot be overstated. It is often viewed alongside other economic indicators to evaluate a country’s overall performance. High GNI growth translates to increased income levels which can support improved public services, infrastructure, and welfare programs. It plays a vital role in informing economic policy and investment decisions, as policymakers use GNI growth data to allocate resources effectively and manage economic challenges. Furthermore, GNI serves as a cornerstone for assessments of poverty reduction efforts, as higher growth often correlates with lower poverty levels and enhanced employment opportunities.

Relationships exist between GNI growth and other critical economic indicators such as GDP growth, unemployment rates, inflation, and trade balances. GNI growth is usually expected to be aligned with GDP growth; however, notable differences can arise depending on how much income a nation earns from overseas investments. For instance, a country could witness high GDP growth, yet if it has significant outward flows of profit to foreign stakeholders, its GNI growth might lag. This relationship accentuates the importance of understanding the components of growth and not merely the figures presented by GDP.

Various factors can significantly affect GNI growth. Economic policies, for instance, can boost or hinder growth; favorable policies might encourage investment, while restrictive practices might deter it. External factors like global economic trends, commodity prices, and geopolitical stability play unique roles as well. In addition, social elements, including education, healthcare, and workforce skills, can directly influence the productivity of a nation, thus affecting GNI growth. For example, investments in education can lead to a more skilled workforce that enhances productivity and innovation, ultimately resulting in higher GNI growth.

Strategies to enhance GNI growth often involve comprehensive economic plans that foster both internal and external investment. Governments may focus on creating favorable business environments through regulatory reforms, tax incentives, or infrastructure development to attract foreign direct investment (FDI). Additionally, investments in human capital can drive GNI upward, leading to innovation and improved efficiencies. Countries can enhance their trade relations, reducing tariffs and fostering international partnerships to expand market access for domestic products. A holistic approach that combines policy adjustments, infrastructure investments, and social programs can yield considerable benefits over time.

Despite its utility, GNI growth is not without its flaws. Relying solely on this metric can obscure underlying inequality issues, as benefits from growth may disproportionately favor wealthier segments of society. Moreover, GNI growth does not account for environmental sustainability, which is increasingly crucial as global challenges like climate change demand attention alongside economic expansion. The measure can also mask economic distress when growth is limited to specific sectors or is heavily reliant on external factors. Furthermore, in some cases, statistical discrepancies such as underreporting of income can distort true GNI figures.

Analyzing the latest GNI growth figures for 2023 reveals a median value of 3.82%, indicating stable economic activity in many regions. At the top of the scale, Libya stands out with an impressive GNI growth rate of 11.37%, likely reflecting recovery efforts in a nation with significant wealth from natural resources seeking to stabilize and rebuild its economy. Other high performers include the Philippines (10.53%), Congo - Kinshasa (10.23%), Samoa (9.81%), and Congo - Brazzaville (9.8%), each indicative of nation-specific conditions fueling growth, such as growth in sectors like technology, natural resources, or tourism.

Conversely, the lowest GNI growth figures from regions like Sudan, with a staggering -19.06%, signal severe economic and political turmoil, stressing the need for robust governance and development strategies. The Palestinian Territories (-9.19%) and Sri Lanka (-2.92%) illustrate ongoing struggles with conflict and economic mismanagement, while even developed nations like Finland (-2.1%) and Haiti (-1.97%) showcase vulnerabilities that can lead to stagnation or decline in growth, emphasizing that no region is immune to economic challenges.

In the broader historical context, world values of GNI growth reflect economic fluctuations over the years. From a high of 6.43% in 2021 as countries began to emerge from pandemic-related downturns to a drop to 3.01% by 2023, the data reveal the impact of global events—including the recent economic disruptions. A review of historical data showcases peaks and troughs, indicating periods of healthy growth punctuated by economic crises such as the global financial collapse in 2008 and the pandemic-induced contraction in 2020, where GNI growth plummeted to -3.1%. This historical perspective serves not only for academic interest but also as a lens through which policymakers can strategize for resilient futures.

In conclusion, GNI growth (annual %) is a multifaceted indicator essential for evaluating a nation’s economic health and potential. It interconnects with various economic and social indicators, shaped by complex factors that necessitate comprehensive strategies for sustainable growth. While GNI growth shows promising figures in some regions, the stark contrasts between high and low performers highlight the challenges faced globally. The dynamic nature of this metric underscores the continual need for careful analysis and strategic planning to foster economic resilience and shared prosperity.

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