Cause of death, by non-communicable diseases (% of total)

Source: worldbank.org, 01.09.2025

Year: 2019

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 49.8 +12.6% 142
Angola Angola 31.7 +6.05% 176
Albania Albania 93.9 +1.1% 6
United Arab Emirates United Arab Emirates 77.1 +7.62% 93
Argentina Argentina 76.7 -2.05% 95
Armenia Armenia 88.6 -2.36% 39
Antigua & Barbuda Antigua & Barbuda 84.8 +1.54% 60
Australia Australia 89.1 -0.513% 37
Austria Austria 91 -1.05% 17
Azerbaijan Azerbaijan 90.2 +2.33% 22
Burundi Burundi 36.8 +9.45% 163
Belgium Belgium 86 +0.0923% 52
Benin Benin 39 +5.66% 158
Burkina Faso Burkina Faso 34.8 +7.63% 168
Bangladesh Bangladesh 70.3 +10.3% 118
Bulgaria Bulgaria 95.3 +0.151% 2
Bahrain Bahrain 86.1 +1.98% 51
Bahamas Bahamas 75.4 +3.84% 100
Bosnia & Herzegovina Bosnia & Herzegovina 94.4 +0.59% 4
Belarus Belarus 92.7 +0.975% 10
Belize Belize 65.2 +5.75% 128
Bolivia Bolivia 72.7 +3.45% 112
Brazil Brazil 74.7 +1.86% 105
Barbados Barbados 82.8 +1.25% 68
Brunei Brunei 84.7 +5.66% 63
Bhutan Bhutan 72.7 +4.77% 111
Botswana Botswana 45.7 +2.63% 145
Central African Republic Central African Republic 31.9 +5.1% 175
Canada Canada 89.8 +1.32% 27
Switzerland Switzerland 89.6 -0.173% 32
Chile Chile 85.1 +0.527% 59
China China 89.6 +1.46% 30
Côte d’Ivoire Côte d’Ivoire 35.7 +8.19% 165
Cameroon Cameroon 37.7 +12.7% 160
Congo - Kinshasa Congo - Kinshasa 34.1 +9.93% 170
Congo - Brazzaville Congo - Brazzaville 38.6 +6.12% 159
Colombia Colombia 75.6 +3.17% 99
Comoros Comoros 44.7 +5.21% 151
Cape Verde Cape Verde 70.1 +6.64% 119
Costa Rica Costa Rica 82 +1.2% 73
Cuba Cuba 83.3 -0.43% 65
Cyprus Cyprus 89.9 -0.951% 26
Czechia Czechia 89.4 -0.591% 35
Germany Germany 90.6 -0.492% 20
Djibouti Djibouti 51.8 +11.8% 138
Denmark Denmark 89.7 -0.529% 29
Dominican Republic Dominican Republic 71.9 -0.973% 115
Algeria Algeria 79.4 +3.1% 86
Ecuador Ecuador 76.2 +3.22% 98
Egypt Egypt 85.6 +1.69% 54
Eritrea Eritrea 49.5 +6.24% 143
Spain Spain 90.8 -0.539% 18
Estonia Estonia 92.2 -0.692% 11
Ethiopia Ethiopia 43.3 +13% 152
Finland Finland 92.9 -0.418% 9
Fiji Fiji 84.7 +0.616% 62
France France 87.3 +0.514% 47
Micronesia (Federated States of) Micronesia (Federated States of) 79.5 +3.41% 83
Gabon Gabon 45 -1.09% 149
United Kingdom United Kingdom 88.2 -0.376% 45
Georgia Georgia 93.3 +0.961% 8
Ghana Ghana 45.4 +5.93% 146
Guinea Guinea 33.3 +5.34% 172
Gambia Gambia 37.1 +4.7% 161
Guinea-Bissau Guinea-Bissau 33.2 +9.5% 173
Equatorial Guinea Equatorial Guinea 32.8 +0.0625% 174
Greece Greece 83.2 -4.12% 66
Grenada Grenada 82.8 +1.02% 67
Guatemala Guatemala 61.6 +1% 133
Guyana Guyana 69.6 +3.51% 121
Honduras Honduras 71.4 +2.85% 116
Croatia Croatia 91.5 -1.25% 14
Haiti Haiti 64.7 +5.92% 131
Hungary Hungary 93.9 +0.581% 7
Indonesia Indonesia 76.3 +4.45% 97
India India 65.9 +6.27% 126
Ireland Ireland 90.4 +0.49% 21
Iran Iran 81.3 +2.56% 78
Iraq Iraq 66.9 +20.2% 123
Iceland Iceland 89.5 -0.219% 34
Israel Israel 85.4 -0.199% 56
Italy Italy 90.6 -0.56% 19
Jamaica Jamaica 79.3 +0.0923% 87
Jordan Jordan 79.6 +6.13% 82
Japan Japan 84.8 +3.95% 61
Kazakhstan Kazakhstan 86.7 +3.16% 50
Kenya Kenya 40.9 +19.5% 155
Kyrgyzstan Kyrgyzstan 81.6 +1.84% 76
Cambodia Cambodia 67.7 +6.1% 122
Kiribati Kiribati 72.8 +4.71% 110
South Korea South Korea 77.9 -2.56% 91
Kuwait Kuwait 79.4 +8.76% 85
Laos Laos 65.3 +10.2% 127
Lebanon Lebanon 88.6 +1.41% 42
Liberia Liberia 31.7 +17.6% 177
Libya Libya 75.1 +13.9% 102
St. Lucia St. Lucia 82.1 +0.61% 72
Sri Lanka Sri Lanka 82.5 -0.187% 71
Lesotho Lesotho 45.1 +1.62% 147
Lithuania Lithuania 91.2 +1.63% 15
Luxembourg Luxembourg 88.6 +0.14% 41
Latvia Latvia 92 +0.331% 12
Morocco Morocco 84.2 +3.39% 64
Moldova Moldova 89.5 +0.845% 33
Madagascar Madagascar 45 +5.23% 148
Maldives Maldives 85.2 +0.826% 58
Mexico Mexico 80.4 +0.748% 79
North Macedonia North Macedonia 96.1 +0.828% 1
Mali Mali 30.3 +7.46% 179
Malta Malta 89.7 -0.886% 28
Myanmar (Burma) Myanmar (Burma) 71.1 +7.05% 117
Montenegro Montenegro 94.1 +0.259% 5
Mongolia Mongolia 82.7 +3.65% 69
Mozambique Mozambique 36.2 +9.36% 164
Mauritania Mauritania 37.1 +10.2% 162
Mauritius Mauritius 88.4 +0.445% 43
Malawi Malawi 40.2 +8.63% 156
Malaysia Malaysia 73.4 +3.43% 107
Namibia Namibia 43 +0.441% 153
Niger Niger 30.4 +9.95% 178
Nigeria Nigeria 27.1 +5.66% 182
Nicaragua Nicaragua 81.6 +3.21% 75
Netherlands Netherlands 88.2 -1.19% 44
Norway Norway 86.7 -0.533% 48
Nepal Nepal 66.5 +11% 125
New Zealand New Zealand 89.6 -0.369% 31
Oman Oman 79.8 +1.66% 81
Pakistan Pakistan 59.9 +5.42% 134
Panama Panama 77.9 +3.39% 92
Peru Peru 72.6 +3.06% 113
Philippines Philippines 69.7 +3.77% 120
Papua New Guinea Papua New Guinea 62.4 +5.05% 132
Poland Poland 89.9 -0.519% 25
North Korea North Korea 80.4 -2.14% 80
Portugal Portugal 86.7 +0.534% 49
Paraguay Paraguay 74.9 +2.69% 104
Qatar Qatar 76.9 +6.82% 94
Romania Romania 91 -1.31% 16
Russia Russia 89.3 +1.9% 36
Rwanda Rwanda 50.4 +8.58% 140
Saudi Arabia Saudi Arabia 73.4 +2.03% 108
Sudan Sudan 53.9 +6.95% 136
Senegal Senegal 44.9 +6.67% 150
Singapore Singapore 75 -0.963% 103
Solomon Islands Solomon Islands 66.8 +2.59% 124
Sierra Leone Sierra Leone 34.1 +25.3% 171
El Salvador El Salvador 65.1 +0.343% 129
Somalia Somalia 29.9 +8.51% 180
Serbia Serbia 94.9 +0.655% 3
South Sudan South Sudan 27.9 +10.5% 181
São Tomé & Príncipe São Tomé & Príncipe 57.6 +7.04% 135
Suriname Suriname 78.6 +4.15% 90
Slovakia Slovakia 88.6 -0.654% 40
Slovenia Slovenia 90 +1.68% 24
Sweden Sweden 89 +0.0902% 38
Eswatini Eswatini 45.9 +8.25% 144
Seychelles Seychelles 79 +1.78% 89
Syria Syria 75.2 +87.3% 101
Chad Chad 27 +5.43% 183
Togo Togo 41.1 +7.61% 154
Thailand Thailand 76.6 +3.75% 96
Tajikistan Tajikistan 73.2 +2.29% 109
Turkmenistan Turkmenistan 72.3 +2.31% 114
Timor-Leste Timor-Leste 53.1 +9.75% 137
Tonga Tonga 79.4 -2.93% 84
Trinidad & Tobago Trinidad & Tobago 82.7 +0.355% 70
Tunisia Tunisia 85.9 +2.12% 53
Turkey Turkey 90.2 +1.58% 23
Tanzania Tanzania 34.4 +13.4% 169
Uganda Uganda 35.6 +14.8% 166
Ukraine Ukraine 91.9 +1.02% 13
Uruguay Uruguay 85.5 +0.101% 55
United States United States 88.1 +0.116% 46
Uzbekistan Uzbekistan 85.2 +2.79% 57
St. Vincent & Grenadines St. Vincent & Grenadines 79.1 +0.274% 88
Venezuela Venezuela 65.1 -1.97% 130
Vietnam Vietnam 81.4 +1.19% 77
Vanuatu Vanuatu 73.9 +2.48% 106
Samoa Samoa 81.8 +0.933% 74
Yemen Yemen 50.4 +0.649% 141
South Africa South Africa 51.3 +2.03% 139
Zambia Zambia 34.8 +4.8% 167
Zimbabwe Zimbabwe 39.3 +6.26% 157

The indicator "Cause of death, by non-communicable diseases (% of total)" serves as a crucial measure of health outcomes linked to chronic conditions such as heart disease, stroke, cancer, diabetes, and respiratory diseases. Understanding this indicator not only sheds light on the overall health status of populations but also highlights the underlying risk factors that contribute to health disparities across different regions. The latest data from 2019 indicates a global movement towards prioritizing the management of non-communicable diseases (NCDs), with a median value of 77.86%. This figure is significant, reflecting an increasing recognition of the burden NCDs impose on healthcare systems worldwide.

Non-communicable diseases have been a growing public health concern, especially as life expectancy rises and lifestyles shift towards more sedentary habits combined with unhealthy diets. In many high-income countries, NCDs account for the majority of deaths, fuelling health policy discussions and investment strategies aimed at prevention and management. The stark contrast between regions also illuminates disparities in healthcare access, socioeconomic conditions, and public health initiatives.

When examining the top five areas with the highest percentages of deaths due to NCDs, we see North Macedonia leading with 96.13%, followed closely by Bulgaria (95.31%), Serbia (94.92%), Bosnia & Herzegovina (94.42%), and Montenegro (94.11%). Such high values are indicative not only of the maturity of healthcare systems that have made progress in managing infectious diseases but also of lifestyle-related health risks that have become more prevalent. These countries typically face challenges such as high rates of smoking, poor dietary habits, and inadequate physical activity among their populations, all of which are significant contributors to the prevalence of NCDs.

On the other end of the spectrum lies the bottom five areas: Chad (26.99%), Nigeria (27.13%), South Sudan (27.94%), Somalia (29.88%), and Mali (30.32%). The relatively low percentages of NCD-related deaths in these regions can be misleading, as they may be more reflective of the prevalence of communicable diseases, which are still leading causes of death due to factors like poverty, limited access to healthcare, and higher childhood mortality rates. Moreover, these nations may not yet have developed the necessary infrastructure or public health policies aimed at addressing chronic health conditions. The limited data availability and underreporting in these countries also contribute to the discrepancy in understanding true mortality causes and their impacts.

The evolution of global health trends shows that the global percentage of deaths from NCDs has steadily risen over the decades. In 2000, the percentage stood at 60.8%, climbing to 67.63% by 2010, and further increasing to 71.22% in 2015 before reaching 73.63% in 2019. This gradual rise indicates a widening gap in health outcomes between different populations and underlines the urgent need for targeted health interventions to manage and prevent NCDs effectively.

The importance of addressing NCD-related deaths lies in the significant impact these diseases have not only on individual lives but also on economies and societal structures. Non-communicable diseases can create a cycle of health-related issues that strain limited healthcare resources, reduce workforce productivity, and escalate healthcare costs. Understanding causes of death by NCDs provides valuable insights for policymakers aiming to allocate resources effectively and implement appropriate health interventions.

Several factors influence the incidence and mortality of non-communicable diseases. Lifestyle factors including poor nutrition, physical inactivity, tobacco use, and excessive alcohol consumption are major contributors to the risk of developing NCDs. Additionally, social determinants such as education, socioeconomic status, and access to healthcare services play a critical role in determining health outcomes. The interplay between lifestyle choices and socio-economic conditions necessitates a multifaceted approach to health promotion and disease prevention.

Strategies to mitigate the effects of non-communicable diseases should encompass public health initiatives that promote healthier lifestyles. This includes policies aimed at reducing tobacco and alcohol consumption, improving nutritional standards, and encouraging physical activity among communities. Regular health screenings can aid early detection, allowing for timely intervention that can significantly impact health outcomes. Furthermore, enhancing access to healthcare services, particularly in underserved regions, is essential in tackling the burden of NCDs.

While there has been notable progress in understanding and addressing non-communicable diseases, several flaws still exist in the current public health framework. One such flaw is the tendency to under-prioritize NCDs in favor of communicable diseases, especially in lower-income areas where infectious diseases remain a pressing concern. This can result in unequal distribution of resources and neglect of preventive strategies necessary for reducing NCD incidence. Additionally, gaps in data collection and reporting hinder effective monitoring of mortality rates and can distort perceptions regarding the true burden imposed by NCDs.

In conclusion, the indicator of deaths caused by non-communicable diseases highlights critical aspects of population health across the globe. The disparity in NCD-related mortality underscores the urgent need for comprehensive public health strategies that consider both preventative measures and treatment options tailored to the specific needs of populations. By focusing on NCD prevention and promoting healthier lifestyles, countries can work towards improving health outcomes and reducing the economic burden associated with these diseases.

                    
# 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.DTH.NCOM.ZS'

# 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.DTH.NCOM.ZS'

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