What's in an Avocado Toast: A Supply Chain Analysis
You're in London, making an avocado toast, a quick-to-make dish that has soared in popularity on breakfast menus since the 2010s. A simple smashed avocado toast can be made with five ingredients: one ripe avocado, half a lemon, a big pinch of salt flakes, two slices of sourdough bread and a good drizzle of extra virgin olive oil.
It's no small feat that most of these ingredients are readily available in grocery stores. In this project, you'll conduct a supply chain analysis of the ingredients used in an avocado toast, utilizing the Open Food Facts database. This database contains extensive, openly-sourced information on various foods, including their origins. Through this analysis, you will gain an in-depth understanding of the complex supply chain involved in producing a single dish. The data is contained in .csv
files in the data/
folder provided.
After completing this project, you'll be armed with a list of ingredients and their countries of origin, and be well-positioned to launch into other analyses that explore how long, on average, these ingredients spend at sea.
import pandas as pd
import numpy as np
avocado = pd.read_csv('data/avocado.csv', sep='\t')
Col_list = ['code', 'lc', 'product_name_en', 'quantity', 'serving_size', 'packaging_tags', 'brands', 'brands_tags', 'categories_tags', 'labels_tags', 'countries', 'countries_tags', 'origins', 'origins_tags']
avocado = avocado[Col_list]
avocado = avocado.dropna(subset=['categories_tags'])
avocado['categories_list'] = avocado['categories_tags'].str.split(',')
relevant_avocado_categories = [
'en:avocadoes',
'en:avocados',
'en:fresh-foods',
'en:fresh-vegetables',
'en:fruchte',
'en:fruits',
'en:raw-green-avocados',
'en:tropical-fruits',
'en:tropische-fruchte',
'en:vegetables-based-foods',
'fr:hass-avocados'
]
avocado = avocado[avocado['categories_list'].apply(lambda x: any([i for i in x if i in relevant_avocado_categories]))]
avocado_uk = avocado[avocado['countries_tags'] == 'United Kingdom']
print('**avocado origin**','\n',avocado_uk['origins_tags'].value_counts(), '\n')
avocado_origin = 'Peru'
def read_and_filter_data(filepath,relevant_categories):
df = pd.read_csv('data/' + filepath, sep = '\t')
df = df[Col_list]
df['categories_list'] = df['categories_tags'].str.split(',')
df = df.dropna(subset = 'categories_list')
df = df[df['categories_list'].apply(lambda x: any([i for i in x if i in relevant_categories]))]
df = df[(df['countries']=='United Kingdom')]
print(f'**{filepath[:-4]} origins**','\n',df['origins_tags'].value_counts(), '\n')
return df
relevant_categories= ['en:aromatic-herbs',
'en:aromatic-plants',
'en:citron',
'en:citrus',
'en:fresh-fruits',
'en:fresh-lemons',
'en:fruits',
'en:lemons',
'en:unwaxed-lemons'
]
lemons = read_and_filter_data('lemon.csv', relevant_categories)
lemon_origin ='South Africa'
with open("data/relevant_olive_oil_categories.txt", "r") as file:
relevant_olive_oil_categories = file.read().splitlines()
file.close()
olive_oil = read_and_filter_data('olive_oil.csv',relevant_olive_oil_categories)
olive_oil_origin = 'Greece'
with open("data/relevant_sourdough_categories.txt", "r") as file:
relevant_sourdough_categories = file.read().splitlines()
file.close()
sourdough = read_and_filter_data('sourdough.csv',relevant_sourdough_categories)
sourdough_origin = 'United Kingdom'
print(sourdough)
print(lemons)
print(olive_oil)
print(avocado)