Services, value added (constant 2015 US$)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 49,544,298,840 +4.3% 64
Albania Albania 7,563,237,176 +6.35% 114
Andorra Andorra 2,607,796,362 +2.38% 139
Argentina Argentina 335,795,830,190 -2.09% 22
Armenia Armenia 9,838,200,927 +8.8% 104
Australia Australia 1,067,547,421,318 -8.62% 10
Austria Austria 265,188,949,436 +0.217% 30
Azerbaijan Azerbaijan 29,447,345,844 +6.33% 76
Burundi Burundi 2,138,326,667 +4.59% 140
Belgium Belgium 384,482,395,400 +1.38% 19
Benin Benin 9,105,706,159 +7.54% 108
Burkina Faso Burkina Faso 8,523,251,421 +6.89% 111
Bangladesh Bangladesh 174,447,071,062 +5.09% 40
Bulgaria Bulgaria 41,586,601,319 +3.13% 67
Bahamas Bahamas 10,475,609,520 +2.04% 102
Bosnia & Herzegovina Bosnia & Herzegovina 12,230,931,640 +4.56% 100
Belarus Belarus 29,141,169,529 +3.05% 78
Belize Belize 1,756,927,342 +10.5% 141
Brazil Brazil 1,284,902,768,877 +3.67% 8
Brunei Brunei 5,949,349,687 +2.11% 122
Botswana Botswana 11,614,946,920 +3.3% 101
Central African Republic Central African Republic 883,478,563 +27.1% 149
Canada Canada 1,275,697,428,736 +2.11% 9
Switzerland Switzerland 567,721,844,603 +1.31% 17
Chile Chile 180,419,277,635 +2.48% 38
China China 10,192,512,729,289 +4.96% 2
Côte d’Ivoire Côte d’Ivoire 38,714,681,276 +8.42% 69
Cameroon Cameroon 21,837,076,199 +4.19% 84
Congo - Kinshasa Congo - Kinshasa 16,231,091,538 +3.6% 93
Congo - Brazzaville Congo - Brazzaville 4,454,177,691 +4.3% 130
Colombia Colombia 223,737,727,691 +2.27% 36
Comoros Comoros 680,578,430 +3.42% 154
Cape Verde Cape Verde 1,630,734,217 +6.77% 143
Costa Rica Costa Rica 51,093,687,498 +4.43% 63
Cyprus Cyprus 23,941,554,120 +3.33% 82
Czechia Czechia 130,297,849,816 +1.16% 46
Germany Germany 2,405,694,932,904 +0.719% 3
Djibouti Djibouti 2,901,431,340 +5.15% 137
Dominica Dominica 364,896,347 +0.17% 156
Denmark Denmark 231,749,160,336 +1.14% 35
Dominican Republic Dominican Republic 62,680,626,375 +5.22% 56
Ecuador Ecuador 65,764,784,956 -1.43% 54
Egypt Egypt 262,482,074,314 +4.55% 31
Spain Spain 1,007,935,505,074 +3.67% 11
Estonia Estonia 17,748,360,192 +0.136% 90
Ethiopia Ethiopia 51,600,872,720 +7.7% 62
Finland Finland 162,443,649,942 +0.288% 41
Fiji Fiji 3,132,920,669 +3.28% 136
France France 1,960,746,287,844 +1.78% 5
Gabon Gabon 6,747,630,595 +3.78% 118
United Kingdom United Kingdom 2,363,280,530,182 +1.43% 4
Georgia Georgia 17,473,668,640 +11.7% 92
Ghana Ghana 30,857,410,825 +5.89% 74
Guinea Guinea 5,596,706,416 +4.5% 124
Gambia Gambia 1,052,600,234 +7.74% 148
Guinea-Bissau Guinea-Bissau 771,729,856 +4.18% 150
Equatorial Guinea Equatorial Guinea 5,645,686,470 +1.01% 123
Greece Greece 152,754,352,929 +1.03% 43
Grenada Grenada 758,785,610 +4.7% 151
Guatemala Guatemala 52,708,540,091 +4.48% 61
Guyana Guyana 2,776,624,383 +6.68% 138
Hong Kong SAR China Hong Kong SAR China 304,198,548,110 +2.18% 23
Honduras Honduras 18,716,728,437 +6.63% 87
Croatia Croatia 41,394,976,508 +4.27% 68
Haiti Haiti 7,505,487,888 -3.88% 115
Hungary Hungary 95,060,712,987 +1.9% 49
Indonesia Indonesia 573,850,019,165 +6.23% 16
India India 1,707,029,646,623 +7.29% 6
Ireland Ireland 284,223,138,436 +4.07% 27
Iran Iran 287,075,864,766 +3.09% 25
Iraq Iraq 108,922,732,436 -1.51% 48
Iceland Iceland 15,401,551,999 +1.63% 94
Israel Israel 291,218,463,592 +2.22% 24
Italy Italy 1,365,974,634,556 +0.628% 7
Jamaica Jamaica 9,324,813,059 -0.0908% 107
Jordan Jordan 28,167,220,190 +1.93% 79
Kazakhstan Kazakhstan 136,911,121,918 +4.7% 45
Kenya Kenya 63,745,249,392 +5.02% 55
Kyrgyzstan Kyrgyzstan 4,900,348,939 +9.31% 129
Cambodia Cambodia 13,968,132,413 +4.34% 97
St. Kitts & Nevis St. Kitts & Nevis 681,491,676 +0.918% 153
Kuwait Kuwait 79,752,048,641 +1.74% 51
Laos Laos 8,534,617,904 +5.11% 110
Liberia Liberia 1,361,635,342 +4.23% 146
Libya Libya 24,351,760,303 +10.2% 81
St. Lucia St. Lucia 1,498,936,160 +3.27% 144
Sri Lanka Sri Lanka 54,297,326,599 +2.42% 60
Lesotho Lesotho 1,246,152,415 +2.14% 147
Lithuania Lithuania 33,053,345,347 +2.53% 71
Luxembourg Luxembourg 57,161,837,380 +1.21% 58
Latvia Latvia 21,089,259,638 +0.177% 86
Morocco Morocco 73,900,391,231 +3.54% 52
Moldova Moldova 5,298,372,594 +1.5% 126
Madagascar Madagascar 6,736,575,412 -3.43% 119
Maldives Maldives 5,076,586,837 +9.31% 128
Mexico Mexico 842,281,142,554 +2.32% 13
Mali Mali 9,558,315,770 +6.69% 106
Malta Malta 15,300,600,583 +4.08% 95
Myanmar (Burma) Myanmar (Burma) 24,627,229,065 -0.214% 80
Montenegro Montenegro 3,353,398,851 +2.55% 135
Mongolia Mongolia 8,271,441,700 +9.84% 113
Mozambique Mozambique 8,850,009,410 +1.22% 109
Mauritania Mauritania 4,364,149,069 +4.63% 133
Mauritius Mauritius 9,766,459,771 +4.31% 105
Malawi Malawi 6,551,878,079 +2.55% 121
Malaysia Malaysia 239,341,300,998 +5.44% 34
Namibia Namibia 7,074,370,365 +4.94% 117
Niger Niger 5,287,226,128 +3.32% 127
Nigeria Nigeria 352,140,035,444 +4.7% 21
Nicaragua Nicaragua 7,414,508,056 +4.11% 116
Netherlands Netherlands 661,007,617,097 +1.67% 15
Norway Norway 254,070,212,647 +2.48% 32
Nepal Nepal 17,681,495,760 +4.35% 91
Oman Oman 46,905,986,040 +3.39% 65
Pakistan Pakistan 222,841,540,477 +2.35% 37
Panama Panama 54,459,154,729 +4.89% 59
Peru Peru 127,621,259,703 +3.25% 47
Philippines Philippines 284,853,972,027 +6.71% 26
Papua New Guinea Papua New Guinea 12,906,931,994 +5.65% 99
Portugal Portugal 159,111,569,593 +1.8% 42
Paraguay Paraguay 23,179,093,098 +4.8% 83
Palestinian Territories Palestinian Territories 6,562,400,000 -25.7% 120
Qatar Qatar 90,316,503,806 +4.47% 50
Romania Romania 139,393,912,459 +0.871% 44
Russia Russia 932,869,767,063 +5.51% 12
Rwanda Rwanda 8,305,104,958 +10.3% 112
Saudi Arabia Saudi Arabia 506,021,300,656 +4.72% 18
Sudan Sudan 9,891,516,303 -22% 103
Senegal Senegal 13,970,008,901 +3.3% 96
Singapore Singapore 283,520,984,420 +4.42% 28
Sierra Leone Sierra Leone 4,442,082,299 +4.92% 131
El Salvador El Salvador 17,878,124,538 +2.41% 89
Serbia Serbia 31,923,218,849 +5.04% 72
São Tomé & Príncipe São Tomé & Príncipe 238,410,583 +0.893% 157
Slovakia Slovakia 67,984,094,590 +1.67% 53
Slovenia Slovenia 30,997,413,029 +1.71% 73
Sweden Sweden 382,649,778,954 +1.37% 20
Seychelles Seychelles 1,402,096,275 +5.78% 145
Turks & Caicos Islands Turks & Caicos Islands 1,700,164,076 +5.11% 142
Chad Chad 5,434,105,345 +5.13% 125
Togo Togo 4,404,618,222 +6.21% 132
Thailand Thailand 279,598,497,968 +3.98% 29
Tunisia Tunisia 30,289,530,966 +1.61% 75
Turkey Turkey 721,932,173,418 -1.99% 14
Tanzania Tanzania 29,355,553,927 +6.71% 77
Uganda Uganda 21,726,904,218 +6.84% 85
Ukraine Ukraine 45,596,669,002 +4% 66
Uruguay Uruguay 38,671,159,386 +1.94% 70
United States United States 16,587,361,747,163 +0.00262% 1
Uzbekistan Uzbekistan 59,546,865,801 +7.69% 57
St. Vincent & Grenadines St. Vincent & Grenadines 622,782,324 +4.43% 155
Vietnam Vietnam 177,959,742,800 +7.38% 39
Samoa Samoa 700,066,780 +11.2% 152
Kosovo Kosovo 4,227,487,162 +2.29% 134
South Africa South Africa 248,145,924,932 +1.23% 33
Zambia Zambia 17,963,423,337 +5.57% 88
Zimbabwe Zimbabwe 13,332,177,011 +5.62% 98

                    
# 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.SRV.TOTL.KD'

# 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.SRV.TOTL.KD'

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