Crop production index (2014-2016 = 100)

Source: worldbank.org, 01.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 121 -3.45% 44
Angola Angola 122 +5.36% 42
Albania Albania 122 +6.1% 43
United Arab Emirates United Arab Emirates 116 +2.39% 61
Argentina Argentina 107 +0.131% 91
Armenia Armenia 73.7 +2.45% 185
Antigua & Barbuda Antigua & Barbuda 81.7 -0.0856% 178
Australia Australia 146 +13.2% 9
Austria Austria 100 -0.427% 127
Azerbaijan Azerbaijan 145 +1.65% 11
Burundi Burundi 118 -0.296% 54
Belgium Belgium 95.9 -2.29% 147
Benin Benin 128 -1.14% 27
Burkina Faso Burkina Faso 123 +10.3% 41
Bangladesh Bangladesh 119 +2.27% 49
Bulgaria Bulgaria 103 -9.44% 115
Bahrain Bahrain 107 +0.159% 93
Bahamas Bahamas 102 +0.423% 119
Bosnia & Herzegovina Bosnia & Herzegovina 128 +18.7% 28
Belarus Belarus 93.2 +3.94% 161
Belize Belize 98.4 -1.49% 136
Bolivia Bolivia 112 -4.28% 69
Brazil Brazil 116 +0.485% 62
Barbados Barbados 108 +19.5% 79
Brunei Brunei 97.3 +1.52% 142
Bhutan Bhutan 68.1 -25.5% 188
Botswana Botswana 138 -6.3% 13
Central African Republic Central African Republic 173 +2.39% 3
Canada Canada 108 +28.5% 83
Switzerland Switzerland 97.4 +20.9% 141
Chile Chile 106 -0.765% 97
China China 112 +1.9% 68
Côte d’Ivoire Côte d’Ivoire 133 +2.56% 19
Cameroon Cameroon 109 +1.73% 77
Congo - Kinshasa Congo - Kinshasa 124 +4.26% 35
Congo - Brazzaville Congo - Brazzaville 106 +1.09% 99
Colombia Colombia 112 +2.51% 71
Comoros Comoros 108 +0.0371% 84
Cape Verde Cape Verde 66.2 -6.2% 190
Costa Rica Costa Rica 96.1 -1.37% 146
Cuba Cuba 65.8 -0.469% 191
Cyprus Cyprus 85.5 +1.28% 171
Czechia Czechia 94 +1.86% 156
Germany Germany 91.5 +1.21% 165
Djibouti Djibouti 139 -7.35% 12
Dominica Dominica 101 -0.0199% 124
Denmark Denmark 107 +11.1% 92
Dominican Republic Dominican Republic 136 +14.4% 16
Algeria Algeria 118 +8.67% 52
Ecuador Ecuador 100 -4.13% 129
Egypt Egypt 105 +1.04% 103
Eritrea Eritrea 101 +0.229% 125
Spain Spain 87 -24.2% 170
Estonia Estonia 119 +16.7% 50
Ethiopia Ethiopia 117 +1.94% 59
Finland Finland 98.7 +26% 134
Fiji Fiji 125 +13.2% 33
France France 94.7 -1.86% 150
Faroe Islands Faroe Islands 99.4 +0.333% 132
Micronesia (Federated States of) Micronesia (Federated States of) 126 +2.34% 31
Gabon Gabon 106 +0.883% 98
United Kingdom United Kingdom 94.3 +4.69% 153
Georgia Georgia 119 -5.84% 48
Ghana Ghana 137 +4.05% 15
Guinea Guinea 150 +4.45% 7
Gambia Gambia 70.8 +12.3% 187
Guinea-Bissau Guinea-Bissau 128 +1.08% 29
Equatorial Guinea Equatorial Guinea 104 +0.695% 107
Greece Greece 94.2 -7.28% 155
Grenada Grenada 75.9 -11.2% 183
Guatemala Guatemala 100 +0.411% 128
Guyana Guyana 106 +8.25% 101
Hong Kong SAR China Hong Kong SAR China 101 +0.0197% 122
Honduras Honduras 102 -3.4% 117
Croatia Croatia 85.2 -9.94% 173
Haiti Haiti 72.1 -2.98% 186
Hungary Hungary 62.8 -26.9% 192
Indonesia Indonesia 111 +2.55% 73
India India 123 +2.21% 37
Ireland Ireland 99.4 +4.48% 131
Iran Iran 77.4 -8.23% 182
Iraq Iraq 104 -18.4% 108
Iceland Iceland 118 +15.7% 55
Israel Israel 99.9 +5.39% 130
Italy Italy 94 -1.27% 157
Jamaica Jamaica 112 +6.9% 70
Jordan Jordan 98.4 +2.58% 137
Japan Japan 94.6 -1.27% 151
Kazakhstan Kazakhstan 129 +19.1% 26
Kenya Kenya 117 -12.7% 56
Kyrgyzstan Kyrgyzstan 107 +9.07% 95
Cambodia Cambodia 130 -0.625% 25
Kiribati Kiribati 95.8 +3.03% 148
St. Kitts & Nevis St. Kitts & Nevis 108 -1.34% 78
South Korea South Korea 93.6 -2.3% 160
Kuwait Kuwait 109 +4.12% 76
Laos Laos 114 +8.65% 66
Lebanon Lebanon 97.9 +0.772% 140
Liberia Liberia 116 +3.44% 63
Libya Libya 98.4 -0.506% 138
St. Lucia St. Lucia 77.6 +6.47% 181
Sri Lanka Sri Lanka 95.7 -18.2% 149
Lesotho Lesotho 108 -9.65% 87
Lithuania Lithuania 105 +5.78% 105
Luxembourg Luxembourg 96.4 +10.9% 144
Latvia Latvia 105 +4.71% 104
Macao SAR China Macao SAR China 103 +0.565% 111
Morocco Morocco 107 -9.91% 94
Moldova Moldova 93 -31.2% 162
Madagascar Madagascar 108 +2.29% 81
Maldives Maldives 93.7 -0.436% 159
Mexico Mexico 115 +2.87% 64
Marshall Islands Marshall Islands 90.8 +0.888% 167
North Macedonia North Macedonia 103 +6.75% 113
Mali Mali 133 +5.03% 20
Malta Malta 53.8 -0.186% 193
Myanmar (Burma) Myanmar (Burma) 94.2 -4.71% 154
Montenegro Montenegro 89.6 -7.62% 169
Mongolia Mongolia 123 -11.1% 40
Mozambique Mozambique 157 +4.17% 5
Mauritania Mauritania 145 +3.08% 10
Mauritius Mauritius 67.8 -8.56% 189
Malawi Malawi 136 +1.07% 17
Malaysia Malaysia 97.9 +0.194% 139
Namibia Namibia 116 -0.292% 60
New Caledonia New Caledonia 94.3 -10.3% 153
Niger Niger 138 +33.2% 14
Nigeria Nigeria 121 +2.18% 46
Nicaragua Nicaragua 131 +2.54% 23
Netherlands Netherlands 100 -3.43% 126
Norway Norway 102 +7.14% 120
Nepal Nepal 117 +3.4% 58
Nauru Nauru 103 +0.0975% 114
New Zealand New Zealand 108 +3.12% 80
Oman Oman 162 +4.8% 4
Pakistan Pakistan 104 -8.19% 109
Panama Panama 131 +1.14% 22
Peru Peru 131 +4.59% 24
Philippines Philippines 104 -1.08% 110
Papua New Guinea Papua New Guinea 99 +0.263% 133
Poland Poland 110 +1.96% 74
Puerto Rico Puerto Rico 108 -0.0093% 88
North Korea North Korea 92.6 -1.26% 164
Portugal Portugal 114 -21% 65
Paraguay Paraguay 74.8 -31.4% 184
Palestinian Territories Palestinian Territories 117 -0.477% 57
French Polynesia French Polynesia 102 +0.0392% 118
Qatar Qatar 153 +2.97% 6
Romania Romania 85.4 -26.3% 172
Russia Russia 134 +20% 18
Rwanda Rwanda 123 +0.514% 38
Saudi Arabia Saudi Arabia 182 +4.67% 2
Sudan Sudan 126 +8.23% 30
Senegal Senegal 190 -4.11% 1
Singapore Singapore 90.9 -13.2% 166
Solomon Islands Solomon Islands 108 -0.102% 82
Sierra Leone Sierra Leone 106 -20.8% 100
El Salvador El Salvador 105 -2.32% 102
Somalia Somalia 101 +0.307% 123
Serbia Serbia 94.6 -8.53% 152
South Sudan South Sudan 118 +4.9% 53
São Tomé & Príncipe São Tomé & Príncipe 107 +1.07% 90
Suriname Suriname 80.2 +0.426% 179
Slovakia Slovakia 85 -14.8% 174
Slovenia Slovenia 81.8 -3.71% 177
Sweden Sweden 103 +12.4% 112
Eswatini Eswatini 107 +1.73% 89
Seychelles Seychelles 102 -0.751% 121
Syria Syria 96.3 -4.17% 145
Chad Chad 104 +2.85% 106
Togo Togo 120 +3.5% 47
Thailand Thailand 107 +4.41% 96
Tajikistan Tajikistan 131 -0.266% 21
Turkmenistan Turkmenistan 121 -3.31% 45
Timor-Leste Timor-Leste 108 +15.2% 86
Tonga Tonga 97.2 +0.476% 143
Trinidad & Tobago Trinidad & Tobago 98.6 -2.51% 135
Tunisia Tunisia 111 +8.35% 72
Turkey Turkey 125 +9.41% 32
Tuvalu Tuvalu 113 -3.7% 67
Tanzania Tanzania 100 -4.15% 126
Uganda Uganda 148 -12.6% 8
Ukraine Ukraine 90.1 -26% 168
Uruguay Uruguay 79.7 -12.6% 180
United States United States 93 -7.96% 163
Uzbekistan Uzbekistan 108 +4.98% 85
St. Vincent & Grenadines St. Vincent & Grenadines 103 +0.421% 116
Venezuela Venezuela 93.9 -3.33% 158
Vietnam Vietnam 110 +0.284% 75
Vanuatu Vanuatu 84.6 -0.0355% 175
Samoa Samoa 84.1 -1.31% 176
Yemen Yemen 119 -4.92% 51
South Africa South Africa 124 -0.823% 34
Zambia Zambia 123 -9.74% 39
Zimbabwe Zimbabwe 123 -4.99% 36

                    
# 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 = 'AG.PRD.CROP.XD'

# 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 <- 'AG.PRD.CROP.XD'

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