Maternal mortality ratio (per 100,000 live births)

Source: worldbank.org, 03.09.2025

Year: 2017

Flag Country Value Value change, % Rank
Armenia Armenia 7 -75% 25
Austria Austria 1 -83.3% 28
Azerbaijan Azerbaijan 12 -7.69% 22
Burundi Burundi 580 -26.1% 2
Bangladesh Bangladesh 215 -32% 5
Brazil Brazil 62 -1.59% 10
Botswana Botswana 172 +2.99% 6
Chile Chile 10 -37.5% 23
Colombia Colombia 44 0% 14
Cape Verde Cape Verde 47 +147% 13
Cuba Cuba 38 -7.32% 15
Ecuador Ecuador 50 -19.4% 12
Finland Finland 8 +33.3% 24
Georgia Georgia 24 -33.3% 18
Ghana Ghana 334 +17.6% 3
Grenada Grenada 0 -100% 29
Guatemala Guatemala 112 +57.7% 8
Haiti Haiti 732 +37.9% 1
India India 143 -22.3% 7
Iceland Iceland 0 29
Israel Israel 2 -50% 27
Sri Lanka Sri Lanka 37 0% 16
Lithuania Lithuania 7 0% 25
Mauritius Mauritius 77 +67.4% 9
Nicaragua Nicaragua 34 -8.11% 17
Norway Norway 0 29
Nepal Nepal 250 -45.8% 4
Oman Oman 14 -30% 21
Poland Poland 2 0% 27
Portugal Portugal 10 +42.9% 23
Paraguay Paraguay 54 -41.3% 11
Palestinian Territories Palestinian Territories 34 +9.68% 17
Serbia Serbia 8 0% 24
Slovakia Slovakia 5 -28.6% 26
Slovenia Slovenia 5 0% 26
Turkey Turkey 16 0% 20
Uruguay Uruguay 19 -24% 19

The maternal mortality ratio (MMR), defined as the number of maternal deaths per 100,000 live births, serves as a critical global indicator of women's health and the effectiveness of healthcare systems. In 2018, the median value globally was reported at 44.5 deaths per 100,000 live births. This metric reflects how well societies care for their pregnant women and, by extension, their future generations. A higher ratio signifies a larger number of women experiencing complications during childbirth, which may suggest inadequate access to healthcare, poor health education, or socio-economic inequalities. Conversely, lower ratios often correlate with robust healthcare infrastructures, better education for women, and strong government policies aimed at maternal health improvement.

The significance of the maternal mortality ratio extends beyond immediate health concerns. It often acts as a barometer for the overall development level of a country. Nations investing in healthcare education, access to maternal services, and preventive care often showcase lower mortality ratios. Furthermore, the MMR is intrinsically linked to other health indicators. For instance, it can correlate with infant mortality rates, as higher maternal mortality may also indicate poor neonatal care. Similarly, disparities between urban and rural healthcare access can showcase significant variances in MMR; often, rural areas have higher maternal mortality due to a lack of facilities and trained professionals.

Various factors contribute to a nation's maternal mortality ratio. Social determinants, including poverty, education, and access to healthcare, play pivotal roles. Women in lower socio-economic strata may not have the financial resources to seek timely medical care during pregnancy or childbirth, leading to complications that could have otherwise been managed with adequate healthcare support. Furthermore, geographical location remains a crucial factor; remote regions often struggle with logistical challenges related to reaching healthcare facilities. Cultural norms can also influence maternal health, as some societies may discourage or even restrict women's access to healthcare services due to traditional views on gender roles.

In addressing maternal mortality, governments and organizations must adopt multifaceted strategies. One effective approach is enhancing access to quality prenatal and postnatal care. Educating healthcare professionals about maternal health risks and providing them with necessary resources can substantially lower mortality rates. Furthermore, implementing community health programs that focus on women’s health education can empower women and their families to recognize warning signs during and after pregnancy, prompting timely medical intervention.

Another vital strategy is improving the healthcare infrastructure, especially in underserved areas. This includes establishing more healthcare facilities and ensuring they are adequately equipped and staffed with trained personnel. Mobile health units can also prove beneficial in reaching remote populations, offering vaccinations and prenatal check-ups to expectant mothers. Additionally, policies that address socio-economic disparities—such as improving women's access to education and paid parental leave—can create a holistic environment conducive to decreased maternal mortality rates.

Despite the progress made in reducing maternal mortality over recent decades, flaws still persist within many strategies. For instance, while healthcare facilities may exist, they might lack the necessary materials or trained personnel to provide comprehensive care. Data disparities can also hinder effective policy-making; in some regions, insufficient data collection creates barriers to understanding the true scope of maternal mortality issues. These gaps can result in misinformed health policies that fail to address the root causes of maternal deaths effectively.

The data from 2018 highlights the disparities in maternal mortality across different regions. Notably, Senegal reported a staggering MMR of 440.0, indicating a severe healthcare crisis affecting pregnant women. In contrast, Georgia and the Palestinian Territories both showed impressive MMRs of 14.0, suggesting effective healthcare systems. On the other hand, countries like Botswana (158.0), Guatemala (107.0), the Dominican Republic (97.0), and Brazil (59.0) still face significant maternal mortality challenges but are on a markedly different level than Senegal. The differences between these figures underscore the importance of targeted healthcare initiatives and policies that address specific local challenges.

Countries with high maternal mortality ratios must prioritize strategies that focus on direct improvements to women's healthcare. This could involve increasing investment in health education, enhancing health facilities, and fostering community support networks for expectant and new mothers. Global partnerships can also play a role in knowledge exchange and resource sharing, thereby helping countries with high ratios to develop their healthcare infrastructures more efficiently.

Ultimately, lowering the maternal mortality ratio is not just a matter of improving healthcare systems but also a reflection of a society’s commitment to women's rights and health equity. This comprehensive approach can facilitate significant reductions in maternal mortality, thereby fostering healthier communities and contributing to broader societal progress. The maternal mortality ratio, while a mere number, tells the multifaceted story of women's health outcomes, societal values, and the effectiveness of healthcare systems across the globe.

                    
# 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.STA.MMRT.NE'

# 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.STA.MMRT.NE'

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