Mortality caused by road traffic injury (per 100,000 population)

Source: worldbank.org, 01.09.2025

Year: 2019

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 15.9 +12% 76
Angola Angola 26.1 +0.385% 38
Albania Albania 11.7 +6.36% 96
United Arab Emirates United Arab Emirates 8.9 -21.2% 106
Argentina Argentina 14.1 +3.68% 84
Armenia Armenia 20 -1.96% 62
Antigua & Barbuda Antigua & Barbuda 0 141
Australia Australia 4.9 +2.08% 125
Austria Austria 4.9 +2.08% 125
Azerbaijan Azerbaijan 6.7 -17.3% 118
Burundi Burundi 35.5 +0.852% 9
Belgium Belgium 5.8 +7.41% 121
Benin Benin 26.8 -0.372% 35
Burkina Faso Burkina Faso 31 +0.649% 19
Bangladesh Bangladesh 15.3 -1.29% 80
Bulgaria Bulgaria 9.2 +3.37% 105
Bahrain Bahrain 5.2 -8.77% 123
Bahamas Bahamas 7.7 -6.1% 113
Bosnia & Herzegovina Bosnia & Herzegovina 13.5 -4.93% 87
Belarus Belarus 7.6 -8.43% 114
Belize Belize 22.6 +0.444% 48
Bolivia Bolivia 21.1 +1.93% 55
Brazil Brazil 16 -6.43% 75
Barbados Barbados 8.2 -1.2% 109
Brunei Brunei 7.5 -3.85% 115
Bhutan Bhutan 16.2 +1.89% 73
Botswana Botswana 26.4 +2.72% 37
Central African Republic Central African Republic 37.7 +4.72% 6
Canada Canada 5.3 -1.85% 122
Switzerland Switzerland 2.2 -21.4% 135
Chile Chile 14.9 +6.43% 82
China China 17.4 -1.14% 67
Côte d’Ivoire Côte d’Ivoire 24.1 +0.837% 43
Cameroon Cameroon 30.2 +1% 21
Congo - Kinshasa Congo - Kinshasa 34.9 +5.76% 10
Congo - Brazzaville Congo - Brazzaville 29.7 +1.71% 24
Colombia Colombia 15.4 -5.52% 79
Comoros Comoros 26.6 0% 36
Cape Verde Cape Verde 26.8 +1.9% 35
Costa Rica Costa Rica 14.8 +2.78% 83
Cuba Cuba 8.9 +1.14% 106
Cyprus Cyprus 5.8 +5.45% 121
Czechia Czechia 5.9 -6.35% 120
Germany Germany 3.8 -7.32% 130
Djibouti Djibouti 23.5 -0.424% 45
Denmark Denmark 3.7 +15.6% 131
Dominican Republic Dominican Republic 64.6 +20.7% 1
Algeria Algeria 20.9 -0.476% 57
Ecuador Ecuador 20.1 -2.9% 61
Egypt Egypt 10.1 -1.94% 101
Eritrea Eritrea 37.9 +1.34% 5
Spain Spain 3.9 -4.88% 129
Estonia Estonia 4.5 -21.1% 126
Ethiopia Ethiopia 28.2 +2.17% 30
Finland Finland 3.9 -13.3% 129
Fiji Fiji 13.5 +10.7% 87
France France 5.1 -1.92% 124
Micronesia (Federated States of) Micronesia (Federated States of) 0.2 0% 140
Gabon Gabon 23.9 +0.42% 44
United Kingdom United Kingdom 3.2 +6.67% 133
Georgia Georgia 12.4 +5.08% 92
Ghana Ghana 25.7 +1.58% 39
Guinea Guinea 29.7 0% 24
Gambia Gambia 29.6 +1.72% 25
Guinea-Bissau Guinea-Bissau 32.2 +0.312% 16
Equatorial Guinea Equatorial Guinea 27.2 +3.42% 34
Greece Greece 8.3 0% 108
Grenada Grenada 8 +2.56% 111
Guatemala Guatemala 22.9 +12.3% 46
Guyana Guyana 22.3 -0.889% 50
Honduras Honduras 16.1 0% 74
Croatia Croatia 7.9 -5.95% 112
Haiti Haiti 18.8 +1.08% 65
Hungary Hungary 7.7 -4.94% 113
Indonesia Indonesia 11.3 -2.59% 97
India India 15.6 +0.645% 78
Ireland Ireland 3.1 +3.33% 134
Iran Iran 21.5 -0.922% 53
Iraq Iraq 27.3 +0.738% 33
Iceland Iceland 2 -71.4% 137
Israel Israel 3.9 +14.7% 129
Italy Italy 5.3 -5.36% 122
Jamaica Jamaica 15.1 +5.59% 81
Jordan Jordan 17 -3.41% 68
Japan Japan 3.6 -2.7% 132
Kazakhstan Kazakhstan 12.7 -7.97% 90
Kenya Kenya 28.3 +1.07% 29
Kyrgyzstan Kyrgyzstan 12.7 -0.781% 90
Cambodia Cambodia 19.6 +3.16% 64
Kiribati Kiribati 1.9 -9.52% 138
South Korea South Korea 8.6 0% 107
Kuwait Kuwait 15.4 -4.94% 79
Laos Laos 17.9 +3.47% 66
Lebanon Lebanon 16.4 +0.613% 71
Liberia Liberia 38.9 +2.64% 4
Libya Libya 21.3 +13.9% 54
St. Lucia St. Lucia 29.8 +11.6% 23
Sri Lanka Sri Lanka 19.7 +10.1% 63
Lesotho Lesotho 31.9 +0.949% 17
Lithuania Lithuania 8.1 +8% 110
Luxembourg Luxembourg 4.1 -38.8% 127
Latvia Latvia 8.1 -11% 110
Morocco Morocco 17 -3.95% 68
Moldova Moldova 7.3 -5.19% 117
Madagascar Madagascar 29.2 +0.69% 27
Maldives Maldives 1.6 -5.88% 139
Mexico Mexico 12.8 -1.54% 89
North Macedonia North Macedonia 5.1 -1.92% 124
Mali Mali 22.7 -0.873% 47
Malta Malta 4.1 -10.9% 127
Myanmar (Burma) Myanmar (Burma) 20.4 +0.99% 60
Montenegro Montenegro 7.6 -2.56% 114
Mongolia Mongolia 21 +0.478% 56
Mozambique Mozambique 30 -0.332% 22
Mauritania Mauritania 25.6 0% 40
Mauritius Mauritius 12.2 -1.61% 93
Malawi Malawi 33.4 +0.906% 13
Malaysia Malaysia 22.5 -0.881% 49
Namibia Namibia 34.8 +2.35% 11
Niger Niger 25.5 -0.778% 41
Nigeria Nigeria 20.7 -0.957% 58
Nicaragua Nicaragua 16.9 +1.81% 69
Netherlands Netherlands 4 -2.44% 128
Norway Norway 2.1 0% 136
Nepal Nepal 16.3 +0.617% 72
New Zealand New Zealand 9.6 +7.87% 102
Oman Oman 10.6 -22.1% 98
Pakistan Pakistan 13 -0.763% 88
Panama Panama 13.9 0% 85
Peru Peru 13.6 -0.73% 86
Philippines Philippines 12 +0.84% 94
Papua New Guinea Papua New Guinea 12.6 -6.67% 91
Poland Poland 9.4 +2.17% 103
North Korea North Korea 24.2 +0.415% 42
Portugal Portugal 8.2 -8.89% 109
Paraguay Paraguay 22 -0.452% 52
Qatar Qatar 7.3 -9.88% 117
Romania Romania 10.3 +0.98% 99
Russia Russia 12 -6.98% 94
Rwanda Rwanda 29.4 -1.67% 26
Saudi Arabia Saudi Arabia 35.9 +8.13% 8
Sudan Sudan 26.8 +2.68% 35
Senegal Senegal 23.5 -0.844% 45
Singapore Singapore 2.1 -8.7% 136
Solomon Islands Solomon Islands 16.5 -0.602% 70
Sierra Leone Sierra Leone 33 +2.48% 14
El Salvador El Salvador 20.9 +0.481% 57
Somalia Somalia 27.4 0% 32
Serbia Serbia 7.5 0% 115
South Sudan South Sudan 36.7 +2.8% 7
São Tomé & Príncipe São Tomé & Príncipe 27.9 +1.09% 31
Suriname Suriname 15.3 -2.55% 80
Slovakia Slovakia 6.1 0% 119
Slovenia Slovenia 5.1 +13.3% 124
Sweden Sweden 3.1 -13.9% 134
Eswatini Eswatini 33.5 +1.52% 12
Seychelles Seychelles 11.3 -0.877% 97
Syria Syria 14.9 -12.9% 82
Chad Chad 32.4 +5.88% 15
Togo Togo 28.7 -0.347% 28
Thailand Thailand 32.2 -0.31% 16
Tajikistan Tajikistan 15.7 -2.48% 77
Turkmenistan Turkmenistan 13.5 -4.26% 87
Timor-Leste Timor-Leste 11.9 -2.46% 95
Tonga Tonga 33 +38.1% 14
Trinidad & Tobago Trinidad & Tobago 9.3 -8.82% 104
Tunisia Tunisia 16.5 -11.8% 70
Turkey Turkey 6.7 -20.2% 118
Tanzania Tanzania 31.1 +0.323% 18
Uganda Uganda 29.4 -1.01% 26
Ukraine Ukraine 10.2 +2% 100
Uruguay Uruguay 14.8 -6.33% 83
United States United States 12.7 +0.794% 90
Uzbekistan Uzbekistan 11.7 +14.7% 96
St. Vincent & Grenadines St. Vincent & Grenadines 7.4 +4.23% 116
Venezuela Venezuela 39 +2.09% 3
Vietnam Vietnam 30.6 +4.79% 20
Vanuatu Vanuatu 14.9 -1.32% 82
Samoa Samoa 13 +0.775% 88
Yemen Yemen 29.4 +3.52% 26
South Africa South Africa 22.2 -2.2% 51
Zambia Zambia 20.5 0% 59
Zimbabwe Zimbabwe 41.2 +1.48% 2

The mortality caused by road traffic injury, reported per 100,000 population, is a critical indicator of public health and safety, reflecting the effectiveness of a nation’s transportation infrastructure, law enforcement, and healthcare systems. The understanding of this statistic is paramount in assessing road safety policies, understanding social behavior regarding transportation, and addressing public health challenges related to accidental injuries. Road traffic injuries not only result in loss of life but also contribute significantly to disabilities and economic burdens on healthcare systems and societies. In the year 2019, the world median value for mortality due to road traffic injuries stood at 15.3 per 100,000 population. This figure offers a glimpse into the overall health of a community concerning road safety. However, it is important to look beyond the median to appreciate the disparities among various regions. On one end of the spectrum, regions such as the Dominican Republic reported alarming figures at 64.6, followed closely by Zimbabwe at 41.2, Venezuela at 39.0, Liberia at 38.9, and Eritrea at 37.9. These statistics raise concerns about the traffic policies, road conditions, emergency response services, and general public behavior regarding road use in these areas. Contrastingly, there are regions that exhibit remarkably lower values. For instance, Antigua & Barbuda recorded zero deaths per 100,000 population, and other areas like Micronesia (Federated States of), Maldives, Kiribati, and Iceland followed with minimal fatalities, ranging from 0.2 to 2.0. The stark contrast between the highest and lowest figures underscores the varying levels of road safety and health across the globe, suggesting that effective traffic regulation, education, and infrastructure investment can lead to significantly safer environments. The relationship between road traffic injury mortality and other indicators is multifaceted. Variables such as the level of urbanization, economic development, healthcare accessibility, and law enforcement practices play crucial roles in shaping road safety outcomes. For instance, countries with strong law enforcement and strict adherence to traffic laws tend to have lower mortality rates. Meanwhile, economic factors can also influence both the number of vehicles on the road and the ability to invest in road safety measures like proper signage, regulations for driver education, and quality road maintenance. Several factors affect the mortality caused by road traffic injuries, including the physical condition of the roads, the quality of vehicles, and individual behaviors such as speeding, driving under the influence of alcohol, or not wearing seat belts or helmets. Societal attitudes towards road safety also play a significant role. In regions where road safety is culturally prioritized, individuals are more likely to adhere to traffic laws and engage in safer driving practices. Effective public education campaigns are essential to changing behaviors that result in risky driving practices. Addressing the high mortality rates from road traffic injuries requires a multi-faceted approach. First and foremost, enhancing the infrastructure is vital; this involves building safer roads that accommodate pedestrian traffic, ensuring road signage is clear and visible, and improving lighting in high-risk areas. Technological integrations, such as traffic monitoring systems and intelligent transportation systems that manage and monitor vehicular flow, can contribute significantly to reducing fatalities. Legislation plays a key role in shaping road safety and could include stricter penalties for traffic violations, regulations on car safety standards, and measures to curb driving under the influence of substances. Furthermore, investing in public transportation can reduce the number of vehicles on the roads and thus lower the potential for accidents. Encouraging a culture of responsibility among drivers through education campaigns that advocate for safe driving behavior is equally essential. Despite the efforts and strategies employed to combat road traffic injuries, gaps still exist, which may contribute to persistent high mortality rates. For instance, in many developing countries, resources may be limited; this can lead to insufficient law enforcement or inadequate public health response systems. Cultural norms valuing speed and efficiency over safety can also pose barriers to change. In conclusion, the mortality caused by road traffic injuries is more than just a number; it is a reflection of a society's commitment to ensuring safety for its population. The contrasting figures of high-risk and low-risk areas serve as a reminder of the work still needed in global traffic safety policies. Advances in infrastructure, enforcement of traffic laws, and education on road safety can lead to a drastic decrease in mortality rates, ultimately saving lives and improving the quality of life across communities. The shifting world values from 2000 to 2019 indicate a gradual improvement in overall traffic safety; however, the journey towards eliminating road traffic injuries falls upon collective efforts, encompassing policy-making, education, enforcement, and community involvement, to create a safer environment for 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.STA.TRAF.P5'

# 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.TRAF.P5'

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