{ "cells": [ { "cell_type": "markdown", "id": "pleasant-causing", "metadata": {}, "source": [ "" ] }, { "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
\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", "\n", "\n", "## Introduction\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", "\n", "\n", "## Notebook Contents\n", "1. [Notebook Dependencies](#section1)
\n", "2. [Project Brief](#section2)
\n", "3. [Data Sources](#section3)
\n", "4. [Data Engineering](#section4)
\n", "5. [Export Data](#section5)
\n", "6. [Summary](#section6)
\n", "7. [Next Steps](#section7)
\n", "8. [Bibliography](#section8)
" ] }, { "cell_type": "markdown", "id": "determined-alpha", "metadata": {}, "source": [ "___\n", "\n", "\n", "\n", "## 1. Notebook Dependencies\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", "\n", "\n", "## 2. Project Brief" ] }, { "cell_type": "markdown", "id": "split-computer", "metadata": {}, "source": [ "### 2.1. About this notebook\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**:
\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", "\n", "\n", "## 3. Data Sources" ] }, { "cell_type": "markdown", "id": "elementary-occasions", "metadata": {}, "source": [ "### 3.1. Introduction\n", "..." ] }, { "cell_type": "markdown", "id": "sound-interstate", "metadata": {}, "source": [ "### 3.2. Data Dictionary\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", "
\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": [ "### 3.3. Read in CSV as pandas DataFrame\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": [ "### 3.4. Initial Data Handling" ] }, { "cell_type": "markdown", "id": "prompt-combat", "metadata": {}, "source": [ "#### 3.4.1. Summary Report\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": [ "#### 3.3.2. Further Inspection\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0Unnamed: 0.1PlayerWeekly GrossBase Salary(IN EUR)Annual GrossBase Salary(IN EUR)Adj. GrossBase Salary(2021, IN EUR)Pos.AgeCountryTeamLeagueSeasonStatusExpirationLengthEstimatedGross Total(IN EUR)Unnamed: 2Weekly GrossBase Salary(IN GBP)Annual GrossBase Salary(IN GBP)Adj. GrossBase Salary(2021, IN GBP)EstimatedGross Total(IN GBP)Weekly GrossBase Salary(IN USD)Annual GrossBase Salary(IN USD)Adj. GrossBase Salary(2021, IN USD)RosterStatusEstimatedGross Total(IN USD)
000.0Gonzalo Higuaín€ 338,327€ 17,593,000€ 17,568,773F30ArgentinaAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
111.0Gianluigi Donnarumma€ 213,673€ 11,111,000€ 11,095,699K19ItalyAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
222.0Lucas Biglia€ 124,635€ 6,481,000€ 6,472,075M32ArgentinaAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
333.0Alessio Romagnoli€ 124,635€ 6,481,000€ 6,472,075D23ItalyAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
444.0Tiemoué Bakayoko€ 124,635€ 6,481,000€ 6,472,075M23FranceAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0Unnamed: 0.1PlayerWeekly GrossBase Salary(IN EUR)Annual GrossBase Salary(IN EUR)Adj. GrossBase Salary(2021, IN EUR)Pos.AgeCountryTeamLeagueSeasonStatusExpirationLengthEstimatedGross Total(IN EUR)Unnamed: 2Weekly GrossBase Salary(IN GBP)Annual GrossBase Salary(IN GBP)Adj. GrossBase Salary(2021, IN GBP)EstimatedGross Total(IN GBP)Weekly GrossBase Salary(IN USD)Annual GrossBase Salary(IN USD)Adj. GrossBase Salary(2021, IN USD)RosterStatusEstimatedGross Total(IN USD)
251543535.0Pedro Martínez€ 0€ 0€ 0M21SpainVillarrealLa Liga2017-2018NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
251553636.0Chuca€ 0€ 0€ 0M20SpainVillarrealLa Liga2017-2018NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
251563737.0Cédric Bakambu€ 0€ 0€ 0F26Democratic Republic of CongoVillarrealLa Liga2017-2018NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
251573838.0Bruno Soriano€ 0€ 0€ 0M33SpainVillarrealLa Liga2017-2018NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
251583939.0Sergio Lozano€ 0€ 0€ 0M18SpainVillarrealLa Liga2017-2018NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "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": [ "\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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0Unnamed: 0.1StatusUnnamed: 2
count25159.00000018560.0000000.00.0
mean17.25283217.614709NaNNaN
std11.42204811.794968NaNNaN
min0.0000000.000000NaNNaN
25%8.0000008.000000NaNNaN
50%16.00000017.000000NaNNaN
75%25.00000025.000000NaNNaN
max84.00000084.000000NaNNaN
\n", "
" ], "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": [ "" ] }, "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+S4nM4UyPxtzb4XojTfeiCuvvNIOHw3OqFGj4qabborLLrusUb93C2UZrQ2RG+uZ1oW0X1ZICmXbr1D6bOzroUJTKO/bQumzUL5TsB6Cn6ZRh3ETJ06MAQMGxKhRoyIiGlQYR+PWmM9iKDSFMi8Loc85c+ZEs2bN8l3GMlEI85PGpXbH3Q4fDVVjf+8W0jLamM+0pvEqlG2/QunTeqhxKZT3bSH0WUjfKVgPwY/TaJeaW2+9NXr37h2jR4+ObbbZJt/lQB2NfQOkkBTKvCyEPgtlozmiMOYnjUtRUVGklBr9l/w0Xo39vVtIy6gvnmiICmXbr1D6tB5qXArlfVsIfRbSdwrWQ/DjNNol5/bbb48111wz/va3v0WfPn3yXQ4AAD9BYx3SBhoLyygAAMD3a7SHLg4dOjS22267KCkpiY8++ijf5QAAAAAAAFCAGm0Y17Vr13yXAAAAAAAAQIFrtGHc0tppp53yXULmysvLIyKirKwsr3VkTZ+NS6H0GVE4veqzcdFn46LPxqW8vDxKS0vzXQYAAACN2KBBg2LWrFlxzTXX5LuUeq3RXjMOAAAAAAAA8k0YBwAAAAAAABkRxgEAAAAAAEBGhHEAAAAAAACQEWEcAAAAAAAAZEQYBwAAAAAAABkRxgEAAAAAAEBGmuS7gGWhb9++0bdv33yXAQAAAAAAQIFxZhwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkpEm+C2DZKi0tjYqKinyXkbnKysp8lwBLrbS0NCKi0S+jls/Gx2cLkG+VlZVRVlaW7zIyVV5eHhGhz0aivLw8t+0HAAA0fs6MAwAAAAAAgIwI4wAAAAAAACAjwjgAAAAAAADIiDAOAAAAAAAAMiKMAwAAAAAAgIwI4wAAAAAAACAjwjgAAAAAAADIiDAOAAAAAAAAMtIk3wUAAAAAAACwbKWU4ssvv4x58+ZFTU1NpJSipqYmIqLO7wvefnfa9OnTo0kTUdPi+AsB1BOVlZUREVFWVpbXOrJWXl6e7xL4mVVWVnrfAnlVWloaFRUV+S5jmdAnAADwc/nnP/8Zw4cP/8mvs+WWW/4M1TRuwjgAAAAAAIAC89VXX0VExKBBg6KkpCSKi4ujqKiozm1ELHL6grfrrrtuPttoEIRxAAAAAAAABapXr1654I1s+OsCAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkJEm+S4AAAAAAACA/HjxxRejuLg4iouLo6ioqM5tRCxy+oK3v/nNb2KFFVbIcxf1mzCuwFRWVkZZWVm+y8hUeXl5vksAAAAAAIB6bcUVV4yIiHPOOecnvc7WW28dF1100c9RUqMljAMAAAAAACgwe+21V3Tq1CnmzZsXNTU1kVKKmpqaiIg6vy94+91pf/nLX2LGjBl57qT+E8YBAAAAAAAUmOLi4lh33XV/0mvcf//9MWvWrJ+posarON8FAAAAAAAAQGMljAMAAAAAAICMCOMAAAAAAAAgI8I4AAAAAAAAyIgwDgAAAAAAADIijAMAAAAAAICMCOMAAAAAAAAgI8I4AAAAAAAAyIgwDgAAAAAAADIijAMAAAAAAICMCOMAAAAAAAAgI8I4AAAAAAAAyIgwDgAAAAAAADIijAMAAAAAAICMCOMAAAAAAAAgI8I4AAAAAAAAyIgwDgAAAAAAADIijAMAAAAAAICMCOMAAAAAAAAgI8I4AAAAAAAAyIgwDgAAAAAAADIijAMAAAAAAICMNMl3AQAAAAAAACxbn3/+eTz66KMxb968SClFTU1NpJRy/2p//+7tgj9/8MEHscYaa+S7lXpPGFdgSktLo6KiIt9lZK6ysjLfJQAAAAAAQL315JNPxu233x4lJSVRXFwcxcXFUVRUlLtd8Ofi4vkDLX73Mc2aNYvNN988z53Uf8I4AAAAAACAAlNTUxMR80O52rCNbPjrAgAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaa5LsAlq3KysooKyvLdxmZKi8vj9LS0qioqMh3KZmrrKzMdwn8jEpLSyMiGv171/u28bHOBfKtULZxI0KfjUTtPgsAANQHxx57bBQVFUVxcXHuNiLq/F5UVLTQY2qn7bDDDtGrV688d1G/CeMAAAAAAAAKzHbbbRfjxo2L6urqqKmpiZRS7nbBnxe8jYg6v48fPz6mTZsmjFsMYRwAAAAAAECB2XDDDeO88877Sa8xaNCgmDVr1s9UUePlmnEAAAAAAACQEWEcAAAAAAAAZEQYBwAAAAAAABkRxgEAAAAAAEBGmuS7AAAAAAAAAJatlFJMmDAh5s2bFymlqKmpiZRS7l/t79+9XfDnb775Jpo1a5bvVuo9YVyBKS0tjYqKinyXkbnKysooKyvLdxmZKi8vz3cJ/MwqKysjIrx3aXCsc4F8K5Rt3IjQJwAA8LN54IEH4qqrrvrJr7PVVlv9DNU0bsI4AAAAAACAAjNt2rSIiBgyZEiUlJREcXFxFBUV5W4X/Lm4eP5Vzxb1mLXXXjufbTQIwjgAAAAAAIACtdNOO+XCNrLhrwsAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGSkSb4LYNmqrKyMsrKyfJeRqfLy8nyXsMyUlpZGRUVFvstYJgqlz4jG32tlZWW+SwAAYBkppH1QfTYO5eXlUVpamu8yAGCZKCkpiYiI3/72t1FUVBTFxcUL3UbEIqcvePvb3/42jjzyyHy2Uu8J4wAAAAAAAApMz549o7q6OubNmxc1NTUREVFTUxMppYVuvzut9rGvvfZa/Pvf/85nGw2CMA4AAAAAAKDAtG7dOg499NCf9BqDBg2KWbNm/UwVNV6uGQcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZaZLvAli2SktLo6KiIt9lZK6ysjLfJQAUDJ8tQL5VVlZGWVlZvsvIVHl5eUREQfRZWlqa7zKA71FI232FsL6NCOtcAFhGnBkHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJARYRwAAAAAAABkRBgHAAAAAAAAGRHGAQAAAAAAQEaEcQAAAAAAAJCRJvkuAAAAAAAAgGXrs88+i4cffjjmzZsXKaWoqamJlFLuX+3v371d8Odx48bFr3/963y3Uu8J4wCAn6SysjLKysryXUamysvL810C8ANKS0ujoqIi32UsE4XSJ1A/Fcp2XyF9rgBQ2J566qm44447omnTplFSUhJFRUVRXFxc57b233en194uv/zysdVWW+W7lXpPGAcAAAAAAFBgampqIiLi8ccfj+JiVzXLkr8uAAAAAAAAZEQYBwAAAAAA8DOYM2dO7LHHHvHSSy/Vmf7xxx/HpptuGvPmzctTZeSTMA4AAAAAAOAnqqqqilNOOSXee++9OtMnTZoU/fv3j6qqqjxVRr4J4wAAAAAAAH6C999/P/bbb7/45JNP6kx/+umno2/fvtGsWbM8VUZ9IIwDAAAAAAD4Cd54443o0qVL3H333XWmv/DCC3HyySfH4MGD81TZolVXV8f48eMjIuLll1+O6urqPFfUuDXJdwEAAAAAAAAN2f7777/I6UOHDo2IiFdffXVZlvODqqur4/TTT4+33347IiKGDRsWG2+8cVxyySVRUlKS5+oaJ2EcAAAAAABAgXjttdfi3XffjXnz5kVExKxZs+Ktt96KU089NVq3bh1FRUVRXFwcRUVFuX+1v3/3tqioKLbeeuvYYost8txV/SaMKzCVlZVRVlaW7zIyVV5enu8SAAAAAACgXnrvvfdi9uzZdaZVV1fHBx98EF988UWklCKlFDU1NYu8XfDn2bNnx7vvviuMWwxhHAAAAAAAQIHYcMMNo3nz5jFr1qzctObNm8dZZ50V22677VK91qBBg+q8DotWnO8CAAAAAAAAWDY6d+4cG2+8cTRv3jyKioqiefPm0b59++jcuXO+S2u0nBkHAAAAAABQIEpKSuKSSy6J1157Ld5///3YYIMNonPnzlFSUpLv0hotYRwAAAAAAEABKSkpiW233Xaph6XkxxHGAQAAAAAA/EzGjBmz0LStt956kdMpDK4ZBwAAAAAAABkRxgEAAAAAAEBGhHEAAAAAAACQEWEcAAAAAAAAZEQYBwAAAAAAABkRxgEAAAAAAEBGhHEAAAAAAACQEWEcAAAAAAAAZEQYBwAAAAAAABkRxgEAAAAAAEBGhHEAAAAAAACQEWEcAAAAAAAAZEQYBwAAAAAAABkRxgEAAAAAAEBGhHEAAAAAAACQEWEcAAAAAAAAZEQYBwAAAAAAABlpku8CgB+vsrIyysrK8l1GpsrLyyMiGn2fEYXTa22fAAA0fqWlpVFRUZHvMpYJfQIA8H2cGQcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZaZLvAoAfr7S0NCoqKvJdxjJRKH1GNP5eKysr810CAAAAEbHTTjvlu4RMlZeXR0REWVlZXuvIWqH1WVpamtc6AH4MZ8YBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGREGAcAAAAAAAAZEcYBAAAAAABARoRxAAAAAAAAkBFhHAAAAAAAAGSkSb4LAAAAAAAAoGGaMmVK3H///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": [ "
" ] }, "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", "## 4. Data Engineering\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": [ "### 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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0Unnamed: 0.1PlayerWeekly GrossBase Salary(IN EUR)Annual GrossBase Salary(IN EUR)Adj. GrossBase Salary(2021, IN EUR)Pos.AgeCountryTeamLeagueSeasonStatusExpirationLengthEstimatedGross Total(IN EUR)Unnamed: 2Weekly GrossBase Salary(IN GBP)Annual GrossBase Salary(IN GBP)Adj. GrossBase Salary(2021, IN GBP)EstimatedGross Total(IN GBP)Weekly GrossBase Salary(IN USD)Annual GrossBase Salary(IN USD)Adj. GrossBase Salary(2021, IN USD)RosterStatusEstimatedGross Total(IN USD)
000.0Gonzalo Higuaín€ 338,327€ 17,593,000€ 17,568,773F30ArgentinaAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
111.0Gianluigi Donnarumma€ 213,673€ 11,111,000€ 11,095,699K19ItalyAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
222.0Lucas Biglia€ 124,635€ 6,481,000€ 6,472,075M32ArgentinaAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
333.0Alessio Romagnoli€ 124,635€ 6,481,000€ 6,472,075D23ItalyAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
444.0Tiemoué Bakayoko€ 124,635€ 6,481,000€ 6,472,075M23FranceAc MilanSerie A2018-2019NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", "
" ], "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": [ "###
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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
playerseasonleagueteampositionoutfielder_goalkeeperagecountryweekly_gross_base_salary_gbpannual_gross_base_salary_gbpadj_current_gross_base_salary_gbpestimated_gross_total_gbpcurrent_contract_statuscurrent_contract_expirationcurrent_contract_length
0Aaron Leya Iseka2015-2016Belgian First Division AAnderlechtForwardOutfielder17Belgium3757195415208123NaNnanNaNNaN
1Alexander Büttner2015-2016Belgian First Division AAnderlechtDefenderOutfielder26Netherlands189289842791048291NaNnanNaNNaN
2Andy Kawaya2015-2016Belgian First Division AAnderlechtForwardOutfielder18Belgium000NaNnanNaNNaN
3Andy Nájar2015-2016Belgian First Division AAnderlechtDefenderOutfielder22Honduras000NaNnanNaNNaN
4Anthony Vanden Borre2015-2016Belgian First Division AAnderlechtDefenderOutfielder27Belgium8676451165480506NaNnanNaNNaN
5Bram Nuytinck2015-2016Belgian First Division AAnderlechtDefenderOutfielder25Netherlands8676451165480506NaNnanNaNNaN
6Davy Roef2015-2016Belgian First Division AAnderlechtGoalkeeperGoalkeeper21Belgium2892150388160169NaNnanNaNNaN
7Dennis Praet2015-2016Belgian First Division AAnderlechtMidfielderOutfielder21Belgium13888722225769194NaNnanNaNNaN
8Dodi Lukebakio2015-2016Belgian First Division AAnderlechtForwardOutfielder17Belgium11596033564259NaNnanNaNNaN
9Fabrice N'Sakala2015-2016Belgian First Division AAnderlechtDefenderOutfielder24Democratic Republic of the Congo7238376421400901NaNnanNaNNaN
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0Unnamed: 0.1PlayerWeekly GrossBase Salary(IN EUR)Annual GrossBase Salary(IN EUR)Adj. GrossBase Salary(2021, IN EUR)Pos.AgeCountryTeamLeagueSeasonStatusExpirationLengthEstimatedGross Total(IN EUR)Unnamed: 2Weekly GrossBase Salary(IN GBP)Annual GrossBase Salary(IN GBP)Adj. GrossBase Salary(2021, IN GBP)EstimatedGross Total(IN GBP)Weekly GrossBase Salary(IN USD)Annual GrossBase Salary(IN USD)Adj. GrossBase Salary(2021, IN USD)RosterStatusEstimatedGross Total(IN USD)CurrencyExchange RateEstimated Gross Total OriginalEstimated Gross Total GBPWeekly Gross Base Salary OriginalWeekly Gross Base Salary GBPAnnual Gross Base Salary OriginalAnnual Gross Base Salary GBPAdj. Gross Base Salary for Current Season OriginalAdj. Gross Base Salary for Current Season GBPOutfielder Goalkeeper
99531515.0Albian AjetiNaNNaNNaNForward22SwitzerlandWest HamPremier League2019-2020nanNaNNaNNaNNaN50000.02600000.02600000.0NaNNaNNaNNaNNaNNaNGBP1.00000NaNNaN50000.0500002600000.026000002600000.02600000Outfielder
213353535.0Albian Ajeti0.00.00.0Forward19SwitzerlandAugsburgBundesliga2016-2017nanNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNEUR0.90053NaNNaN0.000.000.00Outfielder
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
playerseasonleagueteampositionoutfielder_goalkeeperagecountryweekly_gross_base_salary_gbpannual_gross_base_salary_gbpadj_current_gross_base_salary_gbpestimated_gross_total_gbpcurrent_contract_statuscurrent_contract_expirationcurrent_contract_length
3877Albian Ajeti2016-2017BundesligaAugsburgForwardOutfielder19Switzerland000NaNnanNaNNaN
19172Albian Ajeti2019-2020Premier LeagueWest HamForwardOutfielder22Switzerland5000026000002600000NaNnanNaNNaN
\n", "
" ], "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": [ "###
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": [ "### 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", "\n", "\n", "## 5. Export Datasets" ] }, { "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", "\n", "\n", "## 6. Summary\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", "\n", "\n", "## 7. Next Steps\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", "\n", "\n", "## 8. References\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 }