Poverty headcount ratio at national poverty lines (% of population)

Source: worldbank.org, 01.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Argentina Argentina 39.2 +5.09% 4
Armenia Armenia 24.8 -6.42% 14
Belgium Belgium 12.3 -6.82% 29
Bangladesh Bangladesh 18.7 22
Bulgaria Bulgaria 20.6 -10% 19
Belarus Belarus 3.9 -4.88% 38
Bolivia Bolivia 37.7 +3.57% 5
Bhutan Bhutan 12.4 28
Chile Chile 6.5 -39.8% 34
Colombia Colombia 36.6 -7.81% 6
Costa Rica Costa Rica 25.5 -2.67% 12
Ecuador Ecuador 25.2 -9.03% 13
Spain Spain 20.2 -0.98% 21
Estonia Estonia 22.5 -1.32% 16
Finland Finland 12.2 -3.94% 30
Georgia Georgia 15.6 -10.9% 24
Indonesia Indonesia 9.5 -5.94% 33
Kazakhstan Kazakhstan 5.2 0% 36
Latvia Latvia 22.5 0% 16
Morocco Morocco 3.9 -18.8% 38
Moldova Moldova 31.1 +26.9% 8
Mexico Mexico 36.3 -17.3% 7
Mongolia Mongolia 27.1 10
Nepal Nepal 20.3 20
Peru Peru 27.5 +6.18% 9
Poland Poland 11.7 -3.31% 31
Paraguay Paraguay 24.7 -8.18% 15
Romania Romania 21.1 -0.472% 18
El Salvador El Salvador 26.6 +8.13% 11
Somalia Somalia 54.4 2
Slovenia Slovenia 12.7 +4.96% 27
Sweden Sweden 16.1 +0.625% 23
Chad Chad 44.8 +5.91% 3
Thailand Thailand 5.4 -14.3% 35
Tajikistan Tajikistan 21.7 -15.2% 17
Turkey Turkey 13.9 -3.47% 26
Uruguay Uruguay 9.9 32
Uzbekistan Uzbekistan 14.1 -17.1% 25
Vietnam Vietnam 4.3 -10.4% 37
Zambia Zambia 60 +10.3% 1

The Poverty headcount ratio at national poverty lines is a critical indicator that assesses the percentage of a population living below the national poverty line. National poverty lines are typically defined by each country based on various parameters, including income levels, consumption, and basic needs. This measure is instrumental in gauging the level of economic distress faced by citizens, fostering a deeper understanding of the nature of poverty within different socio-economic contexts.

The importance of the poverty headcount ratio cannot be overstated, as it provides valuable insights into the well-being of a nation's citizens. High percentages indicate widespread poverty, often correlating with inadequate access to basic necessities such as food, clean water, shelter, education, and healthcare. By tracking this indicator over time, governments and organizations can evaluate the impact of policies and programs aimed at poverty reduction, identifying effective strategies and areas that require further intervention.

This indicator is intimately linked with other socio-economic metrics, such as GDP growth, unemployment rates, and education levels. A downward trend in the poverty headcount often reflects improvements in employment opportunities or increases in minimum wages. Conversely, stagnation or an increase in poverty ratios can signal economic downturns or failures in policy implementation. Additionally, literacy and education impact the poverty headcount; higher levels of education typically correspond with lower poverty rates as individuals become more employable and capable of escaping the cycle of poverty.

Several factors affect the poverty headcount ratio. Economic conditions play a central role; fluctuating job markets, inflation, and economic recessions can deeply impact citizens' economic stability. Social factors, such as family structure, healthcare access, and child education, are equally significant. In many cases, systemic inequalities—rooted in race, gender, or ethnicity—contribute to persistent poverty within certain demographics. When communities face historical disadvantages, reintegrating marginalized populations into the economy becomes a more complex challenge.

Analyzing data from 2023, the median poverty headcount ratio stands at an alarming 11.0%. However, interpreting this figure necessitates a closer examination of the circumstances in specific regions. For example, Honduras displays a staggering poverty headcount of 64.1%. This significant percentage indicates that a vast majority of citizens in Honduras live under severe economic constraints, pointing towards systemic issues such as inadequate educational infrastructure, limited job opportunities, and political instability. In contrast, Uzbekistan and Indonesia show poverty headcounts of 11.0% and 9.4%, respectively, suggesting that a relatively smaller, yet still concerning, portion of their populations live in poverty. This might reflect better economic conditions or more effective social safety nets in comparison to Honduras.

Strategies to combat poverty should be multifaceted. First and foremost, economic policies must prioritize job creation and skills training to foster employment opportunities, particularly for vulnerable groups. Investments in education, particularly for girls and marginalized communities, can empower individuals with the skills needed for higher-paying jobs. Additionally, access to healthcare must be enhanced, as health issues can push families into poverty. Governments can also implement social protection programs, including financial assistance and food security initiatives, specifically targeting low-income populations to ensure their immediate needs are met.

Collaboration with international organizations is also paramount. Countries can benefit from exchanging best practices and financial resources through partnerships with organizations such as the World Bank, which has a vested interest in monitoring and alleviating poverty globally. Furthermore, civil society and local organizations can play a pivotal role in understanding community-specific needs, tailoring approaches that resonate with the people they serve.

Despite the measures taken, flaws remain in how poverty is evaluated and addressed. One significant issue is the definition of national poverty lines, which can vary drastically between countries. This variability can mask the true extent of poverty in certain regions, complicating comparisons across nations. Furthermore, many national poverty lines may not capture the full spectrum of deprivation, as they often focus exclusively on income rather than considering other dimensions such as social exclusion or access to essential services.

Another concern relates to data collection and the periodic nature of poverty assessments. Many countries may not have accurate, up-to-date statistics or may underreport figures due to political pressures or a lack of capacity, leading to an unclear picture of poverty levels. Therefore, it is essential for nations to invest in robust data collection systems that accurately reflect the socio-economic conditions faced by their populations.

In summary, the poverty headcount ratio at national poverty lines provides a critical lens through which to view economic well-being and social stability. It reflects not just the fiscal health of individuals, but also the holistic environment in which they live, including access to education, healthcare, and employment opportunities. By understanding the intricacies governing this indicator, strategies to combat poverty can be better designed and effectively implemented, moving towards a world where fewer individuals experience the harsh realities of poverty.

                    
# 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 = 'SI.POV.NAHC'

# 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 <- 'SI.POV.NAHC'

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