Air transport, registered carrier departures worldwide

Source: worldbank.org, 01.09.2025

Year: 2021

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 2,866 -38.2% 114
Angola Angola 3,805 +0.343% 109
Albania Albania 1,471 +15.5% 128
United Arab Emirates United Arab Emirates 234,612 +26.6% 20
Argentina Argentina 54,218 +97.5% 49
Armenia Armenia 1,598 +127% 125
Antigua & Barbuda Antigua & Barbuda 2,105 +3,189% 119
Australia Australia 383,008 +23.2% 11
Austria Austria 161,093 +32.4% 23
Azerbaijan Azerbaijan 15,844 +36% 78
Belgium Belgium 73,673 +29.1% 39
Burkina Faso Burkina Faso 3,007 +68% 113
Bangladesh Bangladesh 50,991 +19.1% 50
Bulgaria Bulgaria 464 -92.6% 145
Bahrain Bahrain 29,475 +67.6% 61
Bahamas Bahamas 27,093 -13.4% 64
Belarus Belarus 12,432 -25.2% 85
Belize Belize 95,609 -26.9% 35
Bolivia Bolivia 45,832 +46.2% 53
Brazil Brazil 529,115 +34.4% 8
Brunei Brunei 1,186 -72% 134
Bhutan Bhutan 696 -46.9% 141
Botswana Botswana 2,593 -60.3% 116
Canada Canada 571,070 +11.6% 6
Switzerland Switzerland 96,370 +18.6% 34
Chile Chile 95,001 +30.4% 36
China China 3,906,386 +6.5% 2
Côte d’Ivoire Côte d’Ivoire 11,812 +47.1% 86
Cameroon Cameroon 5,017 +329% 105
Congo - Kinshasa Congo - Kinshasa 4,874 +28.7% 107
Congo - Brazzaville Congo - Brazzaville 1,929 +77% 121
Colombia Colombia 273,874 +97% 19
Cape Verde Cape Verde 1,625 -61.7% 124
Costa Rica Costa Rica 19,350 +65.4% 71
Cuba Cuba 756 -64.4% 140
Cyprus Cyprus 1,423 +27.3% 131
Czechia Czechia 11,231 +14.2% 89
Germany Germany 368,400 +18% 13
Dominican Republic Dominican Republic 3,106 +24.4% 111
Algeria Algeria 27,650 +47.7% 63
Ecuador Ecuador 15,996 +32.7% 76
Egypt Egypt 57,871 +27.6% 45
Spain Spain 381,188 +45.5% 12
Ethiopia Ethiopia 99,415 +37.7% 32
Finland Finland 42,598 -10.1% 54
Fiji Fiji 5,791 -44.6% 101
France France 332,174 +23.6% 15
United Kingdom United Kingdom 289,731 -4.53% 17
Georgia Georgia 1,000 +29.2% 136
Ghana Ghana 13,321 +49% 84
Equatorial Guinea Equatorial Guinea 1,238 -59.4% 133
Greece Greece 108,338 +43.7% 31
Guatemala Guatemala 48 -92.9% 152
Guyana Guyana 624 -58.5% 142
Hong Kong SAR China Hong Kong SAR China 55,653 -21.5% 47
Honduras Honduras 14,225 +8.21% 81
Croatia Croatia 15,982 +24.5% 77
Haiti Haiti 1,563 0% 126
Hungary Hungary 130,120 +21.7% 27
Indonesia Indonesia 348,232 -18.1% 14
India India 739,481 +26.8% 4
Ireland Ireland 493,773 +33.8% 9
Iran Iran 157,786 +18.7% 24
Iraq Iraq 20,505 +109% 69
Iceland Iceland 24,518 +80.4% 65
Israel Israel 23,090 +88.9% 67
Italy Italy 37,123 -62.6% 55
Jordan Jordan 19,200 +89.9% 72
Japan Japan 657,016 -0.417% 5
Kazakhstan Kazakhstan 72,454 +30.9% 40
Kenya Kenya 50,778 +53% 51
Kyrgyzstan Kyrgyzstan 1,498 -5.09% 127
Cambodia Cambodia 391 -93.1% 148
Kiribati Kiribati 3,313 -11.7% 110
South Korea South Korea 287,163 +12.9% 18
Kuwait Kuwait 20,436 +20.2% 70
Laos Laos 2,758 -57.8% 115
Lebanon Lebanon 13,934 +42% 83
Libya Libya 9,046 +50% 92
Sri Lanka Sri Lanka 11,210 +11.6% 90
Lithuania Lithuania 1,469 -43.9% 129
Luxembourg Luxembourg 36,357 +10.3% 56
Latvia Latvia 23,795 +3.01% 66
Macao SAR China Macao SAR China 6,773 +4.68% 98
Morocco Morocco 50,340 +54.8% 52
Moldova Moldova 4,934 +73% 106
Madagascar Madagascar 2,038 -51.8% 120
Maldives Maldives 7,647 -15.5% 95
Mexico Mexico 445,488 +38.2% 10
Marshall Islands Marshall Islands 2,478 +29.2% 117
Malta Malta 5,635 -10.4% 103
Myanmar (Burma) Myanmar (Burma) 20,653 -32.1% 68
Montenegro Montenegro 20 -99.7% 154
Mongolia Mongolia 1,435 -54.7% 130
Mozambique Mozambique 7,583 +11.9% 96
Mauritania Mauritania 4,104 +86.1% 108
Mauritius Mauritius 2,348 -45.6% 118
Malawi Malawi 405 +10.2% 147
Malaysia Malaysia 83,982 -49.9% 37
Namibia Namibia 32.4 -94.5% 153
Niger Niger 447 -5.1% 146
Nigeria Nigeria 74,453 +44.5% 38
Netherlands Netherlands 206,208 +20.6% 22
Nepal Nepal 28,642 -20.2% 62
Nauru Nauru 255 -23.9% 150
New Zealand New Zealand 135,903 +10.5% 26
Oman Oman 18,219 -4.18% 73
Pakistan Pakistan 36,261 +29.9% 57
Panama Panama 71,789 +120% 41
Peru Peru 70,558 +66.4% 43
Philippines Philippines 71,556 -18.7% 42
Papua New Guinea Papua New Guinea 34,007 -7.25% 58
Poland Poland 60,781 +25.6% 44
North Korea North Korea 9.33 -78.8% 155
Portugal Portugal 97,777 +32.6% 33
Paraguay Paraguay 1,917 +9.73% 122
Qatar Qatar 156,726 +23.4% 25
Romania Romania 30,789 +39.2% 60
Russia Russia 825,994 +32.5% 3
Rwanda Rwanda 9,413 +10.8% 91
Saudi Arabia Saudi Arabia 219,247 +51.4% 21
Sudan Sudan 15,413 +582% 79
Senegal Senegal 6,286 +43.6% 100
Singapore Singapore 56,482 -12.1% 46
Solomon Islands Solomon Islands 5,489 -17.8% 104
El Salvador El Salvador 13,969 +59.8% 82
Serbia Serbia 17,412 +36.3% 75
São Tomé & Príncipe São Tomé & Príncipe 524 +43.2% 144
Suriname Suriname 373 -86.4% 149
Slovakia Slovakia 72 +140% 151
Slovenia Slovenia 854 -74% 138
Sweden Sweden 293,983 +75% 16
Eswatini Eswatini 811 +44.6% 139
Seychelles Seychelles 8,802 +3.83% 93
Syria Syria 5,705 +115% 102
Togo Togo 11,293 +82.4% 88
Thailand Thailand 119,077 -46.9% 29
Tajikistan Tajikistan 1,138 -55% 135
Turkmenistan Turkmenistan 6,511 -32.7% 99
Trinidad & Tobago Trinidad & Tobago 11,513 -8.23% 87
Tunisia Tunisia 17,557 +23.9% 74
Turkey Turkey 534,041 +46.4% 7
Tanzania Tanzania 54,741 +28.2% 48
Uganda Uganda 1,356 +101% 132
Ukraine Ukraine 33,922 +66% 59
United States United States 8,005,775 +29.6% 1
Uzbekistan Uzbekistan 14,343 +93.2% 80
Venezuela Venezuela 3,017 -21.8% 112
Vietnam Vietnam 117,353 -44.7% 30
Vanuatu Vanuatu 8,552 -11.3% 94
Samoa Samoa 993 -26.6% 137
Yemen Yemen 560 0% 143
South Africa South Africa 126,160 +42.4% 28
Zambia Zambia 7,072 +810% 97
Zimbabwe Zimbabwe 1,733 -49.8% 123

                    
# 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 = 'IS.AIR.DPRT'

# 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 <- 'IS.AIR.DPRT'

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