Number of maternal deaths

Source: worldbank.org, 03.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 7,600 -6.17% 5
Angola Angola 2,500 0% 17
Albania Albania 2 0% 99
Andorra Andorra 0 101
United Arab Emirates United Arab Emirates 3 +50% 98
Argentina Argentina 170 -15% 58
Armenia Armenia 7 -22.2% 94
Antigua & Barbuda Antigua & Barbuda 0 101
Australia Australia 7 -36.4% 94
Austria Austria 5 -16.7% 96
Azerbaijan Azerbaijan 22 -46.3% 85
Burundi Burundi 1,800 -5.26% 22
Belgium Belgium 4 -66.7% 97
Benin Benin 2,500 -3.85% 17
Burkina Faso Burkina Faso 1,800 -21.7% 22
Bangladesh Bangladesh 4,000 -13% 12
Bulgaria Bulgaria 3 -50% 98
Bahrain Bahrain 3 +200% 98
Bahamas Bahamas 3 0% 98
Bosnia & Herzegovina Bosnia & Herzegovina 2 -33.3% 99
Belarus Belarus 1 0% 100
Belize Belize 5 -37.5% 96
Bolivia Bolivia 380 -11.6% 47
Brazil Brazil 1,700 -37% 23
Barbados Barbados 1 0% 100
Brunei Brunei 2 -66.7% 99
Bhutan Bhutan 5 0% 96
Botswana Botswana 95 +28.4% 63
Central African Republic Central African Republic 1,700 -10.5% 23
Canada Canada 42 -19.2% 74
Switzerland Switzerland 5 +66.7% 96
Chile Chile 17 -22.7% 87
China China 1,400 -17.6% 26
Côte d’Ivoire Côte d’Ivoire 3,600 -10% 14
Cameroon Cameroon 2,500 -3.85% 17
Congo - Kinshasa Congo - Kinshasa 19,000 0% 2
Congo - Brazzaville Congo - Brazzaville 460 +2.22% 43
Colombia Colombia 420 -20.8% 45
Comoros Comoros 44 -2.22% 72
Cape Verde Cape Verde 3 0% 98
Costa Rica Costa Rica 13 -7.14% 89
Cuba Cuba 33 -15.4% 79
Cyprus Cyprus 2 -75% 99
Czechia Czechia 2 -33.3% 99
Germany Germany 26 -10.3% 81
Djibouti Djibouti 39 -7.14% 76
Dominica Dominica 0 101
Denmark Denmark 2 -33.3% 99
Dominican Republic Dominican Republic 250 0% 53
Algeria Algeria 570 -5% 40
Ecuador Ecuador 150 -21.1% 60
Egypt Egypt 410 -28.1% 46
Eritrea Eritrea 290 0% 50
Spain Spain 9 -30.8% 92
Estonia Estonia 1 0% 100
Ethiopia Ethiopia 8,000 -4.76% 4
Finland Finland 3 -25% 98
Fiji Fiji 5 0% 96
France France 47 -21.7% 71
Micronesia (Federated States of) Micronesia (Federated States of) 3 -25% 98
Gabon Gabon 160 +6.67% 59
United Kingdom United Kingdom 57 -43% 70
Georgia Georgia 9 -10% 92
Ghana Ghana 2,100 0% 21
Guinea Guinea 2,400 0% 18
Gambia Gambia 290 -3.33% 50
Guinea-Bissau Guinea-Bissau 330 -5.71% 49
Equatorial Guinea Equatorial Guinea 95 -4.04% 63
Greece Greece 4 -42.9% 97
Grenada Grenada 1 0% 100
Guatemala Guatemala 350 -2.78% 48
Guyana Guyana 13 -7.14% 89
Honduras Honduras 110 0% 62
Croatia Croatia 1 -50% 100
Haiti Haiti 850 -1.16% 34
Hungary Hungary 10 -16.7% 91
Indonesia Indonesia 6,300 -5.97% 7
India India 19,000 -9.52% 2
Ireland Ireland 2 -50% 99
Iran Iran 190 -24% 56
Iraq Iraq 770 +13.2% 36
Iceland Iceland 0 101
Israel Israel 4 -33.3% 97
Italy Italy 25 -35.9% 82
Jamaica Jamaica 43 -6.52% 73
Jordan Jordan 73 -12% 66
Japan Japan 23 -45.2% 84
Kazakhstan Kazakhstan 39 -33.9% 76
Kenya Kenya 2,200 -4.35% 20
Kyrgyzstan Kyrgyzstan 63 -4.55% 67
Cambodia Cambodia 500 -13.8% 41
Kiribati Kiribati 3 0% 98
St. Kitts & Nevis St. Kitts & Nevis 0 -100% 101
South Korea South Korea 9 -47.1% 92
Kuwait Kuwait 4 0% 97
Laos Laos 180 -10% 57
Lebanon Lebanon 14 0% 88
Liberia Liberia 1,100 0% 28
Libya Libya 74 -2.63% 65
St. Lucia St. Lucia 1 0% 100
Sri Lanka Sri Lanka 59 -18.1% 69
Lesotho Lesotho 270 0% 52
Lithuania Lithuania 2 0% 99
Luxembourg Luxembourg 1 100
Latvia Latvia 3 -40% 98
Morocco Morocco 440 -2.22% 44
Monaco Monaco 0 101
Moldova Moldova 6 0% 95
Madagascar Madagascar 4,500 +4.65% 9
Maldives Maldives 2 0% 99
Mexico Mexico 860 -8.51% 33
Marshall Islands Marshall Islands 1 -50% 100
North Macedonia North Macedonia 0 101
Mali Mali 3,500 0% 15
Malta Malta 0 101
Myanmar (Burma) Myanmar (Burma) 1,700 -5.56% 23
Montenegro Montenegro 0 -100% 101
Mongolia Mongolia 26 -7.14% 81
Mozambique Mozambique 1,300 0% 27
Mauritania Mauritania 660 +1.54% 37
Mauritius Mauritius 8 +14.3% 93
Malawi Malawi 1,500 -6.25% 25
Malaysia Malaysia 120 -25% 61
Namibia Namibia 110 +13.4% 62
Niger Niger 3,800 0% 13
Nigeria Nigeria 75,000 0% 1
Nicaragua Nicaragua 80 -1.23% 64
Netherlands Netherlands 7 -12.5% 94
Norway Norway 1 0% 100
Nepal Nepal 820 +1.23% 35
Nauru Nauru 1 0% 100
New Zealand New Zealand 4 -69.2% 97
Oman Oman 11 +10% 90
Pakistan Pakistan 11,000 0% 3
Panama Panama 26 -10.3% 81
Peru Peru 280 -36.4% 51
Philippines Philippines 1,500 -11.8% 25
Palau Palau 0 101
Papua New Guinea Papua New Guinea 480 0% 42
Poland Poland 5 0% 96
Puerto Rico Puerto Rico 2 -80% 99
North Korea North Korea 230 0% 54
Portugal Portugal 13 -7.14% 89
Paraguay Paraguay 80 -27.3% 64
Palestinian Territories Palestinian Territories 24 0% 83
Qatar Qatar 1 -50% 100
Romania Romania 21 -12.5% 86
Russia Russia 120 -29.4% 61
Rwanda Rwanda 910 -1.09% 32
Saudi Arabia Saudi Arabia 40 -9.09% 75
Sudan Sudan 4,300 -2.27% 11
Senegal Senegal 1,300 +8.33% 27
Singapore Singapore 3 -80% 98
Solomon Islands Solomon Islands 26 -3.7% 81
Sierra Leone Sierra Leone 920 -3.16% 31
El Salvador El Salvador 39 0% 76
San Marino San Marino 0 101
Somalia Somalia 4,400 -8.33% 10
Serbia Serbia 6 -33.3% 95
South Sudan South Sudan 2,300 0% 19
São Tomé & Príncipe São Tomé & Príncipe 5 0% 96
Suriname Suriname 9 -10% 92
Slovakia Slovakia 2 -33.3% 99
Slovenia Slovenia 1 -66.7% 100
Sweden Sweden 4 -20% 97
Eswatini Eswatini 35 +6.06% 78
Seychelles Seychelles 1 -50% 100
Syria Syria 110 +11.1% 62
Chad Chad 6,100 -1.61% 8
Togo Togo 1,000 0% 29
Thailand Thailand 200 -70.6% 55
Tajikistan Tajikistan 38 -5% 77
Turkmenistan Turkmenistan 7 -12.5% 94
Timor-Leste Timor-Leste 59 -18.1% 69
Tonga Tonga 2 0% 99
Trinidad & Tobago Trinidad & Tobago 9 +80% 92
Tunisia Tunisia 60 -7.69% 68
Turkey Turkey 160 -30.4% 59
Tuvalu Tuvalu 0 -100% 101
Tanzania Tanzania 6,500 +85.7% 6
Uganda Uganda 2,900 -6.45% 16
Ukraine Ukraine 32 -11.1% 80
Uruguay Uruguay 5 -28.6% 96
United States United States 610 -18.7% 38
Uzbekistan Uzbekistan 250 0% 53
St. Vincent & Grenadines St. Vincent & Grenadines 1 0% 100
Venezuela Venezuela 970 +4.3% 30
Vietnam Vietnam 660 -5.71% 37
Vanuatu Vanuatu 9 0% 92
Samoa Samoa 6 0% 95
Yemen Yemen 1,600 -5.88% 24
South Africa South Africa 1,400 -6.67% 26
Zambia Zambia 590 -1.67% 39
Zimbabwe Zimbabwe 1,800 0% 22

The 'Number of maternal deaths' is a critical indicator of the health and wellbeing of women, reflecting the effectiveness of healthcare systems, access to reproductive health services, and the overall socioeconomic conditions within a country. Maternal mortality is defined as the death of a woman while pregnant or within 42 days of termination of pregnancy, regardless of the duration or site of the pregnancy, from any cause related to or aggravated by the pregnancy or its management. This indicator is not merely a statistic; it is emblematic of broader public health issues and the level of gender equality in society.

The importance of monitoring maternal deaths cannot be overstated. High maternal mortality rates often indicate inadequate healthcare infrastructure, lack of trained personnel, and insufficient access to quality maternal care. Conversely, low maternal mortality rates are often associated with strong healthcare systems and high levels of education for women, resulting in improved maternal health outcomes. By tracking this indicator, policymakers can identify areas needing attention, allocate resources more effectively, and assess the impact of health interventions over time.

Statistically, the number of maternal deaths is linked with various other health indicators such as neonatal mortality rates, child health, and general population health outcomes. The relationship is often cyclical; high maternal mortality can contribute to increased infant mortality rates, worsening public health conditions overall. Additionally, education plays a crucial role; as women attain higher levels of education, maternal mortality tends to decrease. As such, addressing educational disparities becomes a vital strategy in reducing maternal deaths.

Several factors influence the rates of maternal deaths globally. Access to healthcare is the most prominent factor. In many low-income countries, women may live great distances from the nearest healthcare facilities, which can be poorly equipped or unable to provide the necessary care during pregnancy and childbirth. Moreover, cultural barriers may prevent women from seeking necessary medical assistance. Socioeconomic status also plays a role; women from lower-income backgrounds often face greater health risks due to inadequate nutrition, lack of education, and limited access to healthcare services.

In terms of strategies to combat high maternal mortality rates, several solutions have been proposed and implemented with varying degrees of success. Increasing access to prenatal and postnatal care is essential. Training healthcare providers to manage complications effectively can also significantly reduce risks associated with childbirth. Implementing community-based interventions, such as educating women about the importance of seeking medical help during pregnancy and to identify warning signs of complications, can empower women and help save lives. Providing financial support for healthcare services can alleviate economic barriers that prevent women from accessing necessary care.

However, flaws exist in the data and its interpretation. For example, the statistics may not capture the full extent of maternal deaths, particularly in regions with inadequate reporting systems. In some countries, maternal mortality may be underreported due to societal stigma attached to maternal health issues or the lack of trained personnel to accurately record such incidents. Furthermore, trends and statistics often vary substantially between urban and rural areas, necessitating more granular data collection and analysis to ensure that interventions are effective in the most affected communities.

According to the latest data from 2020, the global figure for maternal deaths was approximately 287,000, a decline from 297,000 in 2019, showing slight but notable progress over the preceding year. The median value for maternal deaths stands at 57.0, reflecting wide disparities in global health outcomes. The countries that recorded the highest maternal deaths include Nigeria with 82,000 deaths, India with 24,000, and Congo - Kinshasa with 22,000. These figures point to the urgent need for targeted health policies in these regions, where systemic issues exacerbate the challenges posed during pregnancy and childbirth.

On the flip side, some countries have achieved exemplary maternal health outcomes, with Antigua & Barbuda, Grenada, Iceland, Luxembourg, and Malta reporting zero maternal deaths. These countries exemplify effective healthcare systems where women not only have access to high-quality medical services but are also supported by comprehensive social policies that protect their health and wellbeing.

As we look forward, efforts to reduce maternal mortality must remain steadfast and innovative, utilizing technology and community engagement to create sustainable health systems. The promise of better maternal health can be realized through an integrated approach that encompasses healthcare access, education, and societal change. In conclusion, addressing the number of maternal deaths is not just about saving lives; it is about empowering women and ensuring that future generations have the opportunities to thrive in a world where healthcare is equitable and accessible to all.

                    
# 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.MMR.DTHS'

# 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.MMR.DTHS'

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