Imports of goods, services and primary income (BoP, current US$)

Source: worldbank.org, 03.09.2025

Year: 2024

Flag Country Value Value change, % Rank
Angola Angola 30,997,912,088 -5.71% 73
Albania Albania 12,940,759,076 +12.4% 85
Argentina Argentina 98,923,797,191 -11.8% 47
Armenia Armenia 20,749,660,115 +29.6% 78
Antigua & Barbuda Antigua & Barbuda 1,416,191,038 +2.65% 106
Australia Australia 530,674,445,261 +2.86% 19
Austria Austria 333,138,182,779 -1.21% 28
Azerbaijan Azerbaijan 32,667,281,000 +8.22% 72
Belgium Belgium 629,627,715,025 -2.3% 17
Bangladesh Bangladesh 80,055,105,884 +3.29% 51
Bulgaria Bulgaria 69,050,340,000 +0.255% 53
Bahrain Bahrain 41,923,138,298 +5% 64
Bahamas Bahamas 7,989,761,929 +10.6% 93
Bosnia & Herzegovina Bosnia & Herzegovina 17,596,407,988 +5.97% 81
Belarus Belarus 54,111,113,588 +5.23% 60
Belize Belize 1,875,580,820 +9.99% 100
Brazil Brazil 487,706,709,635 +8.08% 21
Brunei Brunei 9,618,836,424 -2.24% 91
Bhutan Bhutan 1,723,788,065 -11.7% 102
Canada Canada 916,853,633,485 +2.32% 11
Switzerland Switzerland 825,915,172,350 +3.36% 13
Chile Chile 128,353,459,100 +0.983% 43
China China 3,693,275,518,541 +3.85% 2
Colombia Colombia 101,696,145,239 +2.88% 44
Cape Verde Cape Verde 1,571,549,943 +4.96% 104
Costa Rica Costa Rica 39,901,385,927 +9.26% 65
Cyprus Cyprus 68,643,728,917 +2.92% 54
Czechia Czechia 249,546,206,180 -0.544% 32
Germany Germany 2,079,221,589,601 +0.246% 3
Djibouti Djibouti 4,923,082,738 -9.77% 97
Dominica Dominica 395,392,592 -7.19% 113
Denmark Denmark 288,139,957,352 +4.44% 31
Dominican Republic Dominican Republic 44,295,600,000 +7.22% 63
Ecuador Ecuador 37,599,680,039 -2.41% 68
Spain Spain 704,954,402,780 +4.51% 16
Estonia Estonia 36,655,104,400 +1.8% 69
Finland Finland 154,288,537,176 -1.66% 39
France France 1,425,685,948,895 +1.78% 5
United Kingdom United Kingdom 1,716,188,959,616 +1.83% 4
Georgia Georgia 22,888,250,048 +3.58% 75
Gambia Gambia 1,575,531,353 +12.7% 103
Greece Greece 139,110,488,969 +3.39% 40
Grenada Grenada 1,155,712,604 +6.29% 107
Guatemala Guatemala 39,636,629,440 +7.35% 67
Hong Kong SAR China Hong Kong SAR China 967,272,743,090 +7.75% 10
Honduras Honduras 21,627,972,273 +2.9% 76
Croatia Croatia 56,683,932,947 +7.48% 59
Hungary Hungary 192,313,725,300 -4.11% 34
Indonesia Indonesia 325,327,306,051 +6.1% 29
India India 1,026,045,621,699 +8.58% 9
Iceland Iceland 15,618,354,230 +9.87% 82
Israel Israel 163,772,500,000 +0.96% 37
Italy Italy 871,599,289,088 -1.25% 12
Jamaica Jamaica 10,444,589,505 -2.48% 89
Japan Japan 1,131,817,054,393 -1.52% 7
Kazakhstan Kazakhstan 100,068,861,101 -3.04% 46
Cambodia Cambodia 35,296,638,490 +14.4% 70
St. Kitts & Nevis St. Kitts & Nevis 700,620,687 -3.36% 109
South Korea South Korea 803,427,900,000 +0.225% 14
Kuwait Kuwait 68,009,503,086 -1.28% 56
St. Lucia St. Lucia 1,755,162,943 +13.9% 101
Lesotho Lesotho 2,192,773,871 +0.579% 99
Lithuania Lithuania 64,064,132,793 +1.06% 57
Luxembourg Luxembourg 561,572,002,657 +4.27% 18
Latvia Latvia 33,215,388,094 -1.82% 71
Moldova Moldova 11,395,400,000 +6.82% 87
Maldives Maldives 6,142,398,614 +5.98% 95
Mexico Mexico 773,014,872,155 +4.45% 15
North Macedonia North Macedonia 13,766,307,233 +0.0584% 83
Malta Malta 48,383,100,216 +2.81% 61
Montenegro Montenegro 6,018,981,276 +8.52% 96
Mozambique Mozambique 13,409,983,076 +0.425% 84
Malaysia Malaysia 313,386,341,751 +9.97% 30
Namibia Namibia 10,307,450,533 +9.34% 90
Nigeria Nigeria 68,239,131,461 -13% 55
Nicaragua Nicaragua 12,803,500,000 +9.87% 86
Netherlands Netherlands 1,305,241,673,790 -0.548% 6
Norway Norway 213,935,082,238 +3.42% 33
Nepal Nepal 18,039,470,762 +28.1% 80
New Zealand New Zealand 84,999,678,626 +1.25% 50
Pakistan Pakistan 77,342,574,086 +17.4% 52
Panama Panama 39,784,570,220 -9.48% 66
Peru Peru 90,208,393,677 +7.87% 49
Philippines Philippines 173,931,632,493 +6.4% 36
Poland Poland 497,877,000,000 +3.99% 20
Portugal Portugal 161,890,642,532 +2.18% 38
Paraguay Paraguay 20,353,303,484 +2.77% 79
Palestinian Territories Palestinian Territories 8,355,361,322 -29% 92
Qatar Qatar 96,346,978,022 +0.964% 48
Romania Romania 179,406,738,978 +4.21% 35
Russia Russia 434,852,960,000 -1.34% 22
Saudi Arabia Saudi Arabia 351,012,272,357 +10.9% 27
Singapore Singapore 1,074,610,746,626 +8.97% 8
Solomon Islands Solomon Islands 924,309,317 -0.0234% 108
El Salvador El Salvador 21,059,021,983 +7.35% 77
Suriname Suriname 3,010,032,778 +17.1% 98
Slovakia Slovakia 128,411,457,189 +0.834% 42
Slovenia Slovenia 58,788,091,338 +2.62% 58
Sweden Sweden 379,439,453,583 +2.86% 26
Thailand Thailand 382,138,268,317 +7.38% 25
Tajikistan Tajikistan 7,378,891,142 +19% 94
Timor-Leste Timor-Leste 1,542,253,280 +3.76% 105
Tonga Tonga 411,094,557 +3.55% 112
Trinidad & Tobago Trinidad & Tobago 11,081,176,719 +11.6% 88
Turkey Turkey 392,343,000,000 -3.37% 24
Ukraine Ukraine 100,877,000,000 +4.64% 45
Uruguay Uruguay 26,866,524,326 -0.522% 74
United States United States 5,552,042,000,000 +7.46% 1
Uzbekistan Uzbekistan 48,156,759,424 +2.52% 62
St. Vincent & Grenadines St. Vincent & Grenadines 659,971,410 +10.4% 110
Vietnam Vietnam 419,907,000,000 +14.5% 23
Samoa Samoa 621,474,813 +2.42% 111
South Africa South Africa 138,181,494,620 -1.59% 41

                    
# 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 = 'BM.GSR.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 <- 'BM.GSR.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))