Incidence of tuberculosis (per 100,000 people)

Source: worldbank.org, 01.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Aruba Aruba 3.6 -32.1% 141
Afghanistan Afghanistan 180 -2.17% 41
Angola Angola 339 +0.893% 18
Albania Albania 15 0% 105
Andorra Andorra 5.7 -1.72% 129
United Arab Emirates United Arab Emirates 0.8 +9.59% 154
Argentina Argentina 35 +20.7% 92
Armenia Armenia 25 0% 99
American Samoa American Samoa 4.5 -6.25% 137
Antigua & Barbuda Antigua & Barbuda 1.2 0% 151
Australia Australia 6.2 +10.7% 126
Austria Austria 5.2 +13% 132
Azerbaijan Azerbaijan 72 +5.88% 68
Burundi Burundi 94 -3.09% 62
Belgium Belgium 7.5 -3.85% 123
Benin Benin 51 -1.92% 80
Burkina Faso Burkina Faso 43 -2.27% 87
Bangladesh Bangladesh 221 0% 33
Bulgaria Bulgaria 16 +14.3% 104
Bahrain Bahrain 12 -14.3% 108
Bahamas Bahamas 7.8 -44.3% 121
Bosnia & Herzegovina Bosnia & Herzegovina 24 0% 100
Belarus Belarus 27 -3.57% 98
Belize Belize 27 0% 98
Bermuda Bermuda 3.6 +100% 141
Bolivia Bolivia 105 -1.87% 59
Brazil Brazil 49 0% 82
Barbados Barbados 0.81 -59.5% 153
Brunei Brunei 65 +14% 71
Bhutan Bhutan 164 0% 45
Botswana Botswana 244 +0.412% 26
Central African Republic Central African Republic 540 0% 5
Canada Canada 5.8 0% 128
Switzerland Switzerland 5.4 +20% 131
Chile Chile 18 +5.88% 102
China China 52 0% 79
Côte d’Ivoire Côte d’Ivoire 119 -3.25% 55
Cameroon Cameroon 150 -4.46% 47
Congo - Kinshasa Congo - Kinshasa 316 -0.315% 20
Congo - Brazzaville Congo - Brazzaville 368 -0.271% 15
Colombia Colombia 46 -2.13% 85
Comoros Comoros 35 0% 92
Cape Verde Cape Verde 47 +34.3% 84
Costa Rica Costa Rica 9.9 -1% 111
Cuba Cuba 7.9 +19.7% 120
Curaçao Curaçao 3.3 +6.45% 144
Cayman Islands Cayman Islands 4.7 -51% 135
Cyprus Cyprus 5.5 -32.1% 130
Czechia Czechia 4.8 +17.1% 134
Germany Germany 4.8 -5.88% 134
Djibouti Djibouti 218 -8.02% 35
Dominica Dominica 16 0% 104
Denmark Denmark 3.6 -10% 141
Dominican Republic Dominican Republic 42 0% 88
Algeria Algeria 47 -7.84% 84
Ecuador Ecuador 58 +26.1% 75
Egypt Egypt 9.2 -6.12% 114
Eritrea Eritrea 65 -5.8% 71
Spain Spain 5.9 -4.84% 127
Estonia Estonia 8.2 -25.5% 118
Ethiopia Ethiopia 146 +15.9% 49
Finland Finland 3.4 -12.8% 143
Fiji Fiji 66 0% 70
France France 8.3 +18.6% 117
Micronesia (Federated States of) Micronesia (Federated States of) 234 +333% 28
Gabon Gabon 505 -0.786% 8
United Kingdom United Kingdom 7.6 -2.56% 122
Georgia Georgia 55 -8.33% 78
Ghana Ghana 129 -3.01% 53
Guinea Guinea 175 0% 42
Gambia Gambia 142 -2.07% 50
Guinea-Bissau Guinea-Bissau 361 0% 16
Equatorial Guinea Equatorial Guinea 274 -0.364% 25
Greece Greece 5.2 +57.6% 132
Grenada Grenada 4.9 +58.1% 133
Greenland Greenland 101 -15.1% 60
Guatemala Guatemala 33 +26.9% 93
Guam Guam 31 -24.4% 94
Guyana Guyana 64 +8.47% 72
Hong Kong SAR China Hong Kong SAR China 50 +2.04% 81
Honduras Honduras 31 0% 94
Croatia Croatia 3.5 -42.6% 142
Haiti Haiti 149 -3.25% 48
Hungary Hungary 5.9 +13.5% 127
Indonesia Indonesia 387 +0.259% 14
India India 195 -2.01% 38
Ireland Ireland 4.6 +4.55% 136
Iran Iran 11 0% 109
Iraq Iraq 21 -8.7% 101
Iceland Iceland 3.2 -33.3% 145
Israel Israel 2.8 +7.69% 148
Italy Italy 4.4 0% 138
Jamaica Jamaica 3.2 0% 145
Jordan Jordan 3.4 -10.5% 143
Japan Japan 9.3 -1.06% 113
Kazakhstan Kazakhstan 70 -2.78% 69
Kenya Kenya 223 -8.98% 32
Kyrgyzstan Kyrgyzstan 112 0% 56
Cambodia Cambodia 335 +4.36% 19
Kiribati Kiribati 533 +54.5% 6
St. Kitts & Nevis St. Kitts & Nevis 2.5 +19% 149
South Korea South Korea 38 -5% 91
Kuwait Kuwait 9.7 -11.8% 112
Laos Laos 132 -4.35% 52
Lebanon Lebanon 10 0% 110
Liberia Liberia 308 0% 21
Libya Libya 59 0% 74
St. Lucia St. Lucia 1.3 0% 150
Sri Lanka Sri Lanka 62 0% 73
Lesotho Lesotho 664 -0.15% 2
Lithuania Lithuania 28 -6.67% 97
Luxembourg Luxembourg 7.3 -12% 124
Latvia Latvia 16 -15.8% 104
Macao SAR China Macao SAR China 51 +6.25% 80
Morocco Morocco 92 -1.08% 63
Monaco Monaco 0.99 -1% 152
Moldova Moldova 76 -1.3% 66
Madagascar Madagascar 233 0% 29
Maldives Maldives 40 +2.56% 90
Mexico Mexico 29 +3.57% 96
Marshall Islands Marshall Islands 692 +118% 1
North Macedonia North Macedonia 10 -9.09% 110
Mali Mali 48 -2.04% 83
Malta Malta 15 +15.4% 105
Myanmar (Burma) Myanmar (Burma) 558 +17% 4
Montenegro Montenegro 14 0% 106
Mongolia Mongolia 491 +6.05% 10
Northern Mariana Islands Northern Mariana Islands 56 -1.75% 77
Mozambique Mozambique 361 0% 16
Mauritania Mauritania 74 -5.13% 67
Mauritius Mauritius 12 0% 108
Malawi Malawi 119 -4.8% 55
Malaysia Malaysia 122 +9.91% 54
Namibia Namibia 468 +0.214% 11
New Caledonia New Caledonia 13 +8.33% 107
Niger Niger 74 -3.9% 67
Nigeria Nigeria 219 0% 34
Nicaragua Nicaragua 43 0% 87
Netherlands Netherlands 4.5 +12.5% 137
Norway Norway 2.9 -9.38% 147
Nepal Nepal 229 -1.72% 30
Nauru Nauru 174 -5.95% 43
New Zealand New Zealand 6.6 +10% 125
Oman Oman 11 +22.2% 109
Pakistan Pakistan 277 -0.36% 24
Panama Panama 58 +23.4% 75
Peru Peru 173 +13.1% 44
Philippines Philippines 643 +2.55% 3
Palau Palau 97 +116% 61
Papua New Guinea Papua New Guinea 432 0% 12
Poland Poland 10 -16.7% 110
Puerto Rico Puerto Rico 0.71 -5.33% 155
North Korea North Korea 513 0% 7
Portugal Portugal 16 0% 104
Paraguay Paraguay 62 +34.8% 73
Palestinian Territories Palestinian Territories 0.35 -28.6% 156
French Polynesia French Polynesia 14 -39.1% 106
Qatar Qatar 35 0% 92
Romania Romania 55 +3.77% 78
Russia Russia 38 -2.56% 91
Rwanda Rwanda 55 -1.79% 78
Saudi Arabia Saudi Arabia 8.4 -4.55% 116
Sudan Sudan 50 -7.41% 81
Senegal Senegal 110 -1.79% 58
Singapore Singapore 42 -22.2% 88
Solomon Islands Solomon Islands 55 0% 78
Sierra Leone Sierra Leone 283 -1.05% 23
El Salvador El Salvador 84 +68% 64
San Marino San Marino 0 157
Somalia Somalia 243 -1.22% 27
Serbia Serbia 14 0% 106
South Sudan South Sudan 227 0% 31
São Tomé & Príncipe São Tomé & Príncipe 111 -1.77% 57
Suriname Suriname 29 0% 96
Slovakia Slovakia 4.3 +43.3% 139
Slovenia Slovenia 4.6 +17.9% 136
Sweden Sweden 3.7 -5.13% 140
Eswatini Eswatini 350 +0.287% 17
Sint Maarten Sint Maarten 8.1 +47.3% 119
Seychelles Seychelles 21 +40% 101
Syria Syria 17 0% 103
Turks & Caicos Islands Turks & Caicos Islands 17 +84.8% 103
Chad Chad 139 -0.714% 51
Togo Togo 30 -6.25% 95
Thailand Thailand 157 +5.37% 46
Tajikistan Tajikistan 79 -1.25% 65
Turkmenistan Turkmenistan 49 +2.08% 82
Timor-Leste Timor-Leste 498 0% 9
Tonga Tonga 8.8 +300% 115
Trinidad & Tobago Trinidad & Tobago 21 +10.5% 101
Tunisia Tunisia 38 +2.7% 91
Turkey Turkey 13 -7.14% 107
Tuvalu Tuvalu 296 0% 22
Tanzania Tanzania 183 -6.15% 39
Uganda Uganda 198 0% 37
Ukraine Ukraine 112 +13.1% 56
Uruguay Uruguay 42 +10.5% 88
United States United States 3.1 +19.2% 146
Uzbekistan Uzbekistan 57 -5% 76
St. Vincent & Grenadines St. Vincent & Grenadines 14 +27.3% 106
Venezuela Venezuela 45 0% 86
British Virgin Islands British Virgin Islands 0 -100% 157
Vietnam Vietnam 182 +2.25% 40
Vanuatu Vanuatu 41 0% 89
Samoa Samoa 5.2 +8.33% 132
Yemen Yemen 48 0% 83
South Africa South Africa 427 -8.76% 13
Zambia Zambia 283 -4.07% 23
Zimbabwe Zimbabwe 211 +0.957% 36

The incidence of tuberculosis (TB) is a crucial public health indicator that quantifies the number of new cases of TB diagnosed per 100,000 people within a specific population. This measurement serves as a key metric for assessing the burden of TB disease and tracking progress toward global health goals, particularly in minimizing infectious diseases. The significance of monitoring TB incidence lies in its ability to inform health policies, allocate resources effectively, and enhance awareness and education about TB management and prevention strategies.

As of 2023, the median value of TB incidence worldwide stands at 42.0 cases per 100,000 people. This figure, while indicative of global efforts to combat the disease, also highlights the disparities that exist between different regions and countries. Alarmingly, the top five areas with the highest TB incidence rates include the Marshall Islands at 692.0, Lesotho at 664.0, the Philippines at 643.0, Myanmar at 558.0, and the Central African Republic at 540.0. These figures starkly contrast with the bottom five areas, which report minimal to no cases: the British Virgin Islands and San Marino both at 0.0, Palestinian Territories at 0.35, Puerto Rico at 0.71, and the United Arab Emirates at 0.8. This disparity illustrates not only the differing healthcare capabilities and access across regions but also underscores the necessity for targeted interventions in high-burden areas.

Various factors contribute to the incidence of tuberculosis, including socioeconomic conditions, healthcare infrastructure, public health education, and access to effective treatment. Underlying issues such as poverty, malnutrition, and crowded living conditions create environments where TB can thrive. Additionally, the presence of co-morbidities, including HIV/AIDS, further exacerbates the risk of TB infection. Healthcare systems that are under-resourced or poorly managed may struggle to provide adequate screening, timely diagnosis, and effective treatment for those infected, leading to higher incidence rates. Moreover, stigma surrounding TB can deter individuals from seeking medical assistance, perpetuating the cycle of infection.

The relationship between TB incidence and other health indicators, such as mortality rates and the prevalence of HIV, is evident. For instance, areas with high rates of HIV often experience a correlated rise in TB incidence, as compromised immune systems increase vulnerability to infection. Moreover, the incidence of TB can also be tied to global events such as pandemics, which can disrupt health services and divert resources away from TB control efforts, as seen during the COVID-19 pandemic. This connection emphasizes the need for integrated healthcare approaches that address multiple health challenges simultaneously.

Effective strategies to reduce TB incidence involve comprehensive responses that address both the medical and socio-economic determinants of health. Strengthening healthcare infrastructures, enhancing community awareness, and promoting preventive healthcare measures, including vaccination and early screening, are essential steps. The World Health Organization (WHO) has established ambitious targets to reduce TB incidence as part of the End TB Strategy, which includes goals to increase the diagnosis and treatment of TB cases while also tackling drug-resistant TB strains.

Despite various strategies implemented globally, flaws remain in approaches to curb TB incidence. The uneven distribution of healthcare resources, limited public health funding, and bureaucratic inefficiencies can hinder progress toward eliminating tuberculosis. For instance, in regions where healthcare infrastructure is lacking, even the most well-designed interventions may fail to reach those in need. Additionally, the lack of political will or commitment can stall progress and leave vulnerable populations unprotected.

The world has seen a long-term decrease in TB incidence, dropping from 180.0 cases per 100,000 people in 2000 to 134.0 in 2023. However, this decline is slower than anticipated, given the ongoing challenges posed by new variants and the impact of global crises on health systems. Looking closely at this trend, it becomes increasingly clear that while progress is being made, the fight against tuberculosis is far from over. A collaborative and multifaceted approach is essential to sustain momentum and achieve elimination efforts globally. Sustained investment in healthcare systems is required not only to combat TB but also to build resilience against future healthcare challenges. As countries, organizations, and communities unify their efforts to tackle TB and its root causes, it is critical to ensure that no individual is left behind. Addressing TB effectively necessitates a commitment to long-term solutions that prioritize health equity, accessibility, and comprehensive healthcare education.

                    
# 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.TBS.INCD'

# 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.TBS.INCD'

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