Industry (including construction), value added (current US$)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 35,495,737,601 -7.55% 58
Albania Albania 6,089,725,709 +12.4% 106
Andorra Andorra 515,202,279 +9.52% 139
Argentina Argentina 151,928,160,446 -6.15% 26
Armenia Armenia 5,986,645,787 +6.34% 108
Australia Australia 455,008,844,034 -4.77% 13
Austria Austria 120,271,205,002 -6.89% 32
Azerbaijan Azerbaijan 31,667,470,588 -4.62% 62
Belgium Belgium 116,834,637,272 -2.24% 34
Benin Benin 3,734,505,749 +9.71% 120
Burkina Faso Burkina Faso 6,895,971,206 +16% 99
Bangladesh Bangladesh 153,478,008,046 +1.43% 25
Bulgaria Bulgaria 25,231,543,465 +8.75% 65
Bahamas Bahamas 1,524,000,000 +2.07% 132
Bosnia & Herzegovina Bosnia & Herzegovina 6,246,086,446 -4.57% 104
Belarus Belarus 23,326,500,712 +1.54% 68
Brazil Brazil 464,829,835,468 -4.2% 12
Brunei Brunei 9,543,519,858 +2.4% 91
Botswana Botswana 5,696,305,220 -13.9% 110
Central African Republic Central African Republic 489,988,132 -7.4% 140
Switzerland Switzerland 231,562,868,601 +4.94% 17
Chile Chile 99,363,650,038 +2.82% 37
China China 6,836,925,811,689 +1.76% 1
Côte d’Ivoire Côte d’Ivoire 19,134,891,402 +4.88% 76
Cameroon Cameroon 13,153,814,388 +4.54% 85
Congo - Kinshasa Congo - Kinshasa 32,958,679,186 +5.97% 60
Congo - Brazzaville Congo - Brazzaville 6,307,103,216 -8.97% 103
Colombia Colombia 96,570,464,480 +6.77% 39
Comoros Comoros 147,769,437 +8.42% 150
Cape Verde Cape Verde 289,261,404 +5.58% 143
Costa Rica Costa Rica 18,790,634,042 +6.18% 77
Cyprus Cyprus 3,749,994,047 +5.45% 119
Czechia Czechia 104,317,241,082 -0.0857% 35
Germany Germany 1,204,053,022,003 -2.51% 3
Djibouti Djibouti 630,774,057 +12.1% 137
Dominica Dominica 95,588,889 +13.7% 152
Denmark Denmark 103,041,811,569 +7.76% 36
Dominican Republic Dominican Republic 35,699,314,995 +1.12% 57
Ecuador Ecuador 33,054,938,600 -1.05% 59
Egypt Egypt 126,687,551,805 -2.25% 31
Spain Spain 335,976,309,402 +3.09% 15
Estonia Estonia 8,760,172,722 -2.42% 93
Finland Finland 66,353,169,876 -4.2% 46
Fiji Fiji 825,838,732 +6.93% 135
France France 554,882,022,591 -1.56% 8
Gabon Gabon 10,615,512,883 +2.29% 88
United Kingdom United Kingdom 609,968,182,595 +3.49% 6
Georgia Georgia 6,442,866,532 +10.9% 101
Ghana Ghana 23,858,298,497 +0.521% 67
Guinea Guinea 6,406,047,247 +11.1% 102
Gambia Gambia 368,269,316 -7.74% 141
Guinea-Bissau Guinea-Bissau 350,995,601 +7.45% 142
Equatorial Guinea Equatorial Guinea 5,840,681,653 +1.8% 109
Greece Greece 39,492,585,616 +6.13% 53
Grenada Grenada 206,172,381 +4.03% 147
Guatemala Guatemala 24,603,622,731 +5.68% 66
Guyana Guyana 18,452,838,260 +57.4% 78
Honduras Honduras 9,691,042,668 +9.23% 90
Croatia Croatia 18,357,321,731 +3.53% 79
Haiti Haiti 8,414,507,100 +32.5% 95
Hungary Hungary 53,228,531,387 -2.58% 51
Indonesia Indonesia 549,004,054,785 -0.439% 10
India India 957,235,952,029 +3.97% 4
Ireland Ireland 178,075,242,535 -2.69% 21
Iran Iran 159,053,207,067 +8.46% 23
Iraq Iraq 144,215,946,692 -0.602% 27
Iceland Iceland 6,492,397,015 +2.59% 100
Israel Israel 93,733,518,708 -1.09% 41
Italy Italy 515,181,930,568 -3.11% 11
Jamaica Jamaica 3,644,481,603 +0.614% 121
Jordan Jordan 13,410,107,183 +5.86% 83
Kazakhstan Kazakhstan 90,593,483,914 +6.69% 44
Kenya Kenya 20,016,299,767 +9.9% 73
Kyrgyzstan Kyrgyzstan 4,324,592,615 +20.8% 115
Cambodia Cambodia 19,352,534,293 +12.8% 75
St. Kitts & Nevis St. Kitts & Nevis 225,377,778 -0.492% 146
Kuwait Kuwait 91,532,818,406 -8.21% 43
Laos Laos 4,793,504,365 -0.909% 114
Liberia Liberia 1,106,000,000 +7.9% 133
Libya Libya 31,859,700,576 -8.65% 61
St. Lucia St. Lucia 248,622,222 +5.64% 145
Sri Lanka Sri Lanka 25,264,118,778 +17% 64
Lesotho Lesotho 704,797,935 +15.8% 136
Lithuania Lithuania 19,854,845,287 +2.67% 74
Luxembourg Luxembourg 8,396,854,400 -5.7% 96
Latvia Latvia 8,645,725,058 -6.37% 94
Morocco Morocco 37,280,132,494 +5.11% 54
Moldova Moldova 3,054,103,841 +3.32% 124
Madagascar Madagascar 3,973,641,632 +9.15% 116
Maldives Maldives 629,275,311 -1.49% 138
Mexico Mexico 586,107,169,365 +0.591% 7
North Macedonia North Macedonia 3,781,632,920 +3.15% 118
Mali Mali 6,026,226,856 +0.32% 107
Malta Malta 2,779,226,964 +5.98% 127
Myanmar (Burma) Myanmar (Burma) 28,011,318,210 +11.6% 63
Montenegro Montenegro 940,079,860 +0.0545% 134
Mongolia Mongolia 8,978,713,548 +11.7% 92
Mozambique Mozambique 5,513,851,739 +23.6% 111
Mauritania Mauritania 3,289,834,038 +0.965% 123
Mauritius Mauritius 2,663,855,774 +6.11% 128
Malawi Malawi 1,757,048,049 -9.76% 131
Malaysia Malaysia 156,444,388,821 +3.9% 24
Namibia Namibia 3,859,727,092 +3.04% 117
Niger Niger 3,481,849,044 +15.8% 122
Nigeria Nigeria 55,667,439,728 -53% 50
Nicaragua Nicaragua 5,427,030,510 +12% 112
Netherlands Netherlands 219,298,942,013 +1.34% 18
Norway Norway 179,200,806,514 -5.02% 20
Nepal Nepal 4,902,741,446 -0.232% 113
Oman Oman 57,956,827,048 -1.01% 48
Pakistan Pakistan 74,739,079,568 +7.05% 45
Panama Panama 22,656,910,000 -2.26% 69
Peru Peru 93,243,074,536 +2.82% 42
Philippines Philippines 127,840,259,854 +3.73% 29
Papua New Guinea Papua New Guinea 12,095,154,127 +8.16% 86
Poland Poland 241,067,398,047 +0.957% 16
Puerto Rico Puerto Rico 60,368,300,000 +7.83% 47
Portugal Portugal 56,797,174,749 +7.71% 49
Paraguay Paraguay 14,443,840,070 +1.81% 80
Qatar Qatar 127,497,802,198 -0.846% 30
Romania Romania 95,795,059,151 +2.33% 40
Russia Russia 667,805,243,487 +6.02% 5
Rwanda Rwanda 2,987,979,075 +0.703% 125
Saudi Arabia Saudi Arabia 554,847,466,667 -4.35% 9
Sudan Sudan 11,500,154,694 +1.72% 87
Senegal Senegal 8,210,920,769 +16.9% 97
Singapore Singapore 117,016,568,218 +4.54% 33
Sierra Leone Sierra Leone 2,060,591,858 +23.4% 129
El Salvador El Salvador 7,935,300,000 +1.1% 98
Serbia Serbia 20,718,852,031 +6.24% 72
São Tomé & Príncipe São Tomé & Príncipe 22,263,201 +16.2% 153
Slovakia Slovakia 40,444,173,394 +3.64% 52
Slovenia Slovenia 20,849,169,775 +1.52% 71
Sweden Sweden 137,680,550,331 +1.21% 28
Seychelles Seychelles 266,418,224 -7.44% 144
Turks & Caicos Islands Turks & Caicos Islands 162,965,000 +4.89% 149
Chad Chad 6,119,000,527 +5.89% 105
Togo Togo 1,988,010,798 +7.47% 130
Thailand Thailand 169,136,486,118 -0.594% 22
Turkey Turkey 343,287,175,061 +8.18% 14
Tanzania Tanzania 22,608,256,131 +2% 70
Uganda Uganda 13,337,235,079 +6.19% 84
Ukraine Ukraine 36,288,653,071 +4.91% 56
Uruguay Uruguay 13,566,928,726 +3.84% 82
United States United States 5,056,470,000,000 +2.79% 2
Uzbekistan Uzbekistan 36,570,187,520 +14.8% 55
St. Vincent & Grenadines St. Vincent & Grenadines 178,451,852 +12.9% 148
Vietnam Vietnam 179,319,509,944 +9.98% 19
Samoa Samoa 116,897,903 +14.2% 151
Kosovo Kosovo 2,920,710,930 +5.9% 126
South Africa South Africa 97,714,733,628 +4.25% 38
Zambia Zambia 9,865,057,422 +1.89% 89
Zimbabwe Zimbabwe 14,054,954,592 +51.7% 81

                    
# 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 = 'NV.IND.TOTL.CD'

# 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 <- 'NV.IND.TOTL.CD'

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