Prevalence of anemia among pregnant women (%)

Source: worldbank.org, 03.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 31.6 +0.317% 63
Angola Angola 45.9 +0.438% 21
Albania Albania 25.5 +0.791% 96
Andorra Andorra 16.3 0% 129
United Arab Emirates United Arab Emirates 28.6 0% 75
Argentina Argentina 24.4 -0.813% 105
Armenia Armenia 22.3 +0.905% 117
Antigua & Barbuda Antigua & Barbuda 25.2 +0.398% 99
Australia Australia 13.9 -0.714% 140
Austria Austria 16.7 +0.602% 126
Azerbaijan Azerbaijan 34.1 +0.59% 52
Burundi Burundi 44.7 +1.82% 26
Belgium Belgium 13.9 +1.46% 140
Benin Benin 60.2 +0.166% 2
Burkina Faso Burkina Faso 49.5 +0.61% 16
Bangladesh Bangladesh 38.6 0% 40
Bulgaria Bulgaria 25.6 +0.392% 95
Bahrain Bahrain 30.1 +0.669% 67
Bahamas Bahamas 24.1 +0.417% 107
Bosnia & Herzegovina Bosnia & Herzegovina 26 0% 92
Belarus Belarus 24.4 +0.412% 105
Belize Belize 26.8 +0.752% 86
Bolivia Bolivia 25.5 -0.778% 96
Brazil Brazil 23.1 +1.32% 112
Barbados Barbados 25.4 +0.794% 97
Brunei Brunei 21.1 +0.476% 120
Bhutan Bhutan 32.6 0% 58
Botswana Botswana 31.4 +0.965% 64
Central African Republic Central African Republic 48.4 +0.415% 18
Canada Canada 15.1 0% 135
Switzerland Switzerland 15.1 +0.667% 135
Chile Chile 21.4 +0.469% 119
China China 14.2 -0.699% 139
Côte d’Ivoire Côte d’Ivoire 57.3 +0.703% 3
Cameroon Cameroon 41 +0.49% 35
Congo - Kinshasa Congo - Kinshasa 45.1 +0.895% 24
Congo - Brazzaville Congo - Brazzaville 46.8 -0.426% 19
Colombia Colombia 27 +1.12% 84
Comoros Comoros 35.5 +0.282% 48
Cape Verde Cape Verde 43.9 +0.228% 27
Costa Rica Costa Rica 23.3 +1.3% 111
Cuba Cuba 26.7 +1.14% 87
Cyprus Cyprus 17 +1.19% 123
Czechia Czechia 24.8 0% 102
Germany Germany 15.4 +0.654% 134
Djibouti Djibouti 37.2 +0.813% 42
Dominica Dominica 27.2 +0.741% 82
Denmark Denmark 16.9 +0.595% 124
Dominican Republic Dominican Republic 27.2 +0.741% 82
Algeria Algeria 35.2 +1.15% 49
Ecuador Ecuador 29.5 +0.683% 70
Egypt Egypt 36.3 +3.12% 44
Eritrea Eritrea 41.5 +0.973% 32
Spain Spain 16.3 0% 129
Estonia Estonia 24.8 +0.405% 102
Ethiopia Ethiopia 26.2 +1.95% 90
Finland Finland 15.1 0% 135
Fiji Fiji 30.7 0% 66
France France 14.8 +1.37% 136
Micronesia (Federated States of) Micronesia (Federated States of) 25.9 +0.388% 93
Gabon Gabon 54.8 +0.183% 5
United Kingdom United Kingdom 14.3 0% 138
Georgia Georgia 31.9 +0.949% 62
Ghana Ghana 45.3 +0.221% 23
Guinea Guinea 50.2 0% 15
Gambia Gambia 54.1 -0.734% 7
Guinea-Bissau Guinea-Bissau 51.1 +0.393% 13
Equatorial Guinea Equatorial Guinea 42.9 +0.234% 29
Greece Greece 16.6 +0.606% 127
Grenada Grenada 26.1 +0.772% 91
Guatemala Guatemala 20.8 +2.46% 121
Guyana Guyana 31.9 0% 62
Honduras Honduras 24.8 +1.64% 102
Croatia Croatia 24.6 +0.408% 104
Haiti Haiti 45.5 0% 22
Hungary Hungary 24.8 +0.405% 102
Indonesia Indonesia 27.1 -1.09% 83
India India 46.6 0% 20
Ireland Ireland 14.7 0% 137
Iran Iran 27.9 +2.57% 78
Iraq Iraq 32.9 +1.86% 57
Iceland Iceland 15.1 0% 135
Israel Israel 15.6 +0.645% 132
Italy Italy 17.1 +0.588% 122
Jamaica Jamaica 26.6 +1.14% 88
Jordan Jordan 33.3 +0.604% 55
Japan Japan 22.5 -1.75% 116
Kazakhstan Kazakhstan 32.3 +0.937% 60
Kenya Kenya 39.8 +0.759% 36
Kyrgyzstan Kyrgyzstan 42.5 +1.67% 30
Cambodia Cambodia 41 -0.966% 35
Kiribati Kiribati 29.4 0% 71
St. Kitts & Nevis St. Kitts & Nevis 24.9 +0.81% 101
South Korea South Korea 15.9 -1.85% 131
Kuwait Kuwait 28.5 +0.707% 76
Laos Laos 30 -0.99% 68
Lebanon Lebanon 33.6 +1.51% 54
Liberia Liberia 49.2 +1.03% 17
Libya Libya 32.1 +1.26% 61
St. Lucia St. Lucia 25.4 +0.395% 97
Sri Lanka Sri Lanka 22.9 -2.55% 114
Lesotho Lesotho 35.8 +1.99% 46
Lithuania Lithuania 24.4 0% 105
Luxembourg Luxembourg 15.5 0% 133
Latvia Latvia 21.9 0% 118
Morocco Morocco 33.7 +1.81% 53
Monaco Monaco 15.9 0% 131
Moldova Moldova 27.4 +0.366% 81
Madagascar Madagascar 39.3 +1.29% 38
Maldives Maldives 41.3 -0.959% 33
Mexico Mexico 25.7 +1.58% 94
Marshall Islands Marshall Islands 25.5 -0.778% 96
North Macedonia North Macedonia 24.4 +0.412% 105
Mali Mali 62.1 +0.485% 1
Malta Malta 16.7 +0.602% 126
Myanmar (Burma) Myanmar (Burma) 43.4 +0.696% 28
Montenegro Montenegro 29.5 +0.683% 70
Mongolia Mongolia 27.9 +0.36% 78
Mozambique Mozambique 54.6 +1.11% 6
Mauritania Mauritania 53.9 +0.56% 8
Mauritius Mauritius 32.4 +0.935% 59
Malawi Malawi 38.6 +1.58% 40
Malaysia Malaysia 28.8 -1.03% 74
Namibia Namibia 28.3 +1.43% 77
Niger Niger 55.9 +0.359% 4
Nigeria Nigeria 45 -0.442% 25
Netherlands Netherlands 16.5 0% 128
Norway Norway 16.3 0% 129
Nepal Nepal 35.2 -0.565% 49
Nauru Nauru 24.3 0% 106
New Zealand New Zealand 13.3 +0.758% 141
Oman Oman 35.6 +0.565% 47
Pakistan Pakistan 39.1 -1.26% 39
Panama Panama 27.5 +1.1% 80
Peru Peru 28.8 +1.05% 74
Philippines Philippines 24 -3.61% 108
Palau Palau 25.9 +0.388% 93
Papua New Guinea Papua New Guinea 30.9 +0.325% 65
Poland Poland 24.6 +0.408% 104
North Korea North Korea 29.7 -0.669% 69
Portugal Portugal 16.3 +0.617% 129
Paraguay Paraguay 27.8 +1.09% 79
Palestinian Territories Palestinian Territories 31.9 +0.949% 62
Qatar Qatar 24.9 -0.4% 101
Romania Romania 25.2 0% 99
Russia Russia 24.8 +0.405% 102
Rwanda Rwanda 23.9 +1.7% 109
Saudi Arabia Saudi Arabia 20.8 +0.971% 121
Sudan Sudan 38 +1.33% 41
Senegal Senegal 50.9 -0.586% 14
Singapore Singapore 16.9 +0.595% 124
Solomon Islands Solomon Islands 34.8 +0.288% 51
Sierra Leone Sierra Leone 53.7 +0.94% 9
El Salvador El Salvador 23 +0.877% 113
San Marino San Marino 16.2 +0.621% 130
Somalia Somalia 52.8 +0.38% 10
Serbia Serbia 25.1 0% 100
South Sudan South Sudan 42.2 +0.957% 31
São Tomé & Príncipe São Tomé & Príncipe 42.9 +0.704% 29
Suriname Suriname 26.9 +1.13% 85
Slovakia Slovakia 25.3 +0.397% 98
Slovenia Slovenia 25.3 +0.397% 98
Sweden Sweden 16.8 +0.599% 125
Eswatini Eswatini 30.1 +1.35% 67
Seychelles Seychelles 27.2 +0.741% 82
Syria Syria 35.2 +1.15% 49
Chad Chad 51.2 +0.196% 12
Togo Togo 52.6 +0.19% 11
Thailand Thailand 23.8 -1.65% 110
Tajikistan Tajikistan 39.6 +1.28% 37
Turkmenistan Turkmenistan 35.9 +1.13% 45
Timor-Leste Timor-Leste 30.7 0% 66
Tonga Tonga 22.6 0% 115
Trinidad & Tobago Trinidad & Tobago 26.3 +1.15% 89
Tunisia Tunisia 33.1 +0.915% 56
Turkey Turkey 31.9 +0.631% 62
Tuvalu Tuvalu 25.7 +0.784% 94
Tanzania Tanzania 46.6 -0.214% 20
Uganda Uganda 35 +0.865% 50
Ukraine Ukraine 24.1 +0.837% 107
Uruguay Uruguay 24.7 +0.407% 103
United States United States 10.2 +2% 142
Uzbekistan Uzbekistan 35.6 +1.14% 47
St. Vincent & Grenadines St. Vincent & Grenadines 24.7 +0.816% 103
Venezuela Venezuela 29.1 +0.692% 73
Vietnam Vietnam 25.3 -0.394% 98
Vanuatu Vanuatu 32.3 +0.623% 60
Samoa Samoa 25.1 0% 100
Yemen Yemen 41.2 +1.23% 34
South Africa South Africa 29.3 +0.687% 72
Zambia Zambia 36.7 +0.548% 43
Zimbabwe Zimbabwe 30.1 +0.333% 67

The prevalence of anemia among pregnant women is a critical public health indicator, reflecting not only maternal health but also the overall well-being of populations. Anemia in pregnancy, characterized by low hemoglobin levels, can result in numerous adverse outcomes for both mothers and their infants. The latest data from 2019 shows a median prevalence of 27.7% among pregnant women worldwide, highlighting a significant health concern in various regions. This figure ought to be contextualized with the broader implications of anemia. Low iron levels can affect a mother's ability to cope with the physiological demands of pregnancy, potentially leading to complications such as preterm delivery, low birth weight, and increased maternal morbidity. The importance of addressing this indicator extends beyond maternal health to influence child health outcomes; children born to anemic mothers are at increased risk of developmental issues and mortality during the neonatal period. Analyzing the data reveals stark geographical disparities in the prevalence of anemia among pregnant women. The highest rates are observed in Mali (59.0%), Benin (58.1%), Yemen (57.5%), Senegal (56.1%), and Nigeria (55.9%). These regions share characteristics such as high rates of poverty, limited access to healthcare, and inadequate nutrition, all of which contribute to the prevalence of anemia. These nations face significant challenges related to the availability of iron-rich foods, effective healthcare services, and maternal education concerning nutrition and anemia prevention. In contrast, areas with the lowest prevalence of anemia among pregnant women are the United States (11.5%), Guatemala (12.7%), South Korea (14.7%), Switzerland (14.9%), and Luxembourg (15.0%). These countries showcase advanced healthcare systems, better access to a varied diet, and public health initiatives emphasizing maternal health. This contrast underscores the critical relationship between socioeconomic status, healthcare access, and nutritional education in influencing anemia rates. Globally, the trend from 2000 to 2019 demonstrates a slow but notable decline in the prevalence of anemia among pregnant women, reducing from a high of 40.9% in 2000 to 36.5% in 2019. Although this indicates progress in some regions, the median prevalence still signifies a public health challenge. Such slow progress suggests that while initiatives to reduce anemia are being implemented, there remains much work to be done to reach lower prevalence levels that can ensure safer pregnancies. Several factors affect the prevalence of anemia among pregnant women, including dietary practices, socioeconomic conditions, and cultural beliefs. Nutritional deficiencies, particularly in iron, folate, and vitamin B12, can increase vulnerability to anemia. Socioeconomic factors, including income levels and education about nutrition, can also play a crucial role. For instance, women with higher educational attainment are often more aware of the health implications of anemia and may take proactive measures to prevent it during pregnancy. Strategies to reduce anemia prevalence among pregnant women must encompass a multifaceted approach. Public health programs should focus on enhancing maternal nutrition through education, supplementation programs targeting vulnerable populations, and improving access to healthcare services. Iron supplementation and nutrition education can effectively lower the rates of anemia, particularly in low-resource settings. Moreover, policies aimed at improving food security and access to iron-rich foods can mitigate the risk of anemia. Collaborative efforts involving governments, NGOs, and health organizations can lead to comprehensive strategies that address the various underlying causes of anemia. Despite the existing knowledge and strategies for addressing anemia in pregnant women, flaws remain in the execution of these solutions. In many low-income countries, healthcare systems are overstretched, and insufficient resources may lead to poor implementation of nutritional programs. Additionally, cultural barriers and misinformation about dietary needs can hinder the effectiveness of public health campaigns. There is also a need for ongoing research to continually adapt and target interventions to meet the ever-changing demographics and health needs of populations. In conclusion, the prevalence of anemia among pregnant women is more than just a statistic; it reflects broader health, societal, and economic issues. Addressing anemia requires a coordinated effort that combines education, health policy, and community engagement to achieve better health outcomes for mothers and infants alike. The data from 2019 serves as a reminder of the journey ahead in ensuring that every pregnant woman has access to the resources needed to overcome anemia, fostering healthier pregnancies and improved infant well-being.

                    
# 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 = 'SH.PRG.ANEM'

# 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 <- 'SH.PRG.ANEM'

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