{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "pleasant-causing",
   "metadata": {},
   "source": [
    "<a id='top'></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "impaired-table",
   "metadata": {},
   "source": [
    "# Capology Player Web Scraping\n",
    "##### Notebook to engineer scraped data\n",
    "\n",
    "### By [Edd Webster](https://www.twitter.com/eddwebster)\n",
    "Notebook first written: 01/08/2021<br>\n",
    "Notebook last updated: 07/08/2021\n",
    "\n",
    "![title](../../img/logos/capology-logo.jpeg)\n",
    "\n",
    "Click [here](#section5) to jump straight to the Exploratory Data Analysis section and skip the [Task Brief](#section2), [Data Scraping](#section3), and [Data Unification](#section4) sections. Or click [here](#section5) to jump straight to the Conclusion."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "magnetic-surrey",
   "metadata": {},
   "source": [
    "___\n",
    "\n",
    "<a id='sectionintro'></a>\n",
    "\n",
    "## <a id='import_libraries'>Introduction</a>\n",
    "This notebook scrapes player statstics data from [Capology](https://www.capology.com/), using [pandas](http://pandas.pydata.org/) for data manipulation through DataFrames, and [Selenium](https://www.selenium.dev/) and [Beautifulsoup](https://pypi.org/project/beautifulsoup4/) for webscraping.\n",
    "\n",
    "For more information about this notebook and the author, I'm available through all the following channels:\n",
    "*    [eddwebster.com](https://www.eddwebster.com/);\n",
    "*    edd.j.webster@gmail.com;\n",
    "*    [@eddwebster](https://www.twitter.com/eddwebster);\n",
    "*    [linkedin.com/in/eddwebster](https://www.linkedin.com/in/eddwebster/);\n",
    "*    [github/eddwebster](https://github.com/eddwebster/);\n",
    "*    [public.tableau.com/profile/edd.webster](https://public.tableau.com/profile/edd.webster);\n",
    "*    [kaggle.com/eddwebster](https://www.kaggle.com/eddwebster); and\n",
    "*    [hackerrank.com/eddwebster](https://www.hackerrank.com/eddwebster).\n",
    "\n",
    "![title](../../img/fifa21eddwebsterbanner.png)\n",
    "\n",
    "The accompanying GitHub repository for this notebook can be found [here](https://github.com/eddwebster/football_analytics) and a static version of this notebook can be found [here](https://nbviewer.jupyter.org/github/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/Capology%20Player%20Salary%20Data%20Engineering.ipynb)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "serial-panel",
   "metadata": {},
   "source": [
    "___\n",
    "\n",
    "<a id='sectioncontents'></a>\n",
    "\n",
    "## <a id='notebook_contents'>Notebook Contents</a>\n",
    "1.    [Notebook Dependencies](#section1)<br>\n",
    "2.    [Project Brief](#section2)<br>\n",
    "3.    [Data Sources](#section3)<br>\n",
    "4.    [Data Engineering](#section4)<br>\n",
    "5.    [Export Data](#section5)<br>\n",
    "6.    [Summary](#section6)<br>\n",
    "7.    [Next Steps](#section7)<br>\n",
    "8.    [Bibliography](#section8)<br>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "determined-alpha",
   "metadata": {},
   "source": [
    "___\n",
    "\n",
    "<a id='section1'></a>\n",
    "\n",
    "## <a id='#section1'>1. Notebook Dependencies</a>\n",
    "\n",
    "This notebook was written using [Python 3](https://docs.python.org/3.7/) and requires the following libraries:\n",
    "*    [`Jupyter notebooks`](https://jupyter.org/) for this notebook environment with which this project is presented;\n",
    "*    [`NumPy`](http://www.numpy.org/) for multidimensional array computing; and\n",
    "*    [`pandas`](http://pandas.pydata.org/) for data analysis and manipulation.\n",
    "\n",
    "All packages used for this notebook except for [`Beautifulsoup`](https://pypi.org/project/beautifulsoup4/) and [`Selenium`](https://www.selenium.dev/) can be obtained by downloading and installing the [Conda](https://anaconda.org/anaconda/conda) distribution, available on all platforms (Windows, Linux and Mac OSX). Step-by-step guides on how to install Anaconda can be found for Windows [here](https://medium.com/@GalarnykMichael/install-python-on-windows-anaconda-c63c7c3d1444) and Mac [here](https://medium.com/@GalarnykMichael/install-python-on-mac-anaconda-ccd9f2014072), as well as in the Anaconda documentation itself [here](https://docs.anaconda.com/anaconda/install/)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "rapid-memorabilia",
   "metadata": {},
   "source": [
    "### Import Libraries and Modules"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "suffering-clerk",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Setup Complete\n"
     ]
    }
   ],
   "source": [
    "# Python ≥3.5 (ideally)\n",
    "import platform\n",
    "import sys, getopt\n",
    "assert sys.version_info >= (3, 5)\n",
    "import csv\n",
    "\n",
    "# Import Dependencies\n",
    "%matplotlib inline\n",
    "\n",
    "# Math Operations\n",
    "import numpy as np\n",
    "from math import pi\n",
    "\n",
    "# Datetime\n",
    "import datetime\n",
    "from datetime import date\n",
    "import time\n",
    "\n",
    "# Data Preprocessing\n",
    "import pandas as pd\n",
    "#import pandas_profiling as pp\n",
    "import os\n",
    "import re\n",
    "import random\n",
    "import glob\n",
    "from io import BytesIO\n",
    "from pathlib import Path\n",
    "\n",
    "# Reading directories\n",
    "import glob\n",
    "import os\n",
    "\n",
    "# Working with JSON\n",
    "import json\n",
    "from pandas.io.json import json_normalize\n",
    "\n",
    "# Web Scraping\n",
    "from selenium import webdriver\n",
    "from bs4 import BeautifulSoup\n",
    "import requests\n",
    "from bs4 import BeautifulSoup\n",
    "import re\n",
    "\n",
    "# Currency Converter\n",
    "from currency_converter import CurrencyConverter\n",
    "\n",
    "# Data Visualisation\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "plt.style.use('seaborn-whitegrid')\n",
    "import missingno as msno\n",
    "\n",
    "# Progress Bar\n",
    "from tqdm import tqdm\n",
    "\n",
    "# Display in Jupyter\n",
    "from IPython.display import Image, Video, YouTubeVideo\n",
    "from IPython.core.display import HTML\n",
    "\n",
    "# Ignore Warnings\n",
    "import warnings\n",
    "warnings.filterwarnings(action='ignore', message='^internal gelsd')\n",
    "\n",
    "print('Setup Complete')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "fifth-ceramic",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Python: 3.7.6\n",
      "NumPy: 1.20.3\n",
      "pandas: 1.3.2\n"
     ]
    }
   ],
   "source": [
    "# Python / module versions used here for reference\n",
    "print('Python: {}'.format(platform.python_version()))\n",
    "print('NumPy: {}'.format(np.__version__))\n",
    "print('pandas: {}'.format(pd.__version__))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "stuck-concrete",
   "metadata": {},
   "source": [
    "### Defined Variables and Lists"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "professional-turkey",
   "metadata": {},
   "source": [
    "##### Date "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "junior-algeria",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define today's date\n",
    "today = datetime.datetime.now().strftime('%d/%m/%Y').replace('/', '')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "moved-zambia",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define variables and lists\n",
    "\n",
    "## Define season\n",
    "season = '2020'    # '2020' for the 20/21 season\n",
    "\n",
    "# Create 'Full Season' and 'Short Season' strings\n",
    "\n",
    "## Full season\n",
    "full_season_string = str(int(season)) + '/' + str(int(season) + 1)\n",
    "\n",
    "## Short season\n",
    "short_season_string = str((str(int(season))[-2:]) + (str(int(season) + 1)[-2:]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "balanced-sleeve",
   "metadata": {},
   "source": [
    "### Defined Filepaths"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "powerful-nature",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Set up initial paths to subfolders\n",
    "base_dir = os.path.join('..', '..')\n",
    "data_dir = os.path.join(base_dir, 'data')\n",
    "data_dir_capology = os.path.join(base_dir, 'data', 'capology')\n",
    "img_dir = os.path.join(base_dir, 'img')\n",
    "fig_dir = os.path.join(base_dir, 'img', 'fig')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "vital-fifty",
   "metadata": {},
   "source": [
    "### Create Directory Structure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "nervous-integration",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Make the directory structure\n",
    "for folder in ['archive']:\n",
    "    path = os.path.join(data_dir_capology, 'engineered', folder)\n",
    "    if not os.path.exists(path):\n",
    "        os.mkdir(path)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "understanding-regulation",
   "metadata": {},
   "source": [
    "### Notebook Settings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "hairy-spelling",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Display all columns of displayed pandas DataFrames\n",
    "pd.set_option('display.max_columns', None)\n",
    "pd.options.mode.chained_assignment = None"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "weighted-mineral",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "<a id='section2'></a>\n",
    "\n",
    "## <a id='#section2'>2. Project Brief</a>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "split-computer",
   "metadata": {},
   "source": [
    "### <a id='#section2.1'>2.1. About this notebook</a>\n",
    "This Jupyter notebook is part of a series of notebooks to scrape, parse, engineer, unify, and then model, culminating in a an Expected Transfer (xTransfer) player performance vs. valuation model. This model aims to determine the under- and over-performing players based on their on-the-pitch output against transfer fee and wages.\n",
    "\n",
    "This particular notebook is one of several **data engineering** notebooks, that takes player salary data previously from the [Capology](https://www.capology.com/), and manipulates it to a clean form as Dataframes using [pandas](http://pandas.pydata.org/).\n",
    "\n",
    "This notebook, along with the other notebooks in this project workflow are shown in the following diagram:\n",
    "\n",
    "![roadmap](../../img/football_analytics_data_roadmap.png)\n",
    "\n",
    "Links to these notebooks in the [`football_analytics`](https://github.com/eddwebster/football_analytics) GitHub repository can be found at the following:\n",
    "*    [Webscraping](https://github.com/eddwebster/football_analytics/tree/master/notebooks/1_data_scraping)\n",
    "     +    [FBref Player Stats Webscraping](https://github.com/eddwebster/football_analytics/blob/master/notebooks/1_data_scraping/FBref%20Player%20Stats%20Web%20Scraping.ipynb)\n",
    "     +    [TransferMarket Player Bio and Status Webscraping](https://github.com/eddwebster/football_analytics/blob/master/notebooks/1_data_scraping/TransferMarkt%20Player%20Bio%20and%20Status%20Web%20Scraping.ipynb)\n",
    "     +    [TransferMarkt Player Recorded Transfer Fees Webscraping](https://github.com/eddwebster/football_analytics/blob/master/notebooks/1_data_scraping/TransferMarkt%20Player%20Recorded%20Transfer%20Fees%20Webscraping.ipynb)\n",
    "     +    [Capology Player Salary Webscraping](https://github.com/eddwebster/football_analytics/blob/master/notebooks/1_data_scraping/Capology%20Player%20Salary%20Web%20Scraping.ipynb)\n",
    "     +    [FBref Team Stats Webscraping](https://github.com/eddwebster/football_analytics/blob/master/notebooks/1_data_scraping/FBref%20Team%20Stats%20Web%20Scraping.ipynb)\n",
    "*    [Data Parsing](https://github.com/eddwebster/football_analytics/tree/master/notebooks/2_data_parsing)\n",
    "     +    [ELO Team Ratings Data Parsing](https://github.com/eddwebster/football_analytics/blob/master/notebooks/2_data_parsing/ELO%20Team%20Ratings%20Data%20Parsing.ipynb)\n",
    "*    [Data Engineering](https://github.com/eddwebster/football_analytics/tree/master/notebooks/3_data_engineering)\n",
    "     +    [FBref Player Stats Data Engineering](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/FBref%20Player%20Stats%20Data%20Engineering.ipynb)\n",
    "     +    [TransferMarket Player Bio and Status Data Engineering](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/TransferMarkt%20Player%20Bio%20and%20Status%20Data%20Engineering.ipynb)\n",
    "     +    [TransferMarkt Player Recorded Transfer Fees Data Engineering](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/TransferMarkt%20Player%20Recorded%20Transfer%20Fees%20Data%20Engineering.ipynb)\n",
    "     +    [Capology Player Salary Data Engineering](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/Capology%20Player%20Salary%20Data%20Engineering.ipynb)\n",
    "     +    [FBref Team Stats Data Engineering](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/FBref%20Team%20Stats%20Data%20Engineering.ipynb)\n",
    "     +    [ELO Team Ratings Data Parsing](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/ELO%20Team%20Ratings%20Data%20Parsing.ipynb)\n",
    "     +    [TransferMarkt Team Recorded Transfer Fee Data Engineering](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/TransferMarkt%20Team%20Recorded%20Transfer%20Fee%20Data%20Engineering.ipynb) (aggregated from [TransferMarkt Player Recorded Transfer Fees notebook](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/TransferMarkt%20Player%20Recorded%20Transfer%20Fees%20Data%20Engineering.ipynb))\n",
    "     +    [Capology Team Salary Data Engineering](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/Capology%20Team%20Salary%20Data%20Engineering.ipynb) (aggregated from [Capology Player Salary notebook](https://github.com/eddwebster/football_analytics/blob/master/notebooks/3_data_engineering/Capology%20Player%20Salary%20Data%20Engineering.ipynb))\n",
    "*    [Data Unification](https://github.com/eddwebster/football_analytics/tree/master/notebooks/4_data_unification)\n",
    "     +    [Golden ID for Player Level Datasets](https://github.com/eddwebster/football_analytics/blob/master/notebooks/4_data_unification/Golden%20ID%20for%20Player%20Level%20Datasets.ipynb)\n",
    "     +    [Golden ID for Team Level Datasets](https://github.com/eddwebster/football_analytics/blob/master/notebooks/4_data_unification/Golden%20ID%20for%20Team%20Level%20Datasets.ipynb)\n",
    "*    [Production Datasets](https://github.com/eddwebster/football_analytics/tree/master/notebooks/5_production_datasets)\n",
    "     +    [Player Performance/Market Value Dataset](https://github.com/eddwebster/football_analytics/tree/master/notebooks/5_production_datasets/Player%20Performance/Market%20Value%20Dataset.ipynb)\n",
    "     +    [Team Performance/Market Value Dataset](https://github.com/eddwebster/football_analytics/tree/master/notebooks/5_production_datasets/Team%20Performance/Market%20Value%20Dataset.ipynb)\n",
    "*    [Expected Transfer (xTransfer) Modeling](https://github.com/eddwebster/football_analytics/tree/master/notebooks/6_data_analysis_and_projects/expected_transfer_modeling)\n",
    "     +    [Expected Transfer (xTransfer) Modeling](https://github.com/eddwebster/football_analytics/tree/master/notebooks/6_data_analysis_and_projects/expected_transfer_modeling/Expected%20Transfer%20%20Modeling.ipynb)\n",
    "\n",
    "**Notebook Conventions**:<br>\n",
    "*    Variables that refer a `DataFrame` object are prefixed with `df_`.\n",
    "*    Variables that refer to a collection of `DataFrame` objects (e.g., a list, a set or a dict) are prefixed with `dfs_`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "greatest-explorer",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "<a id='section3'></a>\n",
    "\n",
    "## <a id='#section3'>3. Data Sources</a>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "elementary-occasions",
   "metadata": {},
   "source": [
    "### <a id='#section3.1'>3.1. Introduction</a>\n",
    "..."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "sound-interstate",
   "metadata": {},
   "source": [
    "### <a id='#section3.2'>3.2. Data Dictionary</a>\n",
    "\n",
    "The raw dataset has one hundred and eighty eight features (columns) with the following definitions and data types:\n",
    "\n",
    "| Variable     | Data Type    | Description    |\n",
    "|------|-----|-----|\n",
    "| `squad`    | object    | ...    |\n",
    "| `players_used`    | float64    | ...    |\n",
    "\n",
    "<br>\n",
    "\n",
    "The features will be cleaned, converted and also additional features will be created in the [Data Engineering](#section4) section (Section 4)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "formal-morning",
   "metadata": {},
   "source": [
    "### <a id='#section3.3'>3.3. Read in CSV as pandas DataFrame</a>\n",
    "The following cell reads the the `CSV` file as a pandas `DataFrame`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "worse-hampshire",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['../../data/capology/raw/capology_all_latest.csv']\n"
     ]
    }
   ],
   "source": [
    "# Read data directory\n",
    "print(glob.glob(os.path.join(data_dir_capology, 'raw/*.csv')))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "atmospheric-identifier",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import data as a pandas DataFrame, df_capology_raw\n",
    "df_capology_raw = pd.read_csv(data_dir_capology + '/raw/capology_all_latest.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "external-calvin",
   "metadata": {},
   "source": [
    "### <a id='#section3.4'>3.4. Initial Data Handling</a>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "prompt-combat",
   "metadata": {},
   "source": [
    "#### <a id='#section3.4.1'>3.4.1. Summary Report</a>\n",
    "Initial step of the data handling and Exploratory Data Analysis (EDA) is to create a quick summary report of the dataset using [pandas Profiling Report](https://github.com/pandas-profiling/pandas-profiling)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "entertaining-borough",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Summary of the data using pandas Profiling Report\n",
    "#pp.ProfileReport(df_capology_raw)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "indoor-earthquake",
   "metadata": {},
   "source": [
    "#### <a id='#section3.3.2'>3.3.2. Further Inspection</a>\n",
    "The following commands go into more bespoke summary of the dataset. Some of the commands include content covered in the [pandas Profiling](https://github.com/pandas-profiling/pandas-profiling) summary above, but using the standard [pandas](https://pandas.pydata.org/) functions and methods that most peoplem will be more familiar with.\n",
    "\n",
    "First check the quality of the dataset by looking first and last rows in pandas using the [head()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) and [tail()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.tail.html) methods."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "inappropriate-spouse",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>Player</th>\n",
       "      <th>Weekly GrossBase Salary(IN EUR)</th>\n",
       "      <th>Annual GrossBase Salary(IN EUR)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN EUR)</th>\n",
       "      <th>Pos.</th>\n",
       "      <th>Age</th>\n",
       "      <th>Country</th>\n",
       "      <th>Team</th>\n",
       "      <th>League</th>\n",
       "      <th>Season</th>\n",
       "      <th>Status</th>\n",
       "      <th>Expiration</th>\n",
       "      <th>Length</th>\n",
       "      <th>EstimatedGross Total(IN EUR)</th>\n",
       "      <th>Unnamed: 2</th>\n",
       "      <th>Weekly GrossBase Salary(IN GBP)</th>\n",
       "      <th>Annual GrossBase Salary(IN GBP)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN GBP)</th>\n",
       "      <th>EstimatedGross Total(IN GBP)</th>\n",
       "      <th>Weekly GrossBase Salary(IN USD)</th>\n",
       "      <th>Annual GrossBase Salary(IN USD)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN USD)</th>\n",
       "      <th>RosterStatus</th>\n",
       "      <th>EstimatedGross Total(IN USD)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Gonzalo Higuaín</td>\n",
       "      <td>€ 338,327</td>\n",
       "      <td>€ 17,593,000</td>\n",
       "      <td>€ 17,568,773</td>\n",
       "      <td>F</td>\n",
       "      <td>30</td>\n",
       "      <td>Argentina</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Gianluigi Donnarumma</td>\n",
       "      <td>€ 213,673</td>\n",
       "      <td>€ 11,111,000</td>\n",
       "      <td>€ 11,095,699</td>\n",
       "      <td>K</td>\n",
       "      <td>19</td>\n",
       "      <td>Italy</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>Lucas Biglia</td>\n",
       "      <td>€ 124,635</td>\n",
       "      <td>€ 6,481,000</td>\n",
       "      <td>€ 6,472,075</td>\n",
       "      <td>M</td>\n",
       "      <td>32</td>\n",
       "      <td>Argentina</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>Alessio Romagnoli</td>\n",
       "      <td>€ 124,635</td>\n",
       "      <td>€ 6,481,000</td>\n",
       "      <td>€ 6,472,075</td>\n",
       "      <td>D</td>\n",
       "      <td>23</td>\n",
       "      <td>Italy</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>Tiemoué Bakayoko</td>\n",
       "      <td>€ 124,635</td>\n",
       "      <td>€ 6,481,000</td>\n",
       "      <td>€ 6,472,075</td>\n",
       "      <td>M</td>\n",
       "      <td>23</td>\n",
       "      <td>France</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  Unnamed: 0.1                Player  \\\n",
       "0           0           0.0       Gonzalo Higuaín   \n",
       "1           1           1.0  Gianluigi Donnarumma   \n",
       "2           2           2.0          Lucas Biglia   \n",
       "3           3           3.0     Alessio Romagnoli   \n",
       "4           4           4.0      Tiemoué Bakayoko   \n",
       "\n",
       "  Weekly GrossBase Salary(IN EUR) Annual GrossBase Salary(IN EUR)  \\\n",
       "0                       € 338,327                    € 17,593,000   \n",
       "1                       € 213,673                    € 11,111,000   \n",
       "2                       € 124,635                     € 6,481,000   \n",
       "3                       € 124,635                     € 6,481,000   \n",
       "4                       € 124,635                     € 6,481,000   \n",
       "\n",
       "  Adj. GrossBase Salary(2021, IN EUR) Pos. Age    Country      Team   League  \\\n",
       "0                        € 17,568,773    F  30  Argentina  Ac Milan  Serie A   \n",
       "1                        € 11,095,699    K  19      Italy  Ac Milan  Serie A   \n",
       "2                         € 6,472,075    M  32  Argentina  Ac Milan  Serie A   \n",
       "3                         € 6,472,075    D  23      Italy  Ac Milan  Serie A   \n",
       "4                         € 6,472,075    M  23     France  Ac Milan  Serie A   \n",
       "\n",
       "      Season  Status Expiration Length EstimatedGross Total(IN EUR)  \\\n",
       "0  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "1  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "2  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "3  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "4  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "\n",
       "   Unnamed: 2 Weekly GrossBase Salary(IN GBP) Annual GrossBase Salary(IN GBP)  \\\n",
       "0         NaN                             NaN                             NaN   \n",
       "1         NaN                             NaN                             NaN   \n",
       "2         NaN                             NaN                             NaN   \n",
       "3         NaN                             NaN                             NaN   \n",
       "4         NaN                             NaN                             NaN   \n",
       "\n",
       "  Adj. GrossBase Salary(2021, IN GBP) EstimatedGross Total(IN GBP)  \\\n",
       "0                                 NaN                          NaN   \n",
       "1                                 NaN                          NaN   \n",
       "2                                 NaN                          NaN   \n",
       "3                                 NaN                          NaN   \n",
       "4                                 NaN                          NaN   \n",
       "\n",
       "  Weekly GrossBase Salary(IN USD) Annual GrossBase Salary(IN USD)  \\\n",
       "0                             NaN                             NaN   \n",
       "1                             NaN                             NaN   \n",
       "2                             NaN                             NaN   \n",
       "3                             NaN                             NaN   \n",
       "4                             NaN                             NaN   \n",
       "\n",
       "  Adj. GrossBase Salary(2021, IN USD) RosterStatus  \\\n",
       "0                                 NaN          NaN   \n",
       "1                                 NaN          NaN   \n",
       "2                                 NaN          NaN   \n",
       "3                                 NaN          NaN   \n",
       "4                                 NaN          NaN   \n",
       "\n",
       "  EstimatedGross Total(IN USD)  \n",
       "0                          NaN  \n",
       "1                          NaN  \n",
       "2                          NaN  \n",
       "3                          NaN  \n",
       "4                          NaN  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Display the first five rows of the raw DataFrame, df_capology_raw\n",
    "df_capology_raw.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "irish-thirty",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>Player</th>\n",
       "      <th>Weekly GrossBase Salary(IN EUR)</th>\n",
       "      <th>Annual GrossBase Salary(IN EUR)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN EUR)</th>\n",
       "      <th>Pos.</th>\n",
       "      <th>Age</th>\n",
       "      <th>Country</th>\n",
       "      <th>Team</th>\n",
       "      <th>League</th>\n",
       "      <th>Season</th>\n",
       "      <th>Status</th>\n",
       "      <th>Expiration</th>\n",
       "      <th>Length</th>\n",
       "      <th>EstimatedGross Total(IN EUR)</th>\n",
       "      <th>Unnamed: 2</th>\n",
       "      <th>Weekly GrossBase Salary(IN GBP)</th>\n",
       "      <th>Annual GrossBase Salary(IN GBP)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN GBP)</th>\n",
       "      <th>EstimatedGross Total(IN GBP)</th>\n",
       "      <th>Weekly GrossBase Salary(IN USD)</th>\n",
       "      <th>Annual GrossBase Salary(IN USD)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN USD)</th>\n",
       "      <th>RosterStatus</th>\n",
       "      <th>EstimatedGross Total(IN USD)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>25154</th>\n",
       "      <td>35</td>\n",
       "      <td>35.0</td>\n",
       "      <td>Pedro Martínez</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>M</td>\n",
       "      <td>21</td>\n",
       "      <td>Spain</td>\n",
       "      <td>Villarreal</td>\n",
       "      <td>La Liga</td>\n",
       "      <td>2017-2018</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25155</th>\n",
       "      <td>36</td>\n",
       "      <td>36.0</td>\n",
       "      <td>Chuca</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>M</td>\n",
       "      <td>20</td>\n",
       "      <td>Spain</td>\n",
       "      <td>Villarreal</td>\n",
       "      <td>La Liga</td>\n",
       "      <td>2017-2018</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25156</th>\n",
       "      <td>37</td>\n",
       "      <td>37.0</td>\n",
       "      <td>Cédric Bakambu</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>F</td>\n",
       "      <td>26</td>\n",
       "      <td>Democratic Republic of Congo</td>\n",
       "      <td>Villarreal</td>\n",
       "      <td>La Liga</td>\n",
       "      <td>2017-2018</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25157</th>\n",
       "      <td>38</td>\n",
       "      <td>38.0</td>\n",
       "      <td>Bruno Soriano</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>M</td>\n",
       "      <td>33</td>\n",
       "      <td>Spain</td>\n",
       "      <td>Villarreal</td>\n",
       "      <td>La Liga</td>\n",
       "      <td>2017-2018</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25158</th>\n",
       "      <td>39</td>\n",
       "      <td>39.0</td>\n",
       "      <td>Sergio Lozano</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>€ 0</td>\n",
       "      <td>M</td>\n",
       "      <td>18</td>\n",
       "      <td>Spain</td>\n",
       "      <td>Villarreal</td>\n",
       "      <td>La Liga</td>\n",
       "      <td>2017-2018</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Unnamed: 0  Unnamed: 0.1          Player  \\\n",
       "25154          35          35.0  Pedro Martínez   \n",
       "25155          36          36.0           Chuca   \n",
       "25156          37          37.0  Cédric Bakambu   \n",
       "25157          38          38.0   Bruno Soriano   \n",
       "25158          39          39.0   Sergio Lozano   \n",
       "\n",
       "      Weekly GrossBase Salary(IN EUR) Annual GrossBase Salary(IN EUR)  \\\n",
       "25154                             € 0                             € 0   \n",
       "25155                             € 0                             € 0   \n",
       "25156                             € 0                             € 0   \n",
       "25157                             € 0                             € 0   \n",
       "25158                             € 0                             € 0   \n",
       "\n",
       "      Adj. GrossBase Salary(2021, IN EUR) Pos. Age  \\\n",
       "25154                                 € 0    M  21   \n",
       "25155                                 € 0    M  20   \n",
       "25156                                 € 0    F  26   \n",
       "25157                                 € 0    M  33   \n",
       "25158                                 € 0    M  18   \n",
       "\n",
       "                            Country        Team   League     Season  Status  \\\n",
       "25154                         Spain  Villarreal  La Liga  2017-2018     NaN   \n",
       "25155                         Spain  Villarreal  La Liga  2017-2018     NaN   \n",
       "25156  Democratic Republic of Congo  Villarreal  La Liga  2017-2018     NaN   \n",
       "25157                         Spain  Villarreal  La Liga  2017-2018     NaN   \n",
       "25158                         Spain  Villarreal  La Liga  2017-2018     NaN   \n",
       "\n",
       "      Expiration Length EstimatedGross Total(IN EUR)  Unnamed: 2  \\\n",
       "25154        NaN    NaN                          NaN         NaN   \n",
       "25155        NaN    NaN                          NaN         NaN   \n",
       "25156        NaN    NaN                          NaN         NaN   \n",
       "25157        NaN    NaN                          NaN         NaN   \n",
       "25158        NaN    NaN                          NaN         NaN   \n",
       "\n",
       "      Weekly GrossBase Salary(IN GBP) Annual GrossBase Salary(IN GBP)  \\\n",
       "25154                             NaN                             NaN   \n",
       "25155                             NaN                             NaN   \n",
       "25156                             NaN                             NaN   \n",
       "25157                             NaN                             NaN   \n",
       "25158                             NaN                             NaN   \n",
       "\n",
       "      Adj. GrossBase Salary(2021, IN GBP) EstimatedGross Total(IN GBP)  \\\n",
       "25154                                 NaN                          NaN   \n",
       "25155                                 NaN                          NaN   \n",
       "25156                                 NaN                          NaN   \n",
       "25157                                 NaN                          NaN   \n",
       "25158                                 NaN                          NaN   \n",
       "\n",
       "      Weekly GrossBase Salary(IN USD) Annual GrossBase Salary(IN USD)  \\\n",
       "25154                             NaN                             NaN   \n",
       "25155                             NaN                             NaN   \n",
       "25156                             NaN                             NaN   \n",
       "25157                             NaN                             NaN   \n",
       "25158                             NaN                             NaN   \n",
       "\n",
       "      Adj. GrossBase Salary(2021, IN USD) RosterStatus  \\\n",
       "25154                                 NaN          NaN   \n",
       "25155                                 NaN          NaN   \n",
       "25156                                 NaN          NaN   \n",
       "25157                                 NaN          NaN   \n",
       "25158                                 NaN          NaN   \n",
       "\n",
       "      EstimatedGross Total(IN USD)  \n",
       "25154                          NaN  \n",
       "25155                          NaN  \n",
       "25156                          NaN  \n",
       "25157                          NaN  \n",
       "25158                          NaN  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Display the last five rows of the raw DataFrame, df_capology_raw\n",
    "df_capology_raw.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "dramatic-discount",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(25159, 26)\n"
     ]
    }
   ],
   "source": [
    "# Print the shape of the raw DataFrame, df_capology_raw\n",
    "print(df_capology_raw.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "athletic-taylor",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['Unnamed: 0', 'Unnamed: 0.1', 'Player',\n",
      "       'Weekly GrossBase Salary(IN EUR)', 'Annual GrossBase Salary(IN EUR)',\n",
      "       'Adj. GrossBase Salary(2021, IN EUR)', 'Pos.', 'Age', 'Country', 'Team',\n",
      "       'League', 'Season', 'Status', 'Expiration', 'Length',\n",
      "       'EstimatedGross Total(IN EUR)', 'Unnamed: 2',\n",
      "       'Weekly GrossBase Salary(IN GBP)', 'Annual GrossBase Salary(IN GBP)',\n",
      "       'Adj. GrossBase Salary(2021, IN GBP)', 'EstimatedGross Total(IN GBP)',\n",
      "       'Weekly GrossBase Salary(IN USD)', 'Annual GrossBase Salary(IN USD)',\n",
      "       'Adj. GrossBase Salary(2021, IN USD)', 'RosterStatus',\n",
      "       'EstimatedGross Total(IN USD)'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "# Print the column names of the raw DataFrame, df_capology_raw\n",
    "print(df_capology_raw.columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "opponent-statement",
   "metadata": {},
   "source": [
    "The dataset has ten features (columns). Full details of these attributes can be found in the [Data Dictionary](section3.3.1)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "excess-sydney",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Unnamed: 0                               int64\n",
       "Unnamed: 0.1                           float64\n",
       "Player                                  object\n",
       "Weekly GrossBase Salary(IN EUR)         object\n",
       "Annual GrossBase Salary(IN EUR)         object\n",
       "Adj. GrossBase Salary(2021, IN EUR)     object\n",
       "Pos.                                    object\n",
       "Age                                     object\n",
       "Country                                 object\n",
       "Team                                    object\n",
       "League                                  object\n",
       "Season                                  object\n",
       "Status                                 float64\n",
       "Expiration                              object\n",
       "Length                                  object\n",
       "EstimatedGross Total(IN EUR)            object\n",
       "Unnamed: 2                             float64\n",
       "Weekly GrossBase Salary(IN GBP)         object\n",
       "Annual GrossBase Salary(IN GBP)         object\n",
       "Adj. GrossBase Salary(2021, IN GBP)     object\n",
       "EstimatedGross Total(IN GBP)            object\n",
       "Weekly GrossBase Salary(IN USD)         object\n",
       "Annual GrossBase Salary(IN USD)         object\n",
       "Adj. GrossBase Salary(2021, IN USD)     object\n",
       "RosterStatus                            object\n",
       "EstimatedGross Total(IN USD)            object\n",
       "dtype: object"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Data types of the features of the raw DataFrame, df_capology_raw\n",
    "df_capology_raw.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "average-cruise",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 25159 entries, 0 to 25158\n",
      "Data columns (total 26 columns):\n",
      " #   Column                               Non-Null Count  Dtype  \n",
      "---  ------                               --------------  -----  \n",
      " 0   Unnamed: 0                           25159 non-null  int64  \n",
      " 1   Unnamed: 0.1                         18560 non-null  float64\n",
      " 2   Player                               24661 non-null  object \n",
      " 3   Weekly GrossBase Salary(IN EUR)      16516 non-null  object \n",
      " 4   Annual GrossBase Salary(IN EUR)      16516 non-null  object \n",
      " 5   Adj. GrossBase Salary(2021, IN EUR)  15360 non-null  object \n",
      " 6   Pos.                                 25159 non-null  object \n",
      " 7   Age                                  25159 non-null  object \n",
      " 8   Country                              22691 non-null  object \n",
      " 9   Team                                 25159 non-null  object \n",
      " 10  League                               25159 non-null  object \n",
      " 11  Season                               25159 non-null  object \n",
      " 12  Status                               0 non-null      float64\n",
      " 13  Expiration                           2468 non-null   object \n",
      " 14  Length                               2468 non-null   object \n",
      " 15  EstimatedGross Total(IN EUR)         1156 non-null   object \n",
      " 16  Unnamed: 2                           0 non-null      float64\n",
      " 17  Weekly GrossBase Salary(IN GBP)      3996 non-null   object \n",
      " 18  Annual GrossBase Salary(IN GBP)      3996 non-null   object \n",
      " 19  Adj. GrossBase Salary(2021, IN GBP)  3450 non-null   object \n",
      " 20  EstimatedGross Total(IN GBP)         546 non-null    object \n",
      " 21  Weekly GrossBase Salary(IN USD)      4647 non-null   object \n",
      " 22  Annual GrossBase Salary(IN USD)      4647 non-null   object \n",
      " 23  Adj. GrossBase Salary(2021, IN USD)  3881 non-null   object \n",
      " 24  RosterStatus                         766 non-null    object \n",
      " 25  EstimatedGross Total(IN USD)         766 non-null    object \n",
      "dtypes: float64(3), int64(1), object(22)\n",
      "memory usage: 5.0+ MB\n"
     ]
    }
   ],
   "source": [
    "# Info for the raw DataFrame, df_capology_raw\n",
    "df_capology_raw.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "central-cameroon",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>Status</th>\n",
       "      <th>Unnamed: 2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>25159.000000</td>\n",
       "      <td>18560.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>17.252832</td>\n",
       "      <td>17.614709</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>11.422048</td>\n",
       "      <td>11.794968</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>8.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>16.000000</td>\n",
       "      <td>17.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>25.000000</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>84.000000</td>\n",
       "      <td>84.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Unnamed: 0  Unnamed: 0.1  Status  Unnamed: 2\n",
       "count  25159.000000  18560.000000     0.0         0.0\n",
       "mean      17.252832     17.614709     NaN         NaN\n",
       "std       11.422048     11.794968     NaN         NaN\n",
       "min        0.000000      0.000000     NaN         NaN\n",
       "25%        8.000000      8.000000     NaN         NaN\n",
       "50%       16.000000     17.000000     NaN         NaN\n",
       "75%       25.000000     25.000000     NaN         NaN\n",
       "max       84.000000     84.000000     NaN         NaN"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Description of the raw DataFrame, df_capology_raw, showing some summary statistics for each numerical column in the DataFrame\n",
    "df_capology_raw.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "competitive-pregnancy",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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GuI+S6Gshyyfls+GuHymNP/M8nvuuScNHz48Pfnkk7lt+SeeeCKVlpamqVOnppT+uz1XVVWV+vfvn3beeecGs41XKOshWFbq90C7Bap9+/ZRXl4eAwYMiFNPPTWuuOKK6NixYxx77LExd+7cOOuss6K4uDh222233HN23XXXaNKkSay33nr1/lpFtRp7n//+97/jnHPOiS+++CKmTZsWa665Zpx00klx1FFHxeDBgyOlFHvvvXesvPLK8dVXX0VKKVq0aBEREePHj4///Oc/scsuu8TRRx8dEf+94H27du3y2dZC3n333UgpRUTE8ccfH3vuuWf07Nkzdt5559hzzz3jjTfeiIsuuih23nnnaNOmTRx22GHRvXv3uPfee6NZs2axxhprxMEHH1yvx/8eM2ZM9OnTJ3baaado06ZNnHTSSbHccstFs2bNokuXLtG8efMYNmxYDBgwIG6//fZYc801c72cccYZMW3atHj99dfr9NZQ+mzRokVuDO8ddtghysvL44YbbogjjzwymjZtGhHzr4PTsmXLmDp1ajz33HNxxBFHxIorrhhffPFFNG3atF6OAT5jxow47bTT4r333ovJkyfHOuusE4MGDYquXbvGyJEjY7PNNoumTZvmlrvWrVvH7373u3jwwQfjxRdfjO222y7atGmT7zZ+0JLMz5dffjmuv/76OOqoo6Jp06aRUoq5c+dGcXFxtGrVKm655ZZYe+21Y//996/X47lXVlbG0UcfHd27d4/DDz881l577Xj11Vdz183abrvt6vTapEmTqKmpiaKioigpKYk2bdrk1r/12bfffht9+vSJtm3bxnnnnRcrrbRSfPvtt/HOO+/EPvvsE9ttt100bdo0xo8fH1OnTo2999475s6dG3Pnzo3rrrsuHn300WjSpElsvfXW9f79+10jRoyIr7/+OgYPHhylpaVRUlIS48aNi5KSkujcuXN8/PHHcdRRR8Uqq6wSH3zwQbRo0SKOO+64ev3ZMmPGjDjhhBPiiy++iEmTJsXs2bNj0KBBceihh0br1q2jadOmMXbs2Fh//fXjoIMOiu222y4uueSSKCkpiRdffDE23HDD2GabbSIi6u2yGbHoPocNGxb77bdf7L///nHZZZfFsGHDYvDgwbltnC222CIuvvjiOPHEE2PGjBnx0UcfxV//+tdo2bJlnrv5YW+88UYcddRRsc8++0SnTp0iIuKBBx6ITz75JCorK2Pq1Knxm9/8JubOnRs33HBDdO3aNdZYY43YcsstY9VVV439998/d1/Lli2jf//+uWvI1Xc/tIx26tQp3n///dh0001j6NChMXDgwCgvL4/rr78+32V/rzfeeCMOO+ywOOyww6KsrCy3zVO7vb7HHnvEfffdF6+++mq0b98+brrppujatWtUV1fHv//974hY+No99flaPo19vyzCPot9loa3z1JI6yHLp+WzoS2fEfO3cQ899NCYNGlSfPPNN1FdXR39+vWLIUOGxPLLLx9VVVXxn//8J3bYYYdo1qxZzJkzJ5o1axZlZWWx1157xRtvvBHbbrttFBUVRUqpXn6WFtJ6CJaZfKWA1LWoI3fGjBmTevbsmfbcc8/ccC7vvPNOOvHEE+vtNcMWp1D6fP3111PHjh3T4MGD01NPPZVuvvnmtPPOO6ctttgiPf/88+ncc89NHTp0SA8++GBKKaUpU6ak7t27p759+6Yzzzwzd4RXfT3SaUFff/11OuSQQ9KAAQPSSy+9lPr27Zt22WWXdNppp6UZM2akqVOnpkMOOSSdeuqpP3jkT30+Oubpp59Obdu2TUcffXTaZ5990pZbbpmGDh2aG1I0pfnDEPTq1St17949d+r+gvOv9ojh+nzk8Pf1+frrr6eU5h+tNmDAgNStW7d07bXX5p734Ycfpv333z+NHDky19/06dPTGWeckd5555289PJDpk+fnnr06JEOPPDAdOutt6bLL7887bjjjqm0tDSNHTs2nX322alHjx5p0qRJKaW6Z4z169cvnXjiifkqfaksbn7OmjUrnXTSSalbt27pmmuuyT3v448/Tv369UsjR45MgwcPrvdH7X366adpzz33TEOHDv3esxS//vrr1L9//9SjR4909dVX56Z/9NFHae+9965zLYL6asaMGWnPPfdMnTt3zg3ll9L83nbYYYd0ySWXpJTm97TVVlulgQMHpqlTp6bTTz+9QfS3OA8//HAqLS3NDV/04IMP5q6XMWrUqHTYYYelt99+e6Hn1dfPlhkzZqRevXql3//+9+mFF15In3zySXrxxRfT888/n2pqatLMmTPTmWeembp06ZI6dOiQTjvttDR79uw0b968NG7cuNSzZ89FnqlS3yyqz3/961+5s1ZTmn+21DbbbJMOOOCA3NHgVVVV6eabb04HH3xwOuWUU3Jn6tRnr7/+eurQoUO68MIL06xZsxa6/5NPPknvvvtuuuWWW1K/fv1SaWlpKi0tTR07dkydO3dOXbp0SU8//XT64osv0vDhw1Pbtm3rjJhQ3y1uGT3iiCPSiBEjUkrzt/3r67KZ0qLnZe0+TO0ZyVVVVenDDz9MH330UZ3PyPHjx6c+ffqkK6+8ctkXvpQKZb+sln2W+eyzNIx9lkJZD9WyfM5n+WwYy2dK82vr3r17Ovjgg9Mrr7ySRo0albue30svvZQ++eST1L179zRgwIA6Q8nX1NSkp556KnXp0qVeD0uZUuGth2BZEcbl2YIfrIvaIRo9enTq2bNn6tOnT27n9u23304nnnhi6tSpU+5U/fquUPpM6b8fWBdccEGdL2MeeeSRVFpamq655po0ZcqUNGjQoNSxY8dcbyNHjkz77rtv2m+//dLAgQNzf7P6vEFZW+Po0aNTu3bt0pNPPpmmT5+e7rjjjtS1a9e06667pttvvz1dc8016eSTT04vvPBCSml+Tw1hQ3JBp512WjriiCPShAkT0qWXXpp69+6dNt5443Taaaelhx9+OKWU0ssvv5z23Xff1K1bt9z1fBacf/V1uIwFfV+fp5xySnruuefSt99+m4499ti08847p+7du6cjjjgi9ezZM+2xxx65Xmtv62OYPH369NStW7f0+9//Pn3xxRe56Y899ljq1KlTOv/889M//vGP1K1bt1RWVlbnmlqfffZZ6tu3b53gqr5b3Pys3Rnq1atX6tGjRzrmmGNS9+7d0+67755qamrSjTfemPbee+96+d6tXXdUVFSkPfbYI1VWVubuW3C5qw1Tp0yZkvbbb7/Us2fP1L1799x1jfbcc896P5Rh7c7eJptsknr06JGGDx+eu0D2tGnT0v77758GDBiQXn/99bTVVlulsrKyNH369DRv3rx0+OGHpyOPPDLPHfx0b775Ztp4443TK6+8kl566aXUtm3bdP3116eU5g9t1K5du9y6uL6rrq5OQ4YMSQceeOD3Xv9s+vTp6aWXXkoHHnhg2mmnndLf/va3lNL8Xs8555y0ww475D5n6qsl6bN2Hfvuu++mHXfcMR1wwAFp9OjRafr06WnKlCkppfr5WfJdtdt+w4YNW+jLivfffz/Nnj0799h58+alM844Ix1yyCFp1qxZafTo0enaa69N5557bq7Xzz77LF1zzTW5MKQhWJJl9LsBcn3cxh0xYkTq0KFDuuSSS3JDYtXOy7feeittsskmCw2x+fTTT6fTTz893XDDDel3v/td6tOnT71+3xbSflkt+yz2WRrSPkshrIcWZPm0fDak5TOl/36ncMghh9T5vuCNN95IHTt2TI899lhKKaV77703tW3bNp122mm5MHL8+PFp8ODBaa+99spt69ZHhbYegmWpKKX/fy44y9ycOXOirKws2rZtGwMHDoyIWOQwYGPGjIkTTzwxWrVqFXfeeWdERIwcOTIuv/zyeO+99+Lxxx+PFVZYoV6e0hxROH1GRLz99ttxwAEHxFFHHRXHHntstGjRos7p5j179oytttoqhg0bFlOnTo1LL700/vnPf8b5558fe++9d8ycOTOaNGkSTZs2jaKiono5xMLYsWNj0qRJseOOO+ampZSivLw8Xn755bjoootivfXWixkzZsSQIUPiyy+/jNmzZ8eXX34ZPXv2jLPOOiuP1f94d9xxR/zlL3+JK664IjbbbLN477334oMPPoiTTz45ampqYtttt40dd9wxfvWrX8Xdd98dY8eOjUcffTRatWqV79KXyuL63HnnnWOTTTaJ5ZdfPqZOnRpffPFFtG7dOk444YRo0qRJVFdX19thB7799tvYa6+9Yt11143zzz8/VltttTrL57777hurrrpqXHfddXHllVfGww8/HCuuuGKcdNJJ8dVXX8Wrr74aFRUVcdddd8U666yT32aW0OLmZ48ePWLTTTeNFVdcMT7//PP47LPPYvXVV4+TTz45IiIGDBgQKaW4/PLLo1mzZvVy/XvJJZfEk08+GU888cT3vve++OKLuPDCCyOllBues6SkJNZaa63o379/vR7SZsaMGbH77rvHRhttFEOHDo0rr7wy3nzzzdh9993j6KOPjpYtW8ajjz4ap556aqSUYtddd42LL744mjVrFl999VWcdNJJ0aFDhzjzzDPr7fAnERETJkyIqqqqWH/99Re6L6UUM2fOjDPOOCNeeOGFqKqqiiFDhsRBBx0UEREvv/xy/PGPf4xhw4bFVltttaxLX2qzZ8+OI444Inbaaac45phjctNramri5ptvjldffTVee+216NKlS9TU1MSKK64Y//d//xfNmjWLFi1a5IYd3XjjjfPYxeItrs/XXnstXn311ejQoUP07t07tt5669xwRa1atYoZM2bE3XffHcsvv3y9fd9GLHrbr3Y795133om+ffvGoEGD4sgjj8wtgw8++GBccMEFcf/99y80ZGzt52h9+zwthGX0k08+iX322Sd+85vfxN133x1NmzbNDSk1atSoOPTQQ6N79+4xdOjQ3DZ+dXV1XHPNNfHUU09Fs2bNYr311ouLL7643m4TFdJ+mX0W+ywNcZ+lENZDEZZPy2fDXD4jFv2dQu1+5MiRI+P444+Pq6++OjbbbLOIiLjrrrti+PDhUV1dHaussko0bdo0pkyZErfddlu9uwRNrUJZD0G+1L9BdwvI119/HV999VU8+eSTcdNNN0XE/Gt+1NTU1Hlc27Zt409/+lO89957MWzYsIiI6NixY5xxxhnx97//PVq2bFmvd4QKpc/Zs2fH4MGDY/nll49tt902d/2huXPnRkTElClTYtq0abHyyitHRMQvf/nLGDRoUPTu3TuGDh0ad911V7Ro0SL3hXdKqd59MVxVVRXnnHNO9O/fP8rLy2P8+PERMX987+233z5mz54dzz77bEREtGzZMoYPHx6HHnpobL755jFp0qS47bbb4umnn85nCz/aAQccEE2aNMm9hzfccMPcBkW/fv1i6tSpMXz48Lj44otjypQpsdZaa8Uqq6ySz5J/lMX1+fHHH8f1118ft9xySzRt2jSOOeaYGDhwYC7MqK8bWSmlOO2002L8+PHRr1+/WG211SIiYt68eZFSipqampg7d25uHTNw4MA48sgjo0WLFnHsscfmvny69dZbG0wQF7H4+Tl+/Pi4/vrr4+abb44VVlghDjvssOjVq1e88cYbcfrpp8err74aAwcOjOWWW67ern9rv7SutahjjFq3bh2TJk2KKVOmxO9+97u47LLL4uKLL66zw1ff1rcR83v54x//GOuvv36cd9558etf/zouvPDC6NSpUzzyyCNx0003xYwZM2K33XaLQYMGRUlJSbRs2TLefvvteOWVV+JPf/pTjB07Nvr16xcRUW/n4bfffhsHHXRQlJeXx7hx4xa6v6ioKFZYYYXo169fdOzYMVZeeeX4zW9+E9OnT48RI0bEVVddFa1bt44tttgiD9UvvTlz5sSUKVNixowZETG//8rKyjjwwAPjiiuuiDFjxsSOO+4YU6dOjc8//zzatWsXf/7zn+Pggw+OQYMGxR133FHvg7iIxfc5evTo6NatWy6c+/jjj+Mvf/lL/PrXv47lllsuLrvssnr/Zf+itv2qq6ujuLg4Ro0aFQcddFD069cvDjjggIj47zK4xhprxMyZM2PSpEkLvWbtOro+fZ4WyjLarFmzaNeuXVRVVcWtt96am/b222/HQQcdFLvttlucd955uW38oqKiaNKkSQwYMCDuv//+uOmmm+Kyyy6r19tEhbJfZp/FPktD3WcphPWQ5dPy2VCXz0V9p1C7H1lVVRUXXnhhVFVVxbRp0+Kxxx6LiRMnxv777x//+7//G6ecckpst912sc8++8Q999xTb4O4iMJYD0FeLcOz8FiECRMmpGOPPTb17Nkz3Xjjjbnp3z31fN68eWnw4MHp8MMPX+R1KOq7Qulz1KhRqXfv3un3v/99evPNN+vcd/TRR6devXotdJr2lClT0nHHHZcOPvjgZVnqjzZp0qR07bXXpo4dO6YDDzww3Xnnnbn7rrvuurTJJpsscjiqBx98MJ188skN8jT12iES7rvvvtSlS5c0atSo9I9//CO1bds2XXXVVbmxse+6667c2OgNYZjR71rSPu+55570+9//Pu23334Nqr+RI0emPfbYIx1yyCG569bUuvLKK9Nmm21WZzz3lOb/Td5999302Wefpa+//npZlvuTLc38PPjgg9N+++2X3nnnnXT88cenbbfdNvXr12+hoSfqk9rhaB555JHUoUOHdPfddy90X0r/Haby5ptvTl26dEmfffZZgxjepdZnn32WuxZebd1z585NgwYNSt27d68zZOWdd96ZOnfunLbeeuvUrVu3tOeee9brebigV199NXXp0iWdfvrpCy2HC87P5557Lp1wwgmpbdu2adttt03dunVLBxxwQG4+N4R5W1VVlU4++eTUo0ePdOaZZ6Zjjz02derUKXXu3DmdffbZ6fPPP08ppfT555+nvffeO11++eV5rvjHWdI+J0+enPbee+906aWX5p5X+55uCBbc9qsdgmjkyJFps802S0OGDEkzZ85c6DnffPNN2m677RrUsMeFsoxOnDgx9e/fP/Xs2TPdcccd6d13302lpaVp8ODBi5yXkyZNSo8//nidafV9uLRC2S+zz2KfpaHusxTCesjyaflsqMvngt8p1G73VVVVpT322CO1bds2devWLXXu3Dm1bds2bbLJJqlnz57p+uuvT//7v/9br6/D/l2FsB6CfDFMZT0wceLEOP/88+PDDz+MffbZJ44++uiIWHjIkD/84Q8xduzYuOOOO6Jp06b5KvdHK5Q+R48eHaeeemr88pe/jDPPPDM6dOgQ/fv3j7Fjx8YNN9wQG2200UKnaU+bNi1atmy50BAx9dmoUaPioosuii+++CLWWWeduOSSS2KFFVaIE088MTesXcuWLRc5LFp9HQ5ucT744IM4+uijY5VVVonRo0fH0UcfHUcddVS0aNEiN+/mzJmTG2a0oZ6OvyR9zp07N5o0aRJFRUWLHN6ovlpw+TzllFOiU6dOcc0118T1118fl19+eeyyyy5RU1MTRUVF9fqI76WxpPOzdn07bty4aNKkSayyyiqx0kor5bP0JfL555/HPvvsE2ussUYMGTIkNtlkk4iIhdY9Z599dkyYMCFuv/32fJX6s6hdr8ybNy/OPvvsePPNN6N3795x1FFHRcuWLWP8+PHx1VdfRbNmzWK11VZrUEfTjhgxIo4//vjYcccd45hjjqkzHN6C8/Prr7+OUaNGxdSpU6NVq1bRuXPn3N+koXy2fPTRR3HeeefFe++9F1VVVdG1a9c44IADon379rH88svn5vNRRx0VK664YgwfPjzfJf8ohdJn7WfL6quvHrvuumsMGzYsevfuHWeeeWYsv/zydR47adKk+J//+Z+YNGlSXHnllQ3mPRtROMto7T7L2LFjc58x5557bqSU6mzvfPrpp3HyySdH8+bN49Zbb21Q2w2Fsl8WYZ/FPkvD3GcphPVQhOXT8tkwl8/a7b7VVlst+vfvHxdeeGE0b948zj333PjVr34V3377bYwaNSpef/31ePPNN+P999+PiIiKiopYffXV81z9kiuU9RAsc/lIAFnYhAkTckcd3HDDDQvdP378+HTooYemCy64oN4fUfpDCqXPd999N+22227psMMOS/369Uvdu3dP77zzzmKf19B6njx5crrvvvtSr169Uvfu3dM999yTbrjhhtS/f//05JNPppQaXk+L89e//jW1bds2nX/++XWmf/eon4Z+FNCS9tkQ52/t8nnEEUeks846K3Xs2DE98sgj+S4rU0s6PxuqZ555JnXs2DEdc8wxC531WF1dncaOHZv69OmTLrvssjxV+PNa8ILmtWfIXXHFFbmLazdkb775Ztp6660XOvtmwbMC//nPf6abbrqpztlTDemI2lpff/11+vzzz7/3LKNPPvkkHXDAAen222/PR3k/m0Lp891330277rprat++ferfv39u+oLr2YkTJ6a999479evXL/eebWjv3UJZRidMmJCOO+64tPXWW6drr702N722z4kTJ6Z+/fqlXr165c76a2ifqYWyX5aSfZYF2WdpOAphPZSS5XNBls+Go/Y7hdLS0rTbbrst8myxlFKaNm1aeueddxZ5pmdDUCjrIViWGsZhBwVgzTXXjCFDhsT6668f9913X50jgz///PO4/vrr4/33348DDzywwRwtsiiF0me7du3i8ssvj08//TTefffdOPHEE3PXd0k/cDJqQ+u5VatW0bdv3/jHP/4RnTt3jgcffDBGjBgRI0eOjKeeeioiGl5Pi7PllltGu3btYvbs2TFnzpzc9O8e/dPQjwZa0j4b4vytXT4nTpwYDzzwQPTv3z922223fJeVqSWdnw1Vt27d4pxzzokXX3wxzjnnnPif//mf+Prrr+PTTz+NZ555Jv74xz9GSUlJDBw4MCJ+eD3cENReJ69JkyZx4YUXxhZbbBGPP/54XHXVVTFz5sx8l/eTbL755nHdddfF888/HzfeeGPu+lTFxcUxZ86cePbZZ2PYsGFx7733RvPmzXPPa4hHDP/iF7+I1q1b584uqr3GbFFRUUyePDluvPHG+PTTT2OnnXbKY5U/XaH02a5duxg+fHi0adMmZsyYESNGjIiI/65nP/300zjllFOiqqoq/vrXv0ZJSUnU1NQ0uPduoSyja665ZvzhD3+I0tLSePDBB+PGG2+MiPl9jh8/Pk455ZSYNm1aPPTQQ9G0adOYN29eg/tMLZT9sgj7LPZZGub8LYT1UITl0/LZMOdvu3bt4oorrojWrVvHiiuuGKNHj46I+fuZ6f9fkz5i/nUPN95442jTpk0+y/3RCmU9BMuSYSrrmUmTJsXVV18d//rXv2KNNdaI1VdfPb7++uv46KOP4sYbb8wFOg1dofQ5ZsyYOPnkk2PVVVeNsrKy6NSpU0QsPHxaQ7ZgL48//niMHDkybrnllqiuro6LL744+vTpk+cKf37nnntuPP744/Hggw/Gaqut1qCGVFgajb3PMWPGRFlZWay66qpx8sknN8rlc0GNfX5GRLzyyitxwQUXxIQJE2K55ZaLOXPmxGqrrRZrr712XHvttdGkSZMGO9TLoiw4ZOVJJ50Un376afzlL3+JX/7yl/ku7SerHQ5vhx12iBNPPDHWWmutePzxx+PCCy+MVq1axd133x1NmzZtNO/ja665JsaNGxc77LBDTJ48Od58882orKyMW2+9tdFsE0UURp+1Qxf96le/irKysth8881j4sSJccopp8T06dPjwQcfzH1Z0RCH16pVKMvogsM57rvvvtG7d+84+eST45tvvokHHnigUczLQtkvs8/SOLf9Ihp/n4WwHrJ8Nr73ba3G3ueC230DBw6MLbbYIiIa33cKhbAegmVFGFcPffXVV/Haa6/FQw89FHPnzo327dtH3759Y6211sp3aT+rQumz9sO5VatWMXDgwNh8883zXdLPbsENjTlz5sQzzzwTDz30UFx99dWN6sO4ts/JkyfHXnvtFdtss01cfvnl+S7rZ1cofUbU3XheMJBrTAppfkZETJ06NcaNGxeVlZXRvHnz2GijjWKrrbaK4uLiRrmDsGAgN2XKlFhttdXyXdLPpvbL/q5du0bHjh3jtttui5VWWin+/ve/R5MmTRrN/Kyuro777rsvLr/88pgzZ06sssoq0bFjxxg4cGCda3I1dIXSZ0Tdbb+DDz44br/99pg6dWqj+7KiUJbRiRMnxgUXXBAffPBBTJ06NVZdddVGE6rWKpT9MvssjUuh9BlRGOshy2fjUih9RhTGdwoRhbEegmWhIMK4zz//PHbbbbcYMGBAHHbYYfkuhwI0evToGDRoUEREXHbZZdG2bds8V7TsNMYP5aqqqjjmmGOiWbNmceONNzaqI54WVCh9jh49Ok4//fQoKSmJoUOHxqabbprvkjJRKPPz+zS2ozAX1JjO9vuuESNGxHHHHRfffPNNtG/fPne2TWP8bJk8eXJMmTIlVllllVhppZWiRYsW+S4pE4XSZ+2233vvvRcbbrhh3H///Y3yvVsoy+jEiRNj0KBBUVJSErfcckujChuZrzHOz0LZ9iuUPgt5PdQY+yyU922h9Fko3ykU8noIfi6NPoz79ttv4/DDD4+33norzjrrrAYTxi14VFBjO715QYXSZ0TEf/7zn7jtttvi4osvbrRfmhaSSZMmRevWraOkpKRRv3cLpc+RI0fG+eefH1dccUWsueaa+S4nM4UyPxtzb4XojTfeiCuvvNIOHw3OqFGj4qabborL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RoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGSkSb4LAAAAAAAAoGGaMmVK3H///VFUVBTFxcVRVFRU5+fv3n73/pKSkujUqVOssMIK+W4lM8K4AlNaWhoVFRX5LiNzlZWV+S4BoGD4bAHyrbKyMsrKyvJdRqbKy8sjIgqiz9LS0nyXAQANUiHsl0VE7LTTTvkuIVOFst1Xq1Det41Z69at44033oirr776J73OIYccEocffvjPVFX9I4wDAAAAAABgqZ122mnRv3//SClFSilqampytxFR5/dFPSalFMcdd1xUVVXluZNsCeMAAAAAAABYakVFRbHSSiv9pNcoLi7+maqpvxp/hwAAAAAAAJAnwjgAAAAAAADIiDAOAAAAAAAAMiKMAwAAAAAAgAXMmTMn9thjj3jppZdy05577rno3bt3bLrpptGnT594/vnnl+i1hHEAAAAAAADw/1VVVcUpp5wS7733Xm7a+++/HyeddFL069cvHnnkkdhzzz3jhBNOiPHjxy/29YRxAAAAAAAAEPNDt/322y8++eSTOtMnTZoUBx98cBx88MHRpk2bOPLII2P55ZePysrKxb6mMA4AAAAAAIBlrrq6Oqqrq2PUqFHx8ssvR3V1db5LijfeeCO6dOkSd999d53pXbt2jTPOOCMiIubOnRv33ntvzJkzJ0pLSxf7mk2yKBQAAAAAAAC+T3V1dZx++ukxd+7cGDlyZJx//vmx8cYbxyWXXBIlJSV5q2v//ff/wfvHjRsXvXv3jurq6jj11FOjTZs2i31NYRwAAAAAAABL7YknnoinnnoqampqIqW0yNuIWOT0b7/9Nr788svca82aNSveeeedeO2112LbbbfNV0uLteqqq8bf//73GDFiRFx00UWx9tprxy677PKDzxHGFZjKysooKyvLdxmZKi8vz3cJAAXFZwuQb6WlpVFRUZHvMpaJQukTAFh6O+20U75LyFTtflmhbA8VSp80fE8//XS88847seGGG0ZRUVEUFxcv8va70yIixo8fH5MnT67zelVVVfH+++/X6zBu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AAAAAAAAP8Viz4yrrq6O/v37R5MmTaK4eOHsrlmzZjF37tyYO3dufPXVV/H1119H27Ztl+g/f+ihh+Lbb7+NYcOGxTbbbPO9Q1RGzA/j1l133WjatOkPvuaECRMiYv716b6rtq4333wzfvvb3y5RjQAAAAAAAPBjLTaMKykpWeiMuFrjxo2LDz74INZaa61YbrnlckNJzp07N0444YQYMWJEzJ49OzbffPMYOHBgbLrppnWev88++8Qf/vCHaNmyZS5EW5SZM2fG+PHjY+utt46hQ4fG888/H19++WWsv/76cfjhh8eee+6Ze2zt8JNz5sxZ6HWmT58eERGffvrp4toGAAAAAACAn2yJrhm3KDU1NXH++edHTU1N7LfffhHx3+u63XXXXbH99ttH37594+OPP45nn302Xn311fjzn/8cXbt2zb3GlltuuUT/19ixYyOlFK+88kp89dVXscsuu8RXX30Vzz77bAwaNCg++uijOOmkkyIiomPHjhER8dRTT9X5vyIinn322Yj4byi3oIqKiqX7AzRghdKrPhuXQukzonB61Wfjos/GRZ8AAADAkrj00kvzXUKD8KPCuJRSnHPOOfHyyy9Hx44dc2fO1dTUxJprrhllZWV1zlZ77bXX4rDDDouzzjornnnmmVhuueWW6v+bPn16rLvuutGlS5cYPHhwbrjMzz//PA444IC47rrromfPntGuXbvo1atXXHnllXHvvfdG69ato1+/fhERceedd+auFZdS+jFtAwAAAAAAwFJZ+CJwizFv3rw4++yz49577402bdrEddddlxsa8thjj41nn322ThAXEdG5c+fo3bt3TJ48OV577bWlLrJr167x+OOPx5AhQ+pct2611VaLE044IVJK8cgjj0RERPPmzePPf/5zrL766nH11VfH9ttvH9tvv33ceeedcckll+QeAwAAAAAAAFlbqjPjZs2aFQMHDoznn38+1llnnbjllltitdVWW6Lntm/fPh544IEfvDbcj9GhQ4eIiDqv265du3j00Ufj2WefjQkTJsTqq68ePXr0iEmTJkVERKtWrX7WGgAAAAAAAGBRljiM++abb+Loo4+Ot956K9q3bx8333xz/OpXv6rzmFGjRsXMmTNjq622Wuj5VVVVERFLPURlRMQnn3wSEydOjNLS0mjRokWd+2bPnr3I123RokXsvvvudaaNHDkyIiI22GCDpa4BAAAAAAAAltYSDVNZVVUV/fv3j7feeis6d+4cf/3rXxcK4iIiTjjhhDjkkENi6tSpC9335ptvRkREx44dl7rIa665Jg477LB44YUXFvu6b7/9dnTp0iVuvfXWhR775JNPRkTE9ttvv9Q1AAAAAAAAwNJaojDuiiuuiH//+9/RqVOnuOmmm6Jly5aLfFyvXr2ipqYmhg8fHiml3PTHHnssKioqYquttoqNNtpoqYvs1atXRERce+21MXPmzNz0Dz74IG688cb4xS9+EXvssUdERGy00Ubx7bffxr333htz5szJPfaBBx6I5557Lrp16+bMOAAAAAAAAJaJorRgarYIkydPjm7dusXcuXPjd7/7XayxxhqLfNwxxxwTVVVVsf/++8e4ceNis802iy222CI+/PDDqKioiFatWsWdd94Zbdq0WeTzJ0yYED169IgePXrEddddt9D9p556ajz88MOx5pprRvfu3WPatGnx1FNPxZw5c+Lqq6+O7t275x57++23x7Bhw2LDDTeMrl27xqeffhpPPvlkrLHGGnHHHXd8bw8AAAAAAADwc1psGPf000/HCSecsNgXev3112OllVaKadOmxTXXXBNPPfVUTJ48OVZeeeXYaaed4qSTTorWrVt/7/MXF8bV1NTE3/72t7j33nvjww8/jBYtWsTmm28eJ5xwQmy66aYLPf7BBx+MW2+9NT766KNYZZVVYscdd4zjjz8+Vl111cX2AgAAAAAAAD+HxYZxAAAAAAAAwI+zRNeMAwAAAAAAAJaeMA4AAAAAAAAyIowDAAAAAACAjAjjAAAAAAAAICPCOAAAAAAAAMiIMA4AAAAAAAAyIowDAAAAAACAjAjjAAAAAAAAICPCOAAAAAAAAMjI/wMzibx0BkJ5/AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 2160x504 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot visualisation of the missing values for each feature of the raw DataFrame, df_capology_raw\n",
    "msno.matrix(df_capology_raw, figsize = (30, 7))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "breathing-tablet",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Unnamed: 0.1                            6599\n",
       "Player                                   498\n",
       "Weekly GrossBase Salary(IN EUR)         8643\n",
       "Annual GrossBase Salary(IN EUR)         8643\n",
       "Adj. GrossBase Salary(2021, IN EUR)     9799\n",
       "Country                                 2468\n",
       "Status                                 25159\n",
       "Expiration                             22691\n",
       "Length                                 22691\n",
       "EstimatedGross Total(IN EUR)           24003\n",
       "Unnamed: 2                             25159\n",
       "Weekly GrossBase Salary(IN GBP)        21163\n",
       "Annual GrossBase Salary(IN GBP)        21163\n",
       "Adj. GrossBase Salary(2021, IN GBP)    21709\n",
       "EstimatedGross Total(IN GBP)           24613\n",
       "Weekly GrossBase Salary(IN USD)        20512\n",
       "Annual GrossBase Salary(IN USD)        20512\n",
       "Adj. GrossBase Salary(2021, IN USD)    21278\n",
       "RosterStatus                           24393\n",
       "EstimatedGross Total(IN USD)           24393\n",
       "dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Counts of missing values\n",
    "null_value_stats = df_capology_raw.isnull().sum(axis=0)\n",
    "null_value_stats[null_value_stats != 0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "covered-sperm",
   "metadata": {},
   "source": [
    "The visualisation shows us very quickly that there are missing values in a number of the columns, such as the financial columns such as Estimated Gross Total. This is because depending on the country, the financial values are only scraped in one country. This need to be coalesced.\n",
    "\n",
    "This concludes the data handling section, the next thing to do is engineer the raw dataset to be ready for further analysis."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "intimate-sleep",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "## <a id='#section4'>4. Data Engineering</a>\n",
    "Before any Data Analysis, we first need to clean and wrangle the datasets to a form that meet our needs."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "smoking-feelings",
   "metadata": {},
   "source": [
    "Still to add:\n",
    "- Original value columns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "thick-block",
   "metadata": {},
   "source": [
    "### <a id='#section4.1'>4.1. Assign Raw DataFrame to Engineered DataFrame\n",
    "From this point, all changes made to the dataset applied to the new engineered DataFrame, `df_capology`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "union-northwest",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>Player</th>\n",
       "      <th>Weekly GrossBase Salary(IN EUR)</th>\n",
       "      <th>Annual GrossBase Salary(IN EUR)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN EUR)</th>\n",
       "      <th>Pos.</th>\n",
       "      <th>Age</th>\n",
       "      <th>Country</th>\n",
       "      <th>Team</th>\n",
       "      <th>League</th>\n",
       "      <th>Season</th>\n",
       "      <th>Status</th>\n",
       "      <th>Expiration</th>\n",
       "      <th>Length</th>\n",
       "      <th>EstimatedGross Total(IN EUR)</th>\n",
       "      <th>Unnamed: 2</th>\n",
       "      <th>Weekly GrossBase Salary(IN GBP)</th>\n",
       "      <th>Annual GrossBase Salary(IN GBP)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN GBP)</th>\n",
       "      <th>EstimatedGross Total(IN GBP)</th>\n",
       "      <th>Weekly GrossBase Salary(IN USD)</th>\n",
       "      <th>Annual GrossBase Salary(IN USD)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN USD)</th>\n",
       "      <th>RosterStatus</th>\n",
       "      <th>EstimatedGross Total(IN USD)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Gonzalo Higuaín</td>\n",
       "      <td>€ 338,327</td>\n",
       "      <td>€ 17,593,000</td>\n",
       "      <td>€ 17,568,773</td>\n",
       "      <td>F</td>\n",
       "      <td>30</td>\n",
       "      <td>Argentina</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>Gianluigi Donnarumma</td>\n",
       "      <td>€ 213,673</td>\n",
       "      <td>€ 11,111,000</td>\n",
       "      <td>€ 11,095,699</td>\n",
       "      <td>K</td>\n",
       "      <td>19</td>\n",
       "      <td>Italy</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>Lucas Biglia</td>\n",
       "      <td>€ 124,635</td>\n",
       "      <td>€ 6,481,000</td>\n",
       "      <td>€ 6,472,075</td>\n",
       "      <td>M</td>\n",
       "      <td>32</td>\n",
       "      <td>Argentina</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>Alessio Romagnoli</td>\n",
       "      <td>€ 124,635</td>\n",
       "      <td>€ 6,481,000</td>\n",
       "      <td>€ 6,472,075</td>\n",
       "      <td>D</td>\n",
       "      <td>23</td>\n",
       "      <td>Italy</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>4.0</td>\n",
       "      <td>Tiemoué Bakayoko</td>\n",
       "      <td>€ 124,635</td>\n",
       "      <td>€ 6,481,000</td>\n",
       "      <td>€ 6,472,075</td>\n",
       "      <td>M</td>\n",
       "      <td>23</td>\n",
       "      <td>France</td>\n",
       "      <td>Ac Milan</td>\n",
       "      <td>Serie A</td>\n",
       "      <td>2018-2019</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  Unnamed: 0.1                Player  \\\n",
       "0           0           0.0       Gonzalo Higuaín   \n",
       "1           1           1.0  Gianluigi Donnarumma   \n",
       "2           2           2.0          Lucas Biglia   \n",
       "3           3           3.0     Alessio Romagnoli   \n",
       "4           4           4.0      Tiemoué Bakayoko   \n",
       "\n",
       "  Weekly GrossBase Salary(IN EUR) Annual GrossBase Salary(IN EUR)  \\\n",
       "0                       € 338,327                    € 17,593,000   \n",
       "1                       € 213,673                    € 11,111,000   \n",
       "2                       € 124,635                     € 6,481,000   \n",
       "3                       € 124,635                     € 6,481,000   \n",
       "4                       € 124,635                     € 6,481,000   \n",
       "\n",
       "  Adj. GrossBase Salary(2021, IN EUR) Pos. Age    Country      Team   League  \\\n",
       "0                        € 17,568,773    F  30  Argentina  Ac Milan  Serie A   \n",
       "1                        € 11,095,699    K  19      Italy  Ac Milan  Serie A   \n",
       "2                         € 6,472,075    M  32  Argentina  Ac Milan  Serie A   \n",
       "3                         € 6,472,075    D  23      Italy  Ac Milan  Serie A   \n",
       "4                         € 6,472,075    M  23     France  Ac Milan  Serie A   \n",
       "\n",
       "      Season  Status Expiration Length EstimatedGross Total(IN EUR)  \\\n",
       "0  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "1  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "2  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "3  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "4  2018-2019     NaN        NaN    NaN                          NaN   \n",
       "\n",
       "   Unnamed: 2 Weekly GrossBase Salary(IN GBP) Annual GrossBase Salary(IN GBP)  \\\n",
       "0         NaN                             NaN                             NaN   \n",
       "1         NaN                             NaN                             NaN   \n",
       "2         NaN                             NaN                             NaN   \n",
       "3         NaN                             NaN                             NaN   \n",
       "4         NaN                             NaN                             NaN   \n",
       "\n",
       "  Adj. GrossBase Salary(2021, IN GBP) EstimatedGross Total(IN GBP)  \\\n",
       "0                                 NaN                          NaN   \n",
       "1                                 NaN                          NaN   \n",
       "2                                 NaN                          NaN   \n",
       "3                                 NaN                          NaN   \n",
       "4                                 NaN                          NaN   \n",
       "\n",
       "  Weekly GrossBase Salary(IN USD) Annual GrossBase Salary(IN USD)  \\\n",
       "0                             NaN                             NaN   \n",
       "1                             NaN                             NaN   \n",
       "2                             NaN                             NaN   \n",
       "3                             NaN                             NaN   \n",
       "4                             NaN                             NaN   \n",
       "\n",
       "  Adj. GrossBase Salary(2021, IN USD) RosterStatus  \\\n",
       "0                                 NaN          NaN   \n",
       "1                                 NaN          NaN   \n",
       "2                                 NaN          NaN   \n",
       "3                                 NaN          NaN   \n",
       "4                                 NaN          NaN   \n",
       "\n",
       "  EstimatedGross Total(IN USD)  \n",
       "0                          NaN  \n",
       "1                          NaN  \n",
       "2                          NaN  \n",
       "3                          NaN  \n",
       "4                          NaN  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Assign Raw DataFrame to Engineered DataFrame\n",
    "df_capology = df_capology_raw.copy()\n",
    "\n",
    "# Display DataFrame\n",
    "df_capology.head() "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "arabic-norfolk",
   "metadata": {},
   "source": [
    "### <a id='#section4.2'>4.2. Clean Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "nonprofit-exclusion",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:6: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "  \n"
     ]
    }
   ],
   "source": [
    "df_capology['Weekly GrossBase Salary(IN EUR)'] =  (df_capology['Weekly GrossBase Salary(IN EUR)']\n",
    "                                                          .replace('None', np.nan)\n",
    "                                                          .astype(str)\n",
    "                                                          .str.replace('£','')\n",
    "                                                          .str.replace('€','')\n",
    "                                                          .str.replace('$','')\n",
    "                                                          .str.replace(',','')\n",
    "                                                          .str.extract('(\\d+)', expand=False)\n",
    "                                                     ).astype(float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "quick-sydney",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:6: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "  \n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:16: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "  app.launch_new_instance()\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:26: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:36: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:46: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:56: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:66: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:76: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:86: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:96: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:106: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n",
      "/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:116: FutureWarning: The default value of regex will change from True to False in a future version. In addition, single character regular expressions will *not* be treated as literal strings when regex=True.\n"
     ]
    }
   ],
   "source": [
    "df_capology['Weekly GrossBase Salary(IN EUR)'] =  (df_capology['Weekly GrossBase Salary(IN EUR)']\n",
    "                                                          .replace('None', np.nan)\n",
    "                                                          .astype(str)\n",
    "                                                          .str.replace('£','')\n",
    "                                                          .str.replace('€','')\n",
    "                                                          .str.replace('$','')\n",
    "                                                          .str.replace(',','')\n",
    "                                                          .str.extract('(\\d+)', expand=False)\n",
    "                                                     ).astype(float)\n",
    "\n",
    "df_capology['Annual GrossBase Salary(IN EUR)'] = (df_capology['Annual GrossBase Salary(IN EUR)']\n",
    "                                                          .replace('None', np.nan)\n",
    "                                                          .astype(str)\n",
    "                                                          .str.replace('£','')\n",
    "                                                          .str.replace('€','')\n",
    "                                                          .str.replace('$','')\n",
    "                                                          .str.replace(',','')\n",
    "                                                          .str.extract('(\\d+)', expand=False)\n",
    "                                                     ).astype(float)\n",
    "\n",
    "df_capology['EstimatedGross Total(IN EUR)'] = (df_capology['EstimatedGross Total(IN EUR)']\n",
    "                                                      .replace('None', np.nan)\n",
    "                                                      .astype(str)\n",
    "                                                      .str.replace('£','')\n",
    "                                                      .str.replace('€','')\n",
    "                                                      .str.replace('$','')\n",
    "                                                      .str.replace(',','')\n",
    "                                                      .str.extract('(\\d+)', expand=False)\n",
    "                                                 ).astype(float)\n",
    "\n",
    "df_capology['Adj. GrossBase Salary(2021, IN EUR)'] = (df_capology['Adj. GrossBase Salary(2021, IN EUR)']\n",
    "                                                             .replace('None', np.nan)\n",
    "                                                             .astype(str)\n",
    "                                                             .str.replace('£','')\n",
    "                                                             .str.replace('€','')\n",
    "                                                             .str.replace('$','')\n",
    "                                                             .str.replace(',','')\n",
    "                                                             .str.extract('(\\d+)', expand=False)\n",
    "                                                        ).astype(float)\n",
    "\n",
    "df_capology['Weekly GrossBase Salary(IN USD)'] = (df_capology['Weekly GrossBase Salary(IN USD)']\n",
    "                                                         .replace('None', np.nan)\n",
    "                                                         .astype(str)\n",
    "                                                         .str.replace('£','')\n",
    "                                                         .str.replace('€','')\n",
    "                                                         .str.replace('$','')\n",
    "                                                         .str.replace(',','')\n",
    "                                                         .str.extract('(\\d+)', expand=False)\n",
    "                                                    ).astype(float)\n",
    "\n",
    "df_capology['Annual GrossBase Salary(IN USD)'] = (df_capology['Annual GrossBase Salary(IN USD)']\n",
    "                                                          .replace('None', np.nan)\n",
    "                                                          .astype(str)\n",
    "                                                          .str.replace('£','')\n",
    "                                                          .str.replace('€','')\n",
    "                                                          .str.replace('$','')\n",
    "                                                          .str.replace(',','')\n",
    "                                                          .str.extract('(\\d+)', expand=False)\n",
    "                                                     ).astype(float)\n",
    "\n",
    "df_capology['EstimatedGross Total(IN USD)'] = (df_capology['EstimatedGross Total(IN USD)']\n",
    "                                                      .replace('None', np.nan)\n",
    "                                                      .astype(str)\n",
    "                                                      .str.replace('£','')\n",
    "                                                      .str.replace('€','')\n",
    "                                                      .str.replace('$','')\n",
    "                                                      .str.replace(',','')\n",
    "                                                      .str.extract('(\\d+)', expand=False)\n",
    "                                                 ).astype(float)\n",
    "\n",
    "df_capology['Adj. GrossBase Salary(2021, IN USD)'] = (df_capology['Adj. GrossBase Salary(2021, IN USD)']\n",
    "                                                              .replace('None', np.nan)\n",
    "                                                              .astype(str)\n",
    "                                                              .str.replace('£','')\n",
    "                                                              .str.replace('€','')\n",
    "                                                              .str.replace('$','')\n",
    "                                                              .str.replace(',','')\n",
    "                                                              .str.extract('(\\d+)', expand=False)\n",
    "                                                         ).astype(float)\n",
    "\n",
    "df_capology['Weekly GrossBase Salary(IN GBP)'] = (df_capology['Weekly GrossBase Salary(IN GBP)']\n",
    "                                                          .replace('None', np.nan)\n",
    "                                                          .astype(str)\n",
    "                                                          .str.replace('£','')\n",
    "                                                          .str.replace('€','')\n",
    "                                                          .str.replace('$','')\n",
    "                                                          .str.replace(',','')\n",
    "                                                          .str.extract('(\\d+)', expand=False)\n",
    "                                                     ).astype(float)\n",
    "\n",
    "df_capology['Annual GrossBase Salary(IN GBP)'] = (df_capology['Annual GrossBase Salary(IN GBP)']\n",
    "                                                          .replace('None', np.nan)\n",
    "                                                          .astype(str)\n",
    "                                                          .str.replace('£','')\n",
    "                                                          .str.replace('€','')\n",
    "                                                          .str.replace('$','')\n",
    "                                                          .str.replace(',','')\n",
    "                                                          .str.extract('(\\d+)', expand=False)\n",
    "                                                     ).astype(float)\n",
    "\n",
    "df_capology['EstimatedGross Total(IN GBP)'] = (df_capology['EstimatedGross Total(IN GBP)']\n",
    "                                                      .replace('None', np.nan)\n",
    "                                                      .astype(str)\n",
    "                                                      .str.replace('£','')\n",
    "                                                      .str.replace('€','')\n",
    "                                                      .str.replace('$','')\n",
    "                                                      .str.replace(',','')\n",
    "                                                      .str.extract('(\\d+)', expand=False)\n",
    "                                                 ).astype(float)\n",
    "\n",
    "df_capology['Adj. GrossBase Salary(2021, IN GBP)'] = (df_capology['Adj. GrossBase Salary(2021, IN GBP)']\n",
    "                                                              .replace('None', np.nan)\n",
    "                                                              .astype(str)\n",
    "                                                              .str.replace('£','')\n",
    "                                                              .str.replace('€','')\n",
    "                                                              .str.replace('$','')\n",
    "                                                              .str.replace(',','')\n",
    "                                                              .str.extract('(\\d+)', expand=False)\n",
    "                                                         ).astype(float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "lesbian-external",
   "metadata": {},
   "outputs": [],
   "source": [
    "#\n",
    "df_capology['Currency'] = np.where(df_capology['Annual GrossBase Salary(IN EUR)'].notnull(), 'EUR',\n",
    "                                      np.where(df_capology['Annual GrossBase Salary(IN GBP)'].notnull(), 'GBP',\n",
    "                                               np.where(df_capology['Annual GrossBase Salary(IN EUR)'].notnull(), 'USD', 'n/a')\n",
    "                                              )\n",
    "                                     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "painted-compilation",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Get EUR to GBP exchange rate\n",
    "\n",
    "## Get latest currency rates\n",
    "c = CurrencyConverter()\n",
    "\n",
    "##  Get conversion rate from EUR to GBP\n",
    "rate_eur_gbp = (c.convert(1, 'EUR', 'GBP'))\n",
    "rate_eur_gbp\n",
    "\n",
    "##  Get conversion rate from USD to GBP\n",
    "rate_usd_gbp = (c.convert(1, 'USD', 'GBP'))\n",
    "rate_usd_gbp\n",
    "\n",
    "##  \n",
    "rate_gbp_gbp = 1\n",
    "rate_gbp_gbp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "general-check",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_capology['Exchange Rate'] = np.where(df_capology['Currency'] == 'EUR', rate_eur_gbp,\n",
    "                                           np.where(df_capology['Currency'] == 'USD', rate_usd_gbp,\n",
    "                                                     np.where(df_capology['Currency'] == 'GBP', 1, np.nan)\n",
    "                                                   )\n",
    "                                          )\n",
    "\n",
    "df_capology['Exchange Rate'] = df_capology['Exchange Rate'].replace('None', np.nan).astype(float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "concerned-compilation",
   "metadata": {},
   "outputs": [],
   "source": [
    "#\n",
    "\n",
    "## Coalesce the four salary columns\n",
    "\n",
    "###\n",
    "df_capology['Estimated Gross Total Original'] = (df_capology['EstimatedGross Total(IN GBP)']\n",
    "                                                        .combine_first(df_capology['EstimatedGross Total(IN GBP)'])\n",
    "                                                        .combine_first(df_capology['EstimatedGross Total(IN USD)'])\n",
    "                                                        .replace('None', np.nan)\n",
    "                                                        .astype(float)\n",
    "                                                   )\n",
    "\n",
    "df_capology['Estimated Gross Total GBP'] = (df_capology['Estimated Gross Total Original'] * df_capology['Exchange Rate'])\n",
    "\n",
    "df_capology['Estimated Gross Total GBP'] = (df_capology['Estimated Gross Total GBP']\n",
    "                                                      .fillna(-1)\n",
    "                                                      .astype(int)\n",
    "                                                      .astype(str)\n",
    "                                                      .replace('-1', np.nan)\n",
    "                                                 )\n",
    "\n",
    "###\n",
    "df_capology['Weekly Gross Base Salary Original'] = (df_capology['Weekly GrossBase Salary(IN GBP)']\n",
    "                                                           .combine_first(df_capology['Weekly GrossBase Salary(IN EUR)'])\n",
    "                                                           .combine_first(df_capology['Weekly GrossBase Salary(IN USD)'])\n",
    "                                                           .replace('None', np.nan)\n",
    "                                                           .astype(float)\n",
    "                                                      )\n",
    "\n",
    "df_capology['Weekly Gross Base Salary GBP'] = df_capology['Weekly Gross Base Salary Original'] * df_capology['Exchange Rate']\n",
    "\n",
    "df_capology['Weekly Gross Base Salary GBP'] = (df_capology['Weekly Gross Base Salary GBP']\n",
    "                                                      .fillna(-1)\n",
    "                                                      .astype(int)\n",
    "                                                      .astype(str)\n",
    "                                                      .replace('-1', np.nan)\n",
    "                                                 )\n",
    "\n",
    "###\n",
    "df_capology['Annual Gross Base Salary Original'] = (df_capology['Annual GrossBase Salary(IN GBP)']\n",
    "                                                           .combine_first(df_capology['Annual GrossBase Salary(IN EUR)'])\n",
    "                                                           .combine_first(df_capology['Annual GrossBase Salary(IN USD)'])\n",
    "                                                           .replace('None', np.nan)\n",
    "                                                           .astype(float)\n",
    "                                                      )\n",
    "\n",
    "df_capology['Annual Gross Base Salary GBP'] = df_capology['Annual Gross Base Salary Original'] * df_capology['Exchange Rate']\n",
    "\n",
    "df_capology['Annual Gross Base Salary GBP'] = (df_capology['Annual Gross Base Salary GBP']\n",
    "                                                      .fillna(-1)\n",
    "                                                      .astype(int)\n",
    "                                                      .astype(str)\n",
    "                                                      .replace('-1', np.nan)\n",
    "                                                 )\n",
    "\n",
    "###\n",
    "df_capology['Adj. Gross Base Salary for Current Season Original'] = (df_capology['Adj. GrossBase Salary(2021, IN GBP)']\n",
    "                                                                            .combine_first(df_capology['Adj. GrossBase Salary(2021, IN EUR)'])\n",
    "                                                                            .combine_first(df_capology['Adj. GrossBase Salary(2021, IN USD)'])\n",
    "                                                                            .replace('None', np.nan)\n",
    "                                                                            .astype(float)\n",
    "                                                                       )\n",
    "\n",
    "df_capology['Adj. Gross Base Salary for Current Season GBP'] = df_capology['Adj. Gross Base Salary for Current Season Original'] * df_capology['Exchange Rate']\n",
    "\n",
    "df_capology['Adj. Gross Base Salary for Current Season GBP'] = (df_capology['Adj. Gross Base Salary for Current Season GBP']\n",
    "                                                                        .fillna(-1)\n",
    "                                                                        .astype(int)\n",
    "                                                                        .astype(str)\n",
    "                                                                        .replace('-1', np.nan)\n",
    "                                                                   )\n",
    "\n",
    "\n",
    "## Coalesce the two status columns\n",
    "\n",
    "###\n",
    "df_capology['Status'] = (df_capology['Status']\n",
    "                                .combine_first(df_capology['RosterStatus'])\n",
    "                                .combine_first(df_capology['EstimatedGross Total(IN USD)'])\n",
    "                                .replace('None', np.nan)\n",
    "                                .astype(str)\n",
    "                           )\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "sufficient-healthcare",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_capology = df_capology[~df_capology['Pos.'].isin(['No data available in table'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "pointed-european",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['F', 'K', 'M', 'D', 'CF', 'CB', 'RB', 'LW', 'CM', 'GK', 'DM', 'RW',\n",
       "       'LB', 'AM', 'SS', 'LM', 'RM'], dtype=object)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_capology['Pos.'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "curious-logistics",
   "metadata": {},
   "outputs": [],
   "source": [
    "## Map Positions\n",
    "\n",
    "### \n",
    "dict_positions_grouped = {'K': 'Goalkeeper',\n",
    "                          'D': 'Defender',\n",
    "                          'M': 'Midfielder',\n",
    "                          'F': 'Forward',\n",
    "                          'GK': 'Goalkeeper',\n",
    "                          'LB': 'Defender',\n",
    "                          'RB': 'Defender',\n",
    "                          'CB': 'Defender',\n",
    "                          'DM': 'Midfielder',\n",
    "                          'LM': 'Midfielder',\n",
    "                          'CM': 'Midfielder',\n",
    "                          'RM': 'Midfielder',\n",
    "                          'AM': 'Midfielder',\n",
    "                          'LW': 'Forward',\n",
    "                          'RW': 'Forward',\n",
    "                          'SS': 'Forward',\n",
    "                          'CF': 'Forward'\n",
    "                         }\n",
    "\n",
    "### Map grouped positions to DataFrame\n",
    "df_capology['Pos.'] = df_capology['Pos.'].map(dict_positions_grouped)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "extensive-bikini",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>player</th>\n",
       "      <th>season</th>\n",
       "      <th>league</th>\n",
       "      <th>team</th>\n",
       "      <th>position</th>\n",
       "      <th>outfielder_goalkeeper</th>\n",
       "      <th>age</th>\n",
       "      <th>country</th>\n",
       "      <th>weekly_gross_base_salary_gbp</th>\n",
       "      <th>annual_gross_base_salary_gbp</th>\n",
       "      <th>adj_current_gross_base_salary_gbp</th>\n",
       "      <th>estimated_gross_total_gbp</th>\n",
       "      <th>current_contract_status</th>\n",
       "      <th>current_contract_expiration</th>\n",
       "      <th>current_contract_length</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Aaron Leya Iseka</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Forward</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>17</td>\n",
       "      <td>Belgium</td>\n",
       "      <td>3757</td>\n",
       "      <td>195415</td>\n",
       "      <td>208123</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Alexander Büttner</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Defender</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>26</td>\n",
       "      <td>Netherlands</td>\n",
       "      <td>18928</td>\n",
       "      <td>984279</td>\n",
       "      <td>1048291</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Andy Kawaya</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Forward</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>18</td>\n",
       "      <td>Belgium</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Andy Nájar</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Defender</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>22</td>\n",
       "      <td>Honduras</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Anthony Vanden Borre</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Defender</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>27</td>\n",
       "      <td>Belgium</td>\n",
       "      <td>8676</td>\n",
       "      <td>451165</td>\n",
       "      <td>480506</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Bram Nuytinck</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Defender</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>25</td>\n",
       "      <td>Netherlands</td>\n",
       "      <td>8676</td>\n",
       "      <td>451165</td>\n",
       "      <td>480506</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Davy Roef</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Goalkeeper</td>\n",
       "      <td>Goalkeeper</td>\n",
       "      <td>21</td>\n",
       "      <td>Belgium</td>\n",
       "      <td>2892</td>\n",
       "      <td>150388</td>\n",
       "      <td>160169</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Dennis Praet</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Midfielder</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>21</td>\n",
       "      <td>Belgium</td>\n",
       "      <td>13888</td>\n",
       "      <td>722225</td>\n",
       "      <td>769194</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Dodi Lukebakio</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Forward</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>17</td>\n",
       "      <td>Belgium</td>\n",
       "      <td>1159</td>\n",
       "      <td>60335</td>\n",
       "      <td>64259</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Fabrice N'Sakala</td>\n",
       "      <td>2015-2016</td>\n",
       "      <td>Belgian First Division A</td>\n",
       "      <td>Anderlecht</td>\n",
       "      <td>Defender</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>24</td>\n",
       "      <td>Democratic Republic of the Congo</td>\n",
       "      <td>7238</td>\n",
       "      <td>376421</td>\n",
       "      <td>400901</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 player     season                    league        team  \\\n",
       "0      Aaron Leya Iseka  2015-2016  Belgian First Division A  Anderlecht   \n",
       "1     Alexander Büttner  2015-2016  Belgian First Division A  Anderlecht   \n",
       "2           Andy Kawaya  2015-2016  Belgian First Division A  Anderlecht   \n",
       "3            Andy Nájar  2015-2016  Belgian First Division A  Anderlecht   \n",
       "4  Anthony Vanden Borre  2015-2016  Belgian First Division A  Anderlecht   \n",
       "5         Bram Nuytinck  2015-2016  Belgian First Division A  Anderlecht   \n",
       "6             Davy Roef  2015-2016  Belgian First Division A  Anderlecht   \n",
       "7          Dennis Praet  2015-2016  Belgian First Division A  Anderlecht   \n",
       "8        Dodi Lukebakio  2015-2016  Belgian First Division A  Anderlecht   \n",
       "9      Fabrice N'Sakala  2015-2016  Belgian First Division A  Anderlecht   \n",
       "\n",
       "     position outfielder_goalkeeper age                           country  \\\n",
       "0     Forward            Outfielder  17                           Belgium   \n",
       "1    Defender            Outfielder  26                       Netherlands   \n",
       "2     Forward            Outfielder  18                           Belgium   \n",
       "3    Defender            Outfielder  22                          Honduras   \n",
       "4    Defender            Outfielder  27                           Belgium   \n",
       "5    Defender            Outfielder  25                       Netherlands   \n",
       "6  Goalkeeper            Goalkeeper  21                           Belgium   \n",
       "7  Midfielder            Outfielder  21                           Belgium   \n",
       "8     Forward            Outfielder  17                           Belgium   \n",
       "9    Defender            Outfielder  24  Democratic Republic of the Congo   \n",
       "\n",
       "  weekly_gross_base_salary_gbp annual_gross_base_salary_gbp  \\\n",
       "0                         3757                       195415   \n",
       "1                        18928                       984279   \n",
       "2                            0                            0   \n",
       "3                            0                            0   \n",
       "4                         8676                       451165   \n",
       "5                         8676                       451165   \n",
       "6                         2892                       150388   \n",
       "7                        13888                       722225   \n",
       "8                         1159                        60335   \n",
       "9                         7238                       376421   \n",
       "\n",
       "  adj_current_gross_base_salary_gbp estimated_gross_total_gbp  \\\n",
       "0                            208123                       NaN   \n",
       "1                           1048291                       NaN   \n",
       "2                                 0                       NaN   \n",
       "3                                 0                       NaN   \n",
       "4                            480506                       NaN   \n",
       "5                            480506                       NaN   \n",
       "6                            160169                       NaN   \n",
       "7                            769194                       NaN   \n",
       "8                             64259                       NaN   \n",
       "9                            400901                       NaN   \n",
       "\n",
       "  current_contract_status current_contract_expiration current_contract_length  \n",
       "0                     nan                         NaN                     NaN  \n",
       "1                     nan                         NaN                     NaN  \n",
       "2                     nan                         NaN                     NaN  \n",
       "3                     nan                         NaN                     NaN  \n",
       "4                     nan                         NaN                     NaN  \n",
       "5                     nan                         NaN                     NaN  \n",
       "6                     nan                         NaN                     NaN  \n",
       "7                     nan                         NaN                     NaN  \n",
       "8                     nan                         NaN                     NaN  \n",
       "9                     nan                         NaN                     NaN  "
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## Separate Goalkeeper and Outfielders\n",
    "df_capology['Outfielder Goalkeeper'] = np.where(df_capology['Pos.'].isnull(), np.nan, (np.where(df_capology['Pos.'] == 'Goalkeeper', 'Goalkeeper', 'Outfielder')))\n",
    "\n",
    "\n",
    "## Define columns\n",
    "cols = ['Player',\n",
    "        'Season',\n",
    "        'League',\n",
    "        'Team',\n",
    "        'Pos.',\n",
    "        'Outfielder Goalkeeper',\n",
    "        'Age',\n",
    "        'Country',   \n",
    "        'Weekly Gross Base Salary GBP',\n",
    "        'Annual Gross Base Salary GBP',\n",
    "        'Adj. Gross Base Salary for Current Season GBP',\n",
    "        'Estimated Gross Total GBP',\n",
    "        'Status',\n",
    "        'Expiration',\n",
    "        'Length'\n",
    "       ]\n",
    "\n",
    "## Select columns of interest\n",
    "df_capology_select = df_capology[cols]\n",
    "\n",
    "## Sort by 'mins_total' decending\n",
    "df_capology_select = df_capology_select.sort_values(['League', 'Season', 'Team', 'Player'], ascending=[True, True, True, True])\n",
    "\n",
    "## Drop index\n",
    "df_capology_select = df_capology_select.reset_index(drop=True)\n",
    "\n",
    "## Rename columns\n",
    "df_capology_select = (df_capology_select\n",
    "                             .rename(columns={'Player': 'player',\n",
    "                                              'Season': 'season',\n",
    "                                              'League': 'league',\n",
    "                                              'Team': 'team',\n",
    "                                              'Pos.': 'position',\n",
    "                                              'Outfielder Goalkeeper': 'outfielder_goalkeeper',\n",
    "                                              'Age': 'age',\n",
    "                                              'Country': 'country',\n",
    "                                              'Weekly Gross Base Salary GBP': 'weekly_gross_base_salary_gbp',\n",
    "                                              'Annual Gross Base Salary GBP': 'annual_gross_base_salary_gbp',\n",
    "                                              'Adj. Gross Base Salary for Current Season GBP': 'adj_current_gross_base_salary_gbp',\n",
    "                                              'Estimated Gross Total GBP': 'estimated_gross_total_gbp',\n",
    "                                              'Status': 'current_contract_status',\n",
    "                                              'Expiration': 'current_contract_expiration',\n",
    "                                              'Length': 'current_contract_length',\n",
    "                                             }\n",
    "                                    )\n",
    "                        )\n",
    "\n",
    "## \n",
    "df_capology_select.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "internal-comparative",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Still to engineer\n",
    "# - 'current_contract_status', 'current_contract_expiration', and 'current_contract_length' are blank unless it's a 2021 \n",
    "#   row. The 2021 data can be joined back onto the previous years. May however need to scrape more of the data to\n",
    "#   get contract information of players no longer in same leage (i.e. relegation, move abroad)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "presidential-suffering",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Unnamed: 0.1</th>\n",
       "      <th>Player</th>\n",
       "      <th>Weekly GrossBase Salary(IN EUR)</th>\n",
       "      <th>Annual GrossBase Salary(IN EUR)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN EUR)</th>\n",
       "      <th>Pos.</th>\n",
       "      <th>Age</th>\n",
       "      <th>Country</th>\n",
       "      <th>Team</th>\n",
       "      <th>League</th>\n",
       "      <th>Season</th>\n",
       "      <th>Status</th>\n",
       "      <th>Expiration</th>\n",
       "      <th>Length</th>\n",
       "      <th>EstimatedGross Total(IN EUR)</th>\n",
       "      <th>Unnamed: 2</th>\n",
       "      <th>Weekly GrossBase Salary(IN GBP)</th>\n",
       "      <th>Annual GrossBase Salary(IN GBP)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN GBP)</th>\n",
       "      <th>EstimatedGross Total(IN GBP)</th>\n",
       "      <th>Weekly GrossBase Salary(IN USD)</th>\n",
       "      <th>Annual GrossBase Salary(IN USD)</th>\n",
       "      <th>Adj. GrossBase Salary(2021, IN USD)</th>\n",
       "      <th>RosterStatus</th>\n",
       "      <th>EstimatedGross Total(IN USD)</th>\n",
       "      <th>Currency</th>\n",
       "      <th>Exchange Rate</th>\n",
       "      <th>Estimated Gross Total Original</th>\n",
       "      <th>Estimated Gross Total GBP</th>\n",
       "      <th>Weekly Gross Base Salary Original</th>\n",
       "      <th>Weekly Gross Base Salary GBP</th>\n",
       "      <th>Annual Gross Base Salary Original</th>\n",
       "      <th>Annual Gross Base Salary GBP</th>\n",
       "      <th>Adj. Gross Base Salary for Current Season Original</th>\n",
       "      <th>Adj. Gross Base Salary for Current Season GBP</th>\n",
       "      <th>Outfielder Goalkeeper</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>9953</th>\n",
       "      <td>15</td>\n",
       "      <td>15.0</td>\n",
       "      <td>Albian Ajeti</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Forward</td>\n",
       "      <td>22</td>\n",
       "      <td>Switzerland</td>\n",
       "      <td>West Ham</td>\n",
       "      <td>Premier League</td>\n",
       "      <td>2019-2020</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>50000.0</td>\n",
       "      <td>2600000.0</td>\n",
       "      <td>2600000.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>GBP</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>50000.0</td>\n",
       "      <td>50000</td>\n",
       "      <td>2600000.0</td>\n",
       "      <td>2600000</td>\n",
       "      <td>2600000.0</td>\n",
       "      <td>2600000</td>\n",
       "      <td>Outfielder</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21335</th>\n",
       "      <td>35</td>\n",
       "      <td>35.0</td>\n",
       "      <td>Albian Ajeti</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>Forward</td>\n",
       "      <td>19</td>\n",
       "      <td>Switzerland</td>\n",
       "      <td>Augsburg</td>\n",
       "      <td>Bundesliga</td>\n",
       "      <td>2016-2017</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>EUR</td>\n",
       "      <td>0.90053</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>Outfielder</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Unnamed: 0  Unnamed: 0.1        Player  \\\n",
       "9953           15          15.0  Albian Ajeti   \n",
       "21335          35          35.0  Albian Ajeti   \n",
       "\n",
       "       Weekly GrossBase Salary(IN EUR)  Annual GrossBase Salary(IN EUR)  \\\n",
       "9953                               NaN                              NaN   \n",
       "21335                              0.0                              0.0   \n",
       "\n",
       "       Adj. GrossBase Salary(2021, IN EUR)     Pos. Age      Country  \\\n",
       "9953                                   NaN  Forward  22  Switzerland   \n",
       "21335                                  0.0  Forward  19  Switzerland   \n",
       "\n",
       "           Team          League     Season Status Expiration Length  \\\n",
       "9953   West Ham  Premier League  2019-2020    nan        NaN    NaN   \n",
       "21335  Augsburg      Bundesliga  2016-2017    nan        NaN    NaN   \n",
       "\n",
       "       EstimatedGross Total(IN EUR)  Unnamed: 2  \\\n",
       "9953                            NaN         NaN   \n",
       "21335                           NaN         NaN   \n",
       "\n",
       "       Weekly GrossBase Salary(IN GBP)  Annual GrossBase Salary(IN GBP)  \\\n",
       "9953                           50000.0                        2600000.0   \n",
       "21335                              NaN                              NaN   \n",
       "\n",
       "       Adj. GrossBase Salary(2021, IN GBP)  EstimatedGross Total(IN GBP)  \\\n",
       "9953                             2600000.0                           NaN   \n",
       "21335                                  NaN                           NaN   \n",
       "\n",
       "       Weekly GrossBase Salary(IN USD)  Annual GrossBase Salary(IN USD)  \\\n",
       "9953                               NaN                              NaN   \n",
       "21335                              NaN                              NaN   \n",
       "\n",
       "       Adj. GrossBase Salary(2021, IN USD) RosterStatus  \\\n",
       "9953                                   NaN          NaN   \n",
       "21335                                  NaN          NaN   \n",
       "\n",
       "       EstimatedGross Total(IN USD) Currency  Exchange Rate  \\\n",
       "9953                            NaN      GBP        1.00000   \n",
       "21335                           NaN      EUR        0.90053   \n",
       "\n",
       "       Estimated Gross Total Original Estimated Gross Total GBP  \\\n",
       "9953                              NaN                       NaN   \n",
       "21335                             NaN                       NaN   \n",
       "\n",
       "       Weekly Gross Base Salary Original Weekly Gross Base Salary GBP  \\\n",
       "9953                             50000.0                        50000   \n",
       "21335                                0.0                            0   \n",
       "\n",
       "       Annual Gross Base Salary Original Annual Gross Base Salary GBP  \\\n",
       "9953                           2600000.0                      2600000   \n",
       "21335                                0.0                            0   \n",
       "\n",
       "       Adj. Gross Base Salary for Current Season Original  \\\n",
       "9953                                           2600000.0    \n",
       "21335                                                0.0    \n",
       "\n",
       "      Adj. Gross Base Salary for Current Season GBP Outfielder Goalkeeper  \n",
       "9953                                        2600000            Outfielder  \n",
       "21335                                             0            Outfielder  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_capology.loc[df_capology['Player'] == 'Albian Ajeti']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "caring-sister",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>player</th>\n",
       "      <th>season</th>\n",
       "      <th>league</th>\n",
       "      <th>team</th>\n",
       "      <th>position</th>\n",
       "      <th>outfielder_goalkeeper</th>\n",
       "      <th>age</th>\n",
       "      <th>country</th>\n",
       "      <th>weekly_gross_base_salary_gbp</th>\n",
       "      <th>annual_gross_base_salary_gbp</th>\n",
       "      <th>adj_current_gross_base_salary_gbp</th>\n",
       "      <th>estimated_gross_total_gbp</th>\n",
       "      <th>current_contract_status</th>\n",
       "      <th>current_contract_expiration</th>\n",
       "      <th>current_contract_length</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3877</th>\n",
       "      <td>Albian Ajeti</td>\n",
       "      <td>2016-2017</td>\n",
       "      <td>Bundesliga</td>\n",
       "      <td>Augsburg</td>\n",
       "      <td>Forward</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>19</td>\n",
       "      <td>Switzerland</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19172</th>\n",
       "      <td>Albian Ajeti</td>\n",
       "      <td>2019-2020</td>\n",
       "      <td>Premier League</td>\n",
       "      <td>West Ham</td>\n",
       "      <td>Forward</td>\n",
       "      <td>Outfielder</td>\n",
       "      <td>22</td>\n",
       "      <td>Switzerland</td>\n",
       "      <td>50000</td>\n",
       "      <td>2600000</td>\n",
       "      <td>2600000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             player     season          league      team position  \\\n",
       "3877   Albian Ajeti  2016-2017      Bundesliga  Augsburg  Forward   \n",
       "19172  Albian Ajeti  2019-2020  Premier League  West Ham  Forward   \n",
       "\n",
       "      outfielder_goalkeeper age      country weekly_gross_base_salary_gbp  \\\n",
       "3877             Outfielder  19  Switzerland                            0   \n",
       "19172            Outfielder  22  Switzerland                        50000   \n",
       "\n",
       "      annual_gross_base_salary_gbp adj_current_gross_base_salary_gbp  \\\n",
       "3877                             0                                 0   \n",
       "19172                      2600000                           2600000   \n",
       "\n",
       "      estimated_gross_total_gbp current_contract_status  \\\n",
       "3877                        NaN                     nan   \n",
       "19172                       NaN                     nan   \n",
       "\n",
       "      current_contract_expiration current_contract_length  \n",
       "3877                          NaN                     NaN  \n",
       "19172                         NaN                     NaN  "
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_capology_select.loc[df_capology_select['player'] == 'Albian Ajeti']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "wrong-reset",
   "metadata": {},
   "source": [
    "### <a id='#section4.3'>4.3. Create Wide Dataset\n",
    "1 row per player"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "romantic-battle",
   "metadata": {},
   "outputs": [],
   "source": [
    "# CODE HERE"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "affecting-brunswick",
   "metadata": {},
   "source": [
    "### <a id='#section4.4'>4.4. Filter Players in 'Big 5' European Leagues\n",
    "Create a separate DataFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "invalid-sunset",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['Belgian First Division A', 'Bundesliga', 'La Liga', 'Ligue 1',\n",
       "       'Mls', 'Premier League', 'Serie A'], dtype=object)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_capology_select['league'].unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "entire-arbitration",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Filter plays in the Big 5 European Leagues\n",
    "\n",
    "## Define list of countries\n",
    "lst_big5_countries = ['Bundesliga', 'Ligue 1', 'Premier League', 'Serie A', 'La Liga', 'Mls']\n",
    "\n",
    "## Filter list of Big 5 European League countries from DataFrame\n",
    "df_capology_big5_mls_select = df_capology_select[df_capology_select['league'].isin(lst_big5_countries)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "bridal-postage",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(21281, 15)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_capology_big5_mls_select.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "functional-petroleum",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "<a id='section5'></a>\n",
    "\n",
    "## <a id='#section5'>5. Export Datasets</a>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "optional-lincoln",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Export DataFrames\n",
    "\n",
    "## All teams\n",
    "df_capology_select.to_csv(data_dir_capology + f'/engineered/archive/capology_all_1617_2122_last_updated_{today}.csv', index=None, header=True)\n",
    "df_capology_select.to_csv(data_dir_capology + '/engineered/capology_all_latest.csv', index=None, header=True)\n",
    "\n",
    "## Teams from the 'Big 5' European leagues and MLS\n",
    "df_capology_big5_mls_select.to_csv(data_dir_capology + f'/engineered/archive/capology_big5_mls_1617_2122_last_updated_{today}.csv', index=None, header=True)\n",
    "df_capology_big5_mls_select.to_csv(data_dir_capology + '/engineered/capology_big5_mls_latest.csv', index=None, header=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "alike-milan",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "<a id='section6'></a>\n",
    "\n",
    "## <a id='#section6'>6. Summary</a>\n",
    "This notebook scrapes player statstics data from [Capology](https://www.capology.com/), using [pandas](http://pandas.pydata.org/) for data manipulation through DataFrames."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "chemical-criticism",
   "metadata": {},
   "source": [
    "___\n",
    "\n",
    "<a id='section7'></a>\n",
    "\n",
    "## <a id='#section7'>7. Next Steps</a>\n",
    "This engineered data is now ready to be analysed and joined to further engineered and joined to disparate datasets such as data from FBref and TransferMarkt."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "skilled-circle",
   "metadata": {},
   "source": [
    "___\n",
    "\n",
    "<a id='section8'></a>\n",
    "\n",
    "## <a id='#section8'>8. References</a>\n",
    "\n",
    "#### Data and Web Scraping\n",
    "*    \n",
    "*    \n",
    "*    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "pointed-california",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "***Visit my website [eddwebster.com](https://www.eddwebster.com) or my [GitHub Repository](https://github.com/eddwebster) for more projects. If you'd like to get in contact, my Twitter handle is [@eddwebster](http://www.twitter.com/eddwebster) and my email is: edd.j.webster@gmail.com.***"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "exceptional-innocent",
   "metadata": {},
   "source": [
    "[Back to the top](#top)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}