Immunization, DPT (% of children ages 12-23 months)

Source: worldbank.org, 01.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 60 +3.45% 36
Angola Angola 54 +28.6% 39
Albania Albania 97 0% 3
Andorra Andorra 98 0% 2
United Arab Emirates United Arab Emirates 96 0% 4
Argentina Argentina 66 -21.4% 33
Armenia Armenia 94 +1.08% 6
Antigua & Barbuda Antigua & Barbuda 97 -2.02% 3
Australia Australia 94 0% 6
Austria Austria 84 0% 16
Azerbaijan Azerbaijan 83 0% 17
Burundi Burundi 89 -2.2% 11
Belgium Belgium 98 0% 2
Benin Benin 69 0% 31
Burkina Faso Burkina Faso 94 +1.08% 6
Bangladesh Bangladesh 98 0% 2
Bulgaria Bulgaria 92 +1.1% 8
Bahrain Bahrain 99 +2.06% 1
Bahamas Bahamas 87 0% 13
Bosnia & Herzegovina Bosnia & Herzegovina 73 -2.67% 27
Belarus Belarus 98 0% 2
Belize Belize 85 +1.19% 15
Bolivia Bolivia 67 -2.9% 32
Brazil Brazil 90 +16.9% 10
Barbados Barbados 85 -1.16% 15
Brunei Brunei 99 0% 1
Bhutan Bhutan 99 +1.02% 1
Botswana Botswana 95 +10.5% 5
Central African Republic Central African Republic 42 0% 43
Canada Canada 92 0% 8
Switzerland Switzerland 95 -1.04% 5
Chile Chile 96 0% 4
China China 97 -2.02% 3
Côte d’Ivoire Côte d’Ivoire 79 +8.22% 21
Cameroon Cameroon 75 +5.63% 25
Congo - Kinshasa Congo - Kinshasa 60 -7.69% 36
Congo - Brazzaville Congo - Brazzaville 78 0% 22
Colombia Colombia 90 +3.45% 10
Comoros Comoros 75 -3.85% 25
Cape Verde Cape Verde 93 0% 7
Costa Rica Costa Rica 99 +4.21% 1
Cuba Cuba 99 0% 1
Cyprus Cyprus 95 0% 5
Czechia Czechia 94 0% 6
Germany Germany 91 0% 9
Djibouti Djibouti 72 +22% 28
Dominica Dominica 56 -31.7% 37
Denmark Denmark 97 0% 3
Dominican Republic Dominican Republic 90 +2.27% 10
Algeria Algeria 92 +19.5% 8
Ecuador Ecuador 70 0% 30
Egypt Egypt 96 -1.03% 4
Eritrea Eritrea 95 0% 5
Spain Spain 93 0% 7
Estonia Estonia 90 0% 10
Ethiopia Ethiopia 72 +10.8% 28
Finland Finland 91 0% 9
Fiji Fiji 99 0% 1
France France 96 0% 4
Micronesia (Federated States of) Micronesia (Federated States of) 79 +14.5% 21
Gabon Gabon 70 +16.7% 30
United Kingdom United Kingdom 92 0% 8
Georgia Georgia 88 +3.53% 12
Ghana Ghana 95 -4.04% 5
Guinea Guinea 47 0% 41
Gambia Gambia 84 +6.33% 16
Guinea-Bissau Guinea-Bissau 74 0% 26
Equatorial Guinea Equatorial Guinea 74 +5.71% 26
Greece Greece 99 0% 1
Grenada Grenada 86 +11.7% 14
Guatemala Guatemala 83 +2.47% 17
Guyana Guyana 98 0% 2
Honduras Honduras 73 -6.41% 27
Croatia Croatia 93 +1.09% 7
Haiti Haiti 51 0% 40
Hungary Hungary 99 0% 1
Indonesia Indonesia 83 -8.79% 17
India India 91 -2.15% 9
Ireland Ireland 89 -4.3% 11
Iran Iran 99 0% 1
Iraq Iraq 91 -2.15% 9
Iceland Iceland 92 0% 8
Israel Israel 98 0% 2
Italy Italy 95 0% 5
Jamaica Jamaica 98 0% 2
Jordan Jordan 96 +4.35% 4
Japan Japan 98 -1.01% 2
Kazakhstan Kazakhstan 99 0% 1
Kenya Kenya 93 -1.06% 7
Kyrgyzstan Kyrgyzstan 86 -4.44% 14
Cambodia Cambodia 85 0% 15
Kiribati Kiribati 90 -1.1% 10
St. Kitts & Nevis St. Kitts & Nevis 96 0% 4
South Korea South Korea 98 0% 2
Kuwait Kuwait 99 +3.13% 1
Laos Laos 84 +5% 16
Lebanon Lebanon 55 -17.9% 38
Liberia Liberia 82 +5.13% 18
Libya Libya 73 0% 27
St. Lucia St. Lucia 74 -8.64% 26
Sri Lanka Sri Lanka 99 +1.02% 1
Lesotho Lesotho 87 0% 13
Lithuania Lithuania 90 0% 10
Luxembourg Luxembourg 99 0% 1
Latvia Latvia 98 +3.16% 2
Morocco Morocco 99 0% 1
Monaco Monaco 99 0% 1
Moldova Moldova 87 -1.14% 13
Madagascar Madagascar 65 +14% 34
Maldives Maldives 99 0% 1
Mexico Mexico 85 +2.41% 15
Marshall Islands Marshall Islands 85 -1.16% 15
North Macedonia North Macedonia 86 +2.38% 14
Mali Mali 77 0% 23
Malta Malta 98 0% 2
Myanmar (Burma) Myanmar (Burma) 76 +7.04% 24
Montenegro Montenegro 81 +1.25% 19
Mongolia Mongolia 96 +1.05% 4
Mozambique Mozambique 70 +27.3% 30
Mauritania Mauritania 90 +5.88% 10
Mauritius Mauritius 96 +1.05% 4
Malawi Malawi 91 +5.81% 9
Malaysia Malaysia 97 0% 3
Namibia Namibia 83 -1.19% 17
Niger Niger 85 +1.19% 15
Nigeria Nigeria 62 0% 35
Nicaragua Nicaragua 89 -3.26% 11
Netherlands Netherlands 92 -1.08% 8
Norway Norway 96 -1.03% 4
Nepal Nepal 94 +4.44% 6
Nauru Nauru 99 0% 1
New Zealand New Zealand 88 -1.12% 12
Oman Oman 99 0% 1
Pakistan Pakistan 86 +1.18% 14
Panama Panama 66 -19.5% 33
Peru Peru 84 +2.44% 16
Philippines Philippines 89 +5.95% 11
Palau Palau 97 +3.19% 3
Papua New Guinea Papua New Guinea 35 -5.41% 44
Poland Poland 94 0% 6
North Korea North Korea 16 45
Portugal Portugal 99 0% 1
Paraguay Paraguay 71 +2.9% 29
Palestinian Territories Palestinian Territories 88 -10.2% 12
Qatar Qatar 95 -3.06% 5
Romania Romania 78 -8.24% 22
Russia Russia 97 0% 3
Rwanda Rwanda 94 -4.08% 6
Saudi Arabia Saudi Arabia 97 -1.02% 3
Sudan Sudan 51 -25% 40
Senegal Senegal 83 -10.8% 17
Singapore Singapore 98 +1.03% 2
Solomon Islands Solomon Islands 84 -5.62% 16
Sierra Leone Sierra Leone 91 0% 9
El Salvador El Salvador 96 +1.05% 4
San Marino San Marino 91 -1.09% 9
Somalia Somalia 42 0% 43
Serbia Serbia 93 +1.09% 7
South Sudan South Sudan 73 0% 27
São Tomé & Príncipe São Tomé & Príncipe 86 -6.52% 14
Suriname Suriname 72 -6.49% 28
Slovakia Slovakia 96 -1.03% 4
Slovenia Slovenia 89 0% 11
Sweden Sweden 94 0% 6
Eswatini Eswatini 85 -12.4% 15
Seychelles Seychelles 97 0% 3
Syria Syria 66 +11.9% 33
Chad Chad 67 +11.7% 32
Togo Togo 85 +3.66% 15
Thailand Thailand 92 0% 8
Tajikistan Tajikistan 96 -1.03% 4
Turkmenistan Turkmenistan 98 0% 2
Timor-Leste Timor-Leste 83 0% 17
Tonga Tonga 99 0% 1
Trinidad & Tobago Trinidad & Tobago 96 +3.23% 4
Tunisia Tunisia 97 0% 3
Turkey Turkey 99 0% 1
Tuvalu Tuvalu 94 +3.3% 6
Tanzania Tanzania 93 0% 7
Uganda Uganda 91 +2.25% 9
Ukraine Ukraine 83 +13.7% 17
Uruguay Uruguay 95 +1.06% 5
United States United States 94 0% 6
Uzbekistan Uzbekistan 99 0% 1
St. Vincent & Grenadines St. Vincent & Grenadines 94 -5.05% 6
Venezuela Venezuela 54 +25.6% 39
Vietnam Vietnam 65 -28.6% 34
Vanuatu Vanuatu 72 +5.88% 28
Samoa Samoa 83 +9.21% 17
Yemen Yemen 46 -20.7% 42
South Africa South Africa 79 -7.06% 21
Zambia Zambia 80 -2.44% 20
Zimbabwe Zimbabwe 90 0% 10

Immunization against diphtheria, pertussis, and tetanus (DPT) for children aged 12-23 months is a critical public health indicator that illustrates the effectiveness of immunization programs and the overall health infrastructure in a country. The percentage of immunized children in this age group provides insights not just into the immediate health prospects of these children, but also the long-term health trends within a population. A high immunization rate correlates with lower rates of morbidity and mortality from these preventable diseases.

The importance of DPT immunization cannot be overstated. Diphtheria, pertussis, and tetanus can lead to severe complications, including neurological damage and death, especially in young children. Therefore, maintaining high immunization levels is crucial. For developing countries, achieving high vaccination rates is a fundamental step toward improving child health and fulfilling global health initiatives, such as the World Health Organization's (WHO) vaccination targets.

The relationship between DPT immunization rates and other health indicators is significant. For instance, countries with high DPT coverage often exhibit improved child survival rates, lower rates of hospital admissions for preventable illnesses, and increased life expectancy. Additionally, high vaccination coverage can relieve healthcare systems from the burden of managing outbreaks of vaccine-preventable diseases, leading to more resources available for other health challenges.

Several factors influence DPT immunization rates. Access to healthcare services, socioeconomic conditions, cultural beliefs regarding vaccinations, and public health policies all play pivotal roles. In areas where healthcare infrastructure is robust, and there is government support for immunization programs, vaccination rates tend to be higher. Conversely, in regions suffering from conflict, poor healthcare access, and distrust in medical systems, such as North Korea, Papua New Guinea, and Somalia—with some of the lowest immunization rates in the world—the percentages can plummet to alarming lows. For instance, in 2023, North Korea reported a mere 16% coverage, while Somalia and Yemen only achieved 42% and 46%, respectively.

Strategies to enhance DPT immunization coverage can include increased outreach efforts in underserved areas, community education campaigns emphasizing the safety and efficacy of vaccines, and collaboration with local leaders to build trust. Furthermore, improving logistical aspects of vaccine delivery—ensuring that vaccines are available in health facilities and transport mechanisms are in place—can significantly boost rates. International organizations can also provide support through funding and training programs to equip healthcare workers with the tools needed to effectively administer vaccines.

Despite the strides made in immunization programs globally, flaws still exist. Data show fluctuations in immunization rates over time; for example, between 2021 and 2023, there was a decrease from 81.89% to 84.05%. Disruptions due to the COVID-19 pandemic posed significant challenges to immunization programs in many countries. Regular tracking and reporting of immunization data are essential to identify trends and to implement timely corrective actions when coverage decreases.

Focusing on the latest data, the median DPT coverage in 2023 stands at 91.0%. The top five areas achieving impressive coverage levels, all at 99%, include Bahrain, Bhutan, Brunei, Costa Rica, and Cuba. These countries effectively demonstrate that with adequate healthcare infrastructure, consistent public health messaging, and community engagement, high vaccination rates are achievable. On the other hand, the bottom five areas highlight the challenges in regions where healthcare is inadequate, social instability is prevalent, and distrust in medical interventions exists. The stark contrast between the top and bottom areas sends a message: the global community must work together to address and rectify disparities in healthcare access.

As we look to the future, continued investment in healthcare infrastructure, public health education, and community engagement will be essential for improving DPT immunization rates worldwide. By understanding the key factors at play and implementing comprehensive strategies, we can help ensure a healthier future for children everywhere, protecting them against diphtheria, pertussis, and tetanus.

                    
# 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.IMM.IDPT'

# 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.IMM.IDPT'

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