Life expectancy at birth, male (years)

Source: worldbank.org, 01.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Aruba Aruba 73.7 +0.224% 80
Afghanistan Afghanistan 64.5 +0.823% 166
Angola Angola 62.1 +0.568% 183
Albania Albania 77.7 +1.27% 45
Andorra Andorra 82.1 +0.0207% 7
United Arab Emirates United Arab Emirates 82 +3.27% 8
Argentina Argentina 74.8 +2.12% 66
Armenia Armenia 74.1 +3.78% 77
American Samoa American Samoa 70.2 +0.21% 114
Antigua & Barbuda Antigua & Barbuda 74.5 +0.118% 70
Australia Australia 81.1 -0.123% 16
Austria Austria 79.2 +0.126% 35
Azerbaijan Azerbaijan 71.6 +0.139% 99
Burundi Burundi 61.6 +1.24% 188
Belgium Belgium 80.3 +0.753% 26
Benin Benin 59.3 +0.252% 202
Burkina Faso Burkina Faso 58.9 +0.252% 204
Bangladesh Bangladesh 73 +0.642% 88
Bulgaria Bulgaria 72 +1.98% 98
Bahrain Bahrain 80.7 +0.458% 22
Bahamas Bahamas 70.9 +0.0324% 104
Bosnia & Herzegovina Bosnia & Herzegovina 74.4 +2.35% 73
Belarus Belarus 69.5 +0.14% 123
Belize Belize 70.9 +1.93% 103
Bermuda Bermuda 78.9 +0.369% 39
Bolivia Bolivia 66.1 +2.07% 156
Brazil Brazil 72.8 +1.44% 91
Barbados Barbados 73.6 +0.801% 82
Brunei Brunei 73.3 +2.97% 85
Bhutan Bhutan 71.3 +0.281% 101
Botswana Botswana 66.7 +0.576% 150
Central African Republic Central African Republic 55.3 +259% 206
Canada Canada 79.5 +0.569% 31
Switzerland Switzerland 82.3 +0.611% 6
Chile Chile 79.2 +3.14% 34
China China 75.2 -0.352% 62
Côte d’Ivoire Côte d’Ivoire 60 +0.615% 198
Cameroon Cameroon 61.5 +1.98% 189
Congo - Kinshasa Congo - Kinshasa 59.8 +1.54% 199
Congo - Brazzaville Congo - Brazzaville 64.1 +1.12% 169
Colombia Colombia 75 +1.89% 64
Comoros Comoros 64.8 +0.433% 164
Cape Verde Cape Verde 72.9 +0.226% 90
Costa Rica Costa Rica 78.1 +2.17% 42
Cuba Cuba 75.7 +0.628% 59
Curaçao Curaçao 72.5 +0.0856% 93
Cayman Islands Cayman Islands 78 +0.479% 44
Cyprus Cyprus 79.6 +1.65% 30
Czechia Czechia 77 +1.18% 49
Germany Germany 78.2 -0.166% 41
Djibouti Djibouti 63.5 +0.741% 176
Dominica Dominica 68.2 +0.137% 137
Denmark Denmark 80 +0.629% 28
Dominican Republic Dominican Republic 70.5 -0.177% 107
Algeria Algeria 74.9 +0.207% 65
Ecuador Ecuador 74.7 +1.25% 69
Egypt Egypt 69.5 +0.962% 124
Eritrea Eritrea 66.5 +1.27% 152
Spain Spain 81.2 +0.87% 15
Estonia Estonia 74.1 +0.679% 77
Ethiopia Ethiopia 64.1 +0.653% 170
Finland Finland 79.1 +0.508% 36
Fiji Fiji 65.3 +0.298% 160
France France 80.1 +1.01% 27
Faroe Islands Faroe Islands 80.9 +0.248% 20
Micronesia (Federated States of) Micronesia (Federated States of) 63.5 +0.167% 177
Gabon Gabon 65.9 +0.831% 158
United Kingdom United Kingdom 79.4 +0.331% 33
Georgia Georgia 69.6 +0.788% 122
Ghana Ghana 63.1 +0.286% 180
Gibraltar Gibraltar 80.9 +0.0495% 19
Guinea Guinea 59.5 +0.551% 201
Gambia Gambia 64.2 +1.53% 168
Guinea-Bissau Guinea-Bissau 61.7 +0.739% 187
Equatorial Guinea Equatorial Guinea 62 +0.522% 184
Greece Greece 79 +0.894% 37
Grenada Grenada 72.4 +0.0332% 94
Greenland Greenland 69.7 -0.0287% 120
Guatemala Guatemala 70.3 +2.34% 113
Guam Guam 73.4 +0.183% 84
Guyana Guyana 66.5 +0.436% 153
Hong Kong SAR China Hong Kong SAR China 82.5 +2.28% 4
Honduras Honduras 70.3 +0.245% 112
Croatia Croatia 75.4 +1.07% 61
Haiti Haiti 61.7 +1.47% 186
Hungary Hungary 73.6 +1.38% 83
Indonesia Indonesia 69 +0.24% 130
Isle of Man Isle of Man 78.9 +0.057% 38
India India 70.5 +0.406% 108
Ireland Ireland 81.3 +0.494% 14
Iran Iran 75.8 +1.19% 56
Iraq Iraq 70.4 +0.452% 110
Iceland Iceland 80.9 0% 20
Israel Israel 81 +0.372% 18
Italy Italy 81.7 +1.24% 11
Jamaica Jamaica 69 -0.0319% 131
Jordan Jordan 75.7 +0.906% 58
Japan Japan 81.1 +0.0494% 17
Kazakhstan Kazakhstan 70.1 +1.63% 115
Kenya Kenya 61.5 +0.22% 190
Kyrgyzstan Kyrgyzstan 68.2 +0.294% 138
Cambodia Cambodia 68 +0.254% 140
Kiribati Kiribati 64.6 +0.225% 165
St. Kitts & Nevis St. Kitts & Nevis 68.6 +2.61% 135
South Korea South Korea 80.6 +0.876% 23
Kuwait Kuwait 82.7 +3.25% 3
Laos Laos 66.8 +0.365% 149
Lebanon Lebanon 75.7 -0.309% 57
Liberia Liberia 60.9 +0.364% 192
Libya Libya 68.3 -5.19% 136
St. Lucia St. Lucia 69.3 +0.0606% 128
Liechtenstein Liechtenstein 82.5 -0.602% 5
Sri Lanka Sri Lanka 74.2 +0.285% 75
Lesotho Lesotho 54.6 +1% 208
Lithuania Lithuania 72.5 +1.54% 92
Luxembourg Luxembourg 81.7 +1.11% 11
Latvia Latvia 70.8 +2.02% 106
Macao SAR China Macao SAR China 80.4 +0.125% 25
Saint Martin (French part) Saint Martin (French part) 76.8 -0.0221% 50
Morocco Morocco 73.2 +0.151% 86
Monaco Monaco 84.4 +0.74% 1
Moldova Moldova 66.6 -0.148% 151
Madagascar Madagascar 61.9 +0.898% 185
Maldives Maldives 79.7 +0.34% 29
Mexico Mexico 72.2 +1.87% 96
Marshall Islands Marshall Islands 64.9 +0.303% 163
North Macedonia North Macedonia 73.2 +1.3% 87
Mali Mali 59 +0.739% 203
Malta Malta 81.8 +1.74% 9
Myanmar (Burma) Myanmar (Burma) 63.8 +0.804% 173
Montenegro Montenegro 75.1 +1.9% 63
Mongolia Mongolia 67.6 +0.431% 141
Northern Mariana Islands Northern Mariana Islands 77.1 +0.362% 47
Mozambique Mozambique 60.3 +0.878% 193
Mauritania Mauritania 66.5 +0.261% 154
Mauritius Mauritius 70.1 0% 116
Malawi Malawi 64.1 +2.24% 171
Malaysia Malaysia 74.3 +1.67% 74
Namibia Namibia 63.3 +4.92% 178
New Caledonia New Caledonia 76.3 +1.57% 52
Niger Niger 60.3 +1.33% 195
Nigeria Nigeria 54.2 +0.74% 209
Nicaragua Nicaragua 72.3 +0.67% 95
Netherlands Netherlands 80.5 +0.374% 24
Norway Norway 81.6 +0.865% 13
Nepal Nepal 68.8 +0.363% 132
Nauru Nauru 60.3 +0.498% 194
New Zealand New Zealand 81.2 +1.12% 15
Oman Oman 78.5 +2.28% 40
Pakistan Pakistan 65.3 +0.333% 161
Panama Panama 76.7 +0.378% 51
Peru Peru 75.4 +0.599% 60
Philippines Philippines 66.9 +0.524% 146
Palau Palau 67.2 +0.644% 144
Papua New Guinea Papua New Guinea 63.7 +1.39% 175
Poland Poland 74.8 +1.91% 67
Puerto Rico Puerto Rico 78 +3.66% 43
North Korea North Korea 71.5 0% 100
Portugal Portugal 79.5 +0.76% 32
Paraguay Paraguay 70.9 +2.12% 105
Palestinian Territories Palestinian Territories 59.7 -19.6% 200
French Polynesia French Polynesia 81.8 +0.275% 10
Qatar Qatar 81.6 +0.588% 12
Romania Romania 72.9 +2.24% 89
Russia Russia 68 +0.696% 139
Rwanda Rwanda 65.5 +0.392% 159
Saudi Arabia Saudi Arabia 77.1 +2.12% 48
Sudan Sudan 63.3 +0.384% 179
Senegal Senegal 66.8 +1.4% 148
Singapore Singapore 80.7 0% 21
Solomon Islands Solomon Islands 69.2 +0.11% 129
Sierra Leone Sierra Leone 60.1 +0.895% 197
El Salvador El Salvador 67.5 +0.23% 142
San Marino San Marino 84.2 +0.0475% 2
Somalia Somalia 56.4 +8.8% 205
Serbia Serbia 73.9 +1.6% 79
South Sudan South Sudan 54.6 +0.639% 207
São Tomé & Príncipe São Tomé & Príncipe 66.2 +0.742% 155
Suriname Suriname 70.5 +0.564% 109
Slovakia Slovakia 74.7 +1.49% 68
Slovenia Slovenia 79.1 +0.636% 36
Sweden Sweden 81.7 +0.369% 11
Eswatini Eswatini 61.2 +1.79% 191
Sint Maarten Sint Maarten 73.7 +0.171% 81
Seychelles Seychelles 71.3 +2.15% 102
Syria Syria 69.8 -0.787% 119
Turks & Caicos Islands Turks & Caicos Islands 75.8 +0.119% 53
Chad Chad 53.2 +1.02% 210
Togo Togo 62.5 +0.728% 182
Thailand Thailand 72.2 +1.6% 97
Tajikistan Tajikistan 69.6 +0.359% 121
Turkmenistan Turkmenistan 66.9 +0.291% 147
Timor-Leste Timor-Leste 66.1 +0.508% 157
Tonga Tonga 69.4 +0.302% 127
Trinidad & Tobago Trinidad & Tobago 70.4 +0.234% 111
Tunisia Tunisia 73.9 +0.629% 78
Turkey Turkey 74.5 -0.169% 71
Tuvalu Tuvalu 63.8 +0.343% 174
Tanzania Tanzania 64.2 +0.125% 167
Uganda Uganda 65.3 +0.883% 162
Ukraine Ukraine 66.9 +1.07% 145
Uruguay Uruguay 74.2 +2.43% 76
United States United States 75.8 +1.34% 55
Uzbekistan Uzbekistan 69.5 +0.61% 125
St. Vincent & Grenadines St. Vincent & Grenadines 68.7 +0.0525% 134
Venezuela Venezuela 68.7 -0.1% 133
British Virgin Islands British Virgin Islands 74.5 +0.124% 72
U.S. Virgin Islands U.S. Virgin Islands 77.3 +0.259% 46
Vietnam Vietnam 69.9 +0.166% 117
Vanuatu Vanuatu 69.4 +0.222% 126
Samoa Samoa 69.9 +0.178% 118
Kosovo Kosovo 75.8 +0.616% 54
Yemen Yemen 67.2 +2.39% 143
South Africa South Africa 62.6 +1.29% 181
Zambia Zambia 63.9 +1.86% 172
Zimbabwe Zimbabwe 60.2 +0.578% 196

                    
# 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 = 'SP.DYN.LE00.MA.IN'

# 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 <- 'SP.DYN.LE00.MA.IN'

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