Use of IMF credit (DOD, current US$)

Source: worldbank.org, 01.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 1,127,013,175 +0.437% 52
Angola Angola 5,449,429,790 -2.41% 16
Albania Albania 524,728,312 -17% 83
Argentina Argentina 47,612,397,027 -8.95% 2
Armenia Armenia 669,625,943 -11.6% 75
Azerbaijan Azerbaijan 709,747,230 +0.813% 72
Burundi Burundi 435,441,543 +15.7% 87
Benin Benin 1,141,974,133 +21% 51
Burkina Faso Burkina Faso 632,346,312 +18.4% 76
Bangladesh Bangladesh 3,932,112,861 +31.9% 21
Bosnia & Herzegovina Bosnia & Herzegovina 930,090,965 -10.5% 60
Belarus Belarus 1,370,959,562 +0.813% 45
Belize Belize 58,342,501 +0.813% 112
Bolivia Bolivia 528,961,279 +0.813% 82
Brazil Brazil 18,072,742,641 +0.813% 5
Bhutan Bhutan 34,268,924 +0.813% 120
Botswana Botswana 330,639,708 +0.813% 94
Central African Republic Central African Republic 504,139,051 +4.42% 86
China China 48,576,699,225 +0.813% 1
Côte d’Ivoire Côte d’Ivoire 4,002,292,913 +21.2% 19
Cameroon Cameroon 2,055,437,787 +9.71% 36
Congo - Kinshasa Congo - Kinshasa 3,997,330,078 +12.3% 20
Congo - Brazzaville Congo - Brazzaville 706,466,847 +33.7% 73
Colombia Colombia 8,650,931,119 +0.813% 11
Comoros Comoros 60,773,607 +5.98% 111
Cape Verde Cape Verde 110,827,274 +24.6% 103
Costa Rica Costa Rica 2,225,619,181 +11.6% 35
Djibouti Djibouti 103,894,867 +0.813% 105
Dominica Dominica 42,396,759 -2.96% 118
Dominican Republic Dominican Republic 1,374,464,003 -9.71% 43
Algeria Algeria 4,127,862,452 +0.813% 18
Ecuador Ecuador 9,233,103,013 -1.64% 10
Egypt Egypt 19,319,376,392 -11.2% 4
Eritrea Eritrea 40,784,072 +0.813% 119
Ethiopia Ethiopia 1,161,232,458 -7.24% 50
Fiji Fiji 216,553,519 +0.813% 99
Gabon Gabon 1,373,901,844 -7.17% 44
Georgia Georgia 1,062,760,619 -1.97% 56
Ghana Ghana 3,630,001,073 +16.2% 26
Guinea Guinea 845,336,357 -4.4% 64
Gambia Gambia 251,088,094 +1.33% 98
Guinea-Bissau Guinea-Bissau 108,381,410 +14.2% 104
Grenada Grenada 66,133,577 -4.62% 107
Guatemala Guatemala 820,705,987 +0.813% 65
Guyana Guyana 350,621,193 +0.813% 92
Honduras Honduras 1,102,822,873 +5.17% 53
Haiti Haiti 552,721,343 +24.3% 80
Indonesia Indonesia 8,634,611,050 +0.813% 12
India India 22,201,707,945 +0.813% 3
Iran Iran 6,500,342,126 +0.813% 15
Iraq Iraq 3,661,648,375 +0.813% 25
Jamaica Jamaica 1,611,393,458 +2% 42
Jordan Jordan 2,527,873,185 -3.1% 31
Kazakhstan Kazakhstan 1,950,690,960 +0.813% 37
Kenya Kenya 3,799,188,290 +12.1% 23
Kyrgyzstan Kyrgyzstan 575,385,730 -10.3% 79
Cambodia Cambodia 337,629,807 +0.813% 93
Laos Laos 204,043,792 +0.813% 100
Lebanon Lebanon 1,073,963,560 +0.813% 54
Liberia Liberia 726,948,775 -4.03% 70
St. Lucia St. Lucia 75,774,814 +0.813% 106
Sri Lanka Sri Lanka 2,853,755,333 +22.7% 27
Lesotho Lesotho 176,795,825 -2.59% 101
Morocco Morocco 3,915,614,351 +0.813% 22
Moldova Moldova 1,178,109,319 +16.9% 49
Madagascar Madagascar 1,343,533,153 +2% 48
Maldives Maldives 66,023,560 +0.813% 108
Mexico Mexico 15,286,469,262 +0.813% 7
North Macedonia North Macedonia 522,570,907 -7.52% 84
Mali Mali 850,776,827 -3.28% 63
Myanmar (Burma) Myanmar (Burma) 1,629,888,373 -2.64% 41
Montenegro Montenegro 173,322,242 -9.75% 102
Mongolia Mongolia 379,795,798 -12.8% 90
Mozambique Mozambique 1,070,704,645 +4.28% 55
Mauritania Mauritania 595,950,841 +7.11% 77
Mauritius Mauritius 312,740,494 +0.813% 95
Malawi Malawi 714,608,098 +1.58% 71
Niger Niger 735,782,328 -0.183% 68
Nigeria Nigeria 7,873,960,877 -8.73% 13
Nicaragua Nicaragua 675,853,973 +0.813% 74
Nepal Nepal 733,277,430 +15.9% 69
Pakistan Pakistan 11,532,067,245 +0.091% 8
Peru Peru 2,534,348,083 +0.813% 30
Philippines Philippines 3,751,297,395 +0.813% 24
Papua New Guinea Papua New Guinea 1,036,547,079 +21.5% 57
Paraguay Paraguay 386,704,055 +0.813% 89
Rwanda Rwanda 813,435,479 +32.7% 66
Sudan Sudan 2,401,192,744 +0.813% 33
Senegal Senegal 2,266,353,610 +40.8% 34
Solomon Islands Solomon Islands 63,593,796 -6.39% 109
Sierra Leone Sierra Leone 880,219,765 -1.3% 61
El Salvador El Salvador 878,089,194 -9.15% 62
Somalia Somalia 374,635,737 -42% 91
Serbia Serbia 2,712,979,312 +9.69% 28
São Tomé & Príncipe São Tomé & Príncipe 61,460,542 -0.8% 110
Suriname Suriname 548,255,830 +41.8% 81
Eswatini Eswatini 257,883,650 -4.08% 97
Syria Syria 752,119,838 +0.813% 67
Chad Chad 964,325,006 -3.18% 58
Togo Togo 595,137,790 -1.97% 78
Thailand Thailand 5,432,055,170 +0.813% 17
Tajikistan Tajikistan 520,641,586 +0.813% 85
Turkmenistan Turkmenistan 400,495,076 +0.813% 88
Timor-Leste Timor-Leste 43,287,627 +0.813% 117
Tonga Tonga 45,090,831 +0.813% 116
Tunisia Tunisia 2,711,233,799 -12.8% 29
Turkey Turkey 7,428,003,327 +0.813% 14
Tanzania Tanzania 1,759,847,855 +21.9% 40
Uganda Uganda 1,907,267,824 +24.5% 38
Ukraine Ukraine 16,476,879,008 +14.2% 6
Uzbekistan Uzbekistan 1,369,578,984 -3.52% 46
St. Vincent & Grenadines St. Vincent & Grenadines 52,879,223 -0.237% 115
Vietnam Vietnam 1,905,152,011 +0.813% 39
Vanuatu Vanuatu 55,851,021 -3.14% 114
Samoa Samoa 57,447,608 -0.534% 113
Kosovo Kosovo 263,621,971 +12.7% 96
Yemen Yemen 950,933,802 -0.555% 59
South Africa South Africa 9,901,055,894 -4.14% 9
Zambia Zambia 2,450,342,126 +19% 32
Zimbabwe Zimbabwe 1,363,159,095 +0.813% 47

                    
# 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 = 'DT.DOD.DIMF.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 <- 'DT.DOD.DIMF.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))