Capture fisheries production (metric tons)

Source: worldbank.org, 03.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Aruba Aruba 172 +4.24% 186
Afghanistan Afghanistan 2,000 +11.1% 157
Angola Angola 469,336 -11.2% 34
Albania Albania 8,740 -9.36% 137
Andorra Andorra 0 194
United Arab Emirates United Arab Emirates 65,510 -3.58% 83
Argentina Argentina 847,753 -0.565% 19
Armenia Armenia 1,000 +29.9% 171
American Samoa American Samoa 1,311 +9.72% 168
Antigua & Barbuda Antigua & Barbuda 3,230 +0.78% 149
Australia Australia 165,059 +2.66% 58
Austria Austria 350 0% 181
Azerbaijan Azerbaijan 1,790 +22.3% 161
Burundi Burundi 19,935 +1.97% 119
Belgium Belgium 18,710 +4.31% 122
Benin Benin 76,105 +2% 80
Burkina Faso Burkina Faso 30,044 +1.05% 110
Bangladesh Bangladesh 2,027,661 +2.28% 11
Bulgaria Bulgaria 5,594 -37.9% 143
Bahrain Bahrain 19,837 +16.7% 120
Bahamas Bahamas 9,345 +7.36% 135
Bosnia & Herzegovina Bosnia & Herzegovina 305 0% 182
Belarus Belarus 356 -41.8% 179
Belize Belize 204,764 +6.92% 49
Bermuda Bermuda 392 -6.44% 178
Brazil Brazil 758,512 -1.35% 23
Barbados Barbados 852 +0.587% 173
Brunei Brunei 16,060 +5% 128
Bhutan Bhutan 9 +718% 192
Botswana Botswana 38 0% 190
Central African Republic Central African Republic 29,000 +3.57% 113
Canada Canada 704,177 -6.62% 25
Switzerland Switzerland 1,486 0% 165
Chile Chile 2,690,091 +12.5% 9
China China 13,179,077 +0.276% 1
Côte d’Ivoire Côte d’Ivoire 99,943 -4.15% 75
Cameroon Cameroon 299,035 +3% 45
Congo - Brazzaville Congo - Brazzaville 64,134 -7.61% 86
Colombia Colombia 107,570 -17.3% 70
Comoros Comoros 18,933 -2.39% 121
Cape Verde Cape Verde 7,759 -33.2% 138
Costa Rica Costa Rica 33,669 +13.8% 104
Cuba Cuba 14,535 -19.5% 130
Curaçao Curaçao 8,827 -64.7% 136
Cayman Islands Cayman Islands 125 0% 187
Cyprus Cyprus 1,301 -7.16% 169
Czechia Czechia 3,381 +2.02% 148
Germany Germany 179,721 -4.23% 55
Djibouti Djibouti 3,121 +1.02% 150
Dominica Dominica 290 +0.705% 183
Denmark Denmark 458,193 -1.76% 35
Dominican Republic Dominican Republic 18,010 +1.94% 124
Algeria Algeria 80,790 +2.01% 78
Ecuador Ecuador 688,326 -20.3% 26
Egypt Egypt 440,197 +3.39% 38
Eritrea Eritrea 1,591 +6.81% 162
Spain Spain 809,094 +0.744% 20
Estonia Estonia 73,939 +2.36% 81
Ethiopia Ethiopia 101,400 +38.6% 74
Finland Finland 122,684 -7.95% 67
Fiji Fiji 32,626 -1.16% 107
France France 534,876 +4.72% 28
Faroe Islands Faroe Islands 605,910 +12.1% 27
Gabon Gabon 31,010 +3.92% 109
Georgia Georgia 197,788 +0.108% 52
Ghana Ghana 519,627 +32.3% 31
Gibraltar Gibraltar 1 0% 193
Guinea Guinea 334,870 +3% 42
Gambia Gambia 53,947 +1.46% 92
Guinea-Bissau Guinea-Bissau 63,835 +0.971% 87
Equatorial Guinea Equatorial Guinea 6,610 +4.8% 140
Greece Greece 65,495 +9.83% 84
Grenada Grenada 1,856 +53.2% 160
Greenland Greenland 307,055 +13.3% 44
Guatemala Guatemala 16,257 +46.7% 127
Guam Guam 352 +1,268% 180
Guyana Guyana 36,253 +5.95% 102
Hong Kong SAR China Hong Kong SAR China 77,200 -33% 79
Honduras Honduras 20,193 -6.86% 118
Croatia Croatia 63,683 +1.98% 88
Haiti Haiti 16,710 +3.02% 126
Hungary Hungary 4,597 -0.0761% 144
Indonesia Indonesia 7,398,555 +2.41% 2
Isle of Man Isle of Man 3,041 -0.0112% 151
India India 5,539,025 +10.2% 3
Ireland Ireland 203,539 -13.1% 50
Iraq Iraq 44,550 +1.99% 97
Iceland Iceland 1,434,724 +22.5% 16
Israel Israel 2,055 +0.983% 156
Italy Italy 143,646 -5.33% 63
Jamaica Jamaica 12,529 -5.3% 132
Jordan Jordan 675 +1.5% 175
Japan Japan 2,967,756 -8.8% 8
Kazakhstan Kazakhstan 42,692 +2.98% 100
Kenya Kenya 145,801 +3.19% 62
Kyrgyzstan Kyrgyzstan 31 +40.9% 191
Cambodia Cambodia 533,450 +5% 30
Kiribati Kiribati 203,294 +6.37% 51
St. Kitts & Nevis St. Kitts & Nevis 670 -0.376% 176
Kuwait Kuwait 1,886 -46.5% 159
Lebanon Lebanon 2,620 +1.55% 153
Liberia Liberia 29,338 +16.6% 112
Libya Libya 32,585 +1.98% 108
St. Lucia St. Lucia 1,443 +1.99% 166
Liechtenstein Liechtenstein 0 194
Sri Lanka Sri Lanka 332,623 -10.7% 43
Lesotho Lesotho 79 +5.33% 188
Lithuania Lithuania 106,922 +11.2% 72
Luxembourg Luxembourg 0 194
Latvia Latvia 61,508 -0.243% 89
Macao SAR China Macao SAR China 1,500 0% 164
Morocco Morocco 1,590,644 +11.1% 15
Monaco Monaco 1 0% 193
Madagascar Madagascar 127,190 +11.2% 66
Maldives Maldives 155,205 +7.04% 60
Mexico Mexico 1,683,376 +0.664% 14
Marshall Islands Marshall Islands 91,636 -4.37% 76
North Macedonia North Macedonia 447 -13% 177
Mali Mali 110,366 +4.71% 68
Malta Malta 2,809 +12.2% 152
Myanmar (Burma) Myanmar (Burma) 1,864,730 +11.9% 12
Montenegro Montenegro 855 +5.82% 172
Mongolia Mongolia 0 194
Mozambique Mozambique 456,375 +11.5% 36
Mauritania Mauritania 780,383 +2.3% 22
Mauritius Mauritius 33,284 +10.8% 105
Malawi Malawi 186,865 +9.56% 53
Malaysia Malaysia 1,318,359 -1.48% 18
Namibia Namibia 415,669 +1.17% 39
New Caledonia New Caledonia 4,208 +27.3% 146
Niger Niger 47,670 +0.996% 95
Nigeria Nigeria 784,124 -2.62% 21
Nicaragua Nicaragua 53,732 -2.79% 93
Netherlands Netherlands 298,622 -0.307% 46
Norway Norway 2,613,634 +1.31% 10
Nepal Nepal 21,000 0% 117
Nauru Nauru 106,750 -11.3% 73
New Zealand New Zealand 346,318 +0.818% 40
Oman Oman 748,355 -18.8% 24
Pakistan Pakistan 500,045 +0.804% 32
Panama Panama 186,645 -16.2% 54
Peru Peru 5,368,101 -18.4% 4
Philippines Philippines 1,771,247 -3.84% 13
Palau Palau 813 -1.33% 174
Papua New Guinea Papua New Guinea 237,730 +26% 47
Poland Poland 178,523 -11.4% 56
Puerto Rico Puerto Rico 1,581 +0.0816% 163
Portugal Portugal 159,891 -10.9% 59
Paraguay Paraguay 17,905 +1.96% 125
Palestinian Territories Palestinian Territories 4,195 -9.99% 147
French Polynesia French Polynesia 11,583 -12.5% 133
Qatar Qatar 18,439 +11.4% 123
Romania Romania 6,256 -1.48% 141
Russia Russia 4,991,530 -3.41% 5
Rwanda Rwanda 32,735 +2% 106
Saudi Arabia Saudi Arabia 64,263 -4.74% 85
Sudan Sudan 44,250 +8.01% 98
Senegal Senegal 533,771 +3.86% 29
Singapore Singapore 207 -32.3% 185
Solomon Islands Solomon Islands 47,838 -4% 94
Sierra Leone Sierra Leone 215,140 +5% 48
El Salvador El Salvador 60,115 +1.86% 90
San Marino San Marino 0 194
Somalia Somalia 30,000 0% 111
Serbia Serbia 2,379 +1.1% 155
South Sudan South Sudan 47,000 +6.82% 96
São Tomé & Príncipe São Tomé & Príncipe 5,703 +11.5% 142
Suriname Suriname 33,695 +4.87% 103
Slovakia Slovakia 1,895 +4.41% 158
Slovenia Slovenia 272 +1.29% 184
Sweden Sweden 152,028 -9.16% 61
Eswatini Eswatini 65 0% 189
Seychelles Seychelles 137,838 -4.43% 64
Syria Syria 4,430 +2.78% 145
Chad Chad 107,000 +3.88% 71
Togo Togo 21,505 +19.6% 116
Thailand Thailand 1,385,491 -2.06% 17
Tajikistan Tajikistan 2,425 +3.18% 154
Turkmenistan Turkmenistan 15,097 +0.366% 129
Timor-Leste Timor-Leste 6,707 +2.77% 139
Tonga Tonga 1,326 +18.9% 167
Trinidad & Tobago Trinidad & Tobago 13,069 -0.116% 131
Tunisia Tunisia 128,705 +3.59% 65
Turkey Turkey 335,003 +2.09% 41
Tuvalu Tuvalu 42,781 +37.6% 99
Tanzania Tanzania 38,650 +5.03% 101
Uganda Uganda 444,935 -29.9% 37
Ukraine Ukraine 22,721 -64% 115
Uruguay Uruguay 68,782 +3.74% 82
United States United States 4,262,836 -1.05% 6
Uzbekistan Uzbekistan 55,000 +3.77% 91
British Virgin Islands British Virgin Islands 1,134 +0.11% 170
Vietnam Vietnam 3,590,003 +1.41% 7
Vanuatu Vanuatu 88,117 +26.1% 77
Samoa Samoa 9,589 +4.5% 134
Yemen Yemen 178,190 +15% 57
South Africa South Africa 473,451 -4.18% 33
Zambia Zambia 109,428 +4.09% 69
Zimbabwe Zimbabwe 26,161 +15.1% 114

                    
# 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 = 'ER.FSH.CAPT.MT'

# 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 <- 'ER.FSH.CAPT.MT'

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