{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 5011 entries, 0 to 5010\n",
      "Data columns (total 19 columns):\n",
      "Date                   5011 non-null object\n",
      "PlayerID               5011 non-null int64\n",
      "Fatigue                5011 non-null int64\n",
      "Soreness               5011 non-null int64\n",
      "Desire                 5011 non-null int64\n",
      "Irritability           5011 non-null int64\n",
      "BedTime                5011 non-null object\n",
      "WakeTime               5011 non-null object\n",
      "SleepHours             5011 non-null float64\n",
      "SleepQuality           5011 non-null int64\n",
      "MonitoringScore        5011 non-null int64\n",
      "Pain                   5011 non-null object\n",
      "Illness                5011 non-null object\n",
      "Menstruation           4995 non-null object\n",
      "Nutrition              4174 non-null object\n",
      "NutritionAdjustment    4266 non-null object\n",
      "USGMeasurement         4843 non-null object\n",
      "USG                    629 non-null float64\n",
      "TrainingReadiness      5011 non-null object\n",
      "dtypes: float64(2), int64(7), object(10)\n",
      "memory usage: 743.9+ KB\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "from factor_analyzer import FactorAnalyzer\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "dfWell = pd.read_csv('https://www.dropbox.com/s/170bc3dimgn8ru8/wellness.csv?dl=1')\n",
    "dfWell.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>PlayerID</th>\n",
       "      <th>Fatigue</th>\n",
       "      <th>Soreness</th>\n",
       "      <th>Desire</th>\n",
       "      <th>Irritability</th>\n",
       "      <th>BedTime</th>\n",
       "      <th>WakeTime</th>\n",
       "      <th>SleepHours</th>\n",
       "      <th>SleepQuality</th>\n",
       "      <th>MonitoringScore</th>\n",
       "      <th>Pain</th>\n",
       "      <th>Illness</th>\n",
       "      <th>Menstruation</th>\n",
       "      <th>Nutrition</th>\n",
       "      <th>NutritionAdjustment</th>\n",
       "      <th>USGMeasurement</th>\n",
       "      <th>USG</th>\n",
       "      <th>TrainingReadiness</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>23:00:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>8.00</td>\n",
       "      <td>2</td>\n",
       "      <td>13</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Excellent</td>\n",
       "      <td>Yes</td>\n",
       "      <td>No</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>23:00:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>8.00</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>Yes</td>\n",
       "      <td>No</td>\n",
       "      <td>Yes</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Yes</td>\n",
       "      <td>1.010</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>22:30:00</td>\n",
       "      <td>06:30:00</td>\n",
       "      <td>8.00</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Yes</td>\n",
       "      <td>1.016</td>\n",
       "      <td>100%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>00:30:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>6.50</td>\n",
       "      <td>1</td>\n",
       "      <td>15</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Excellent</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Yes</td>\n",
       "      <td>1.025</td>\n",
       "      <td>95%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>23:45:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>7.25</td>\n",
       "      <td>4</td>\n",
       "      <td>20</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>Okay</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Yes</td>\n",
       "      <td>1.022</td>\n",
       "      <td>100%</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Date  PlayerID  Fatigue  Soreness  Desire  Irritability   BedTime  \\\n",
       "0  2018-07-21         1        3         3       2             3  23:00:00   \n",
       "1  2018-07-21         2        4         3       4             4  23:00:00   \n",
       "2  2018-07-21         3        3         3       5             4  22:30:00   \n",
       "3  2018-07-21         4        2         3       5             4  00:30:00   \n",
       "4  2018-07-21         5        5         3       4             4  23:45:00   \n",
       "\n",
       "   WakeTime  SleepHours  SleepQuality  MonitoringScore Pain Illness  \\\n",
       "0  07:00:00        8.00             2               13   No      No   \n",
       "1  07:00:00        8.00             4               19  Yes      No   \n",
       "2  06:30:00        8.00             4               19   No      No   \n",
       "3  07:00:00        6.50             1               15   No      No   \n",
       "4  07:00:00        7.25             4               20   No      No   \n",
       "\n",
       "  Menstruation  Nutrition NutritionAdjustment USGMeasurement    USG  \\\n",
       "0          Yes  Excellent                 Yes             No    NaN   \n",
       "1          Yes        NaN                 NaN            Yes  1.010   \n",
       "2           No        NaN                 NaN            Yes  1.016   \n",
       "3          Yes  Excellent                 Yes            Yes  1.025   \n",
       "4           No       Okay                 Yes            Yes  1.022   \n",
       "\n",
       "  TrainingReadiness  \n",
       "0                0%  \n",
       "1                0%  \n",
       "2              100%  \n",
       "3               95%  \n",
       "4              100%  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "No     4285\n",
       "Yes     710\n",
       "Name: Menstruation, dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.Menstruation.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Excellent    2713\n",
       "Okay         1398\n",
       "Poor           63\n",
       "Name: Nutrition, dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.Nutrition.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Yes             3727\n",
       "No               439\n",
       "I Don't Know     100\n",
       "Name: NutritionAdjustment, dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.NutritionAdjustment.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 5011 entries, 0 to 5010\n",
      "Data columns (total 19 columns):\n",
      "Date                   5011 non-null object\n",
      "PlayerID               5011 non-null int64\n",
      "Fatigue                5011 non-null int64\n",
      "Soreness               5011 non-null int64\n",
      "Desire                 5011 non-null int64\n",
      "Irritability           5011 non-null int64\n",
      "BedTime                5011 non-null object\n",
      "WakeTime               5011 non-null object\n",
      "SleepHours             5011 non-null float64\n",
      "SleepQuality           5011 non-null int64\n",
      "MonitoringScore        5011 non-null int64\n",
      "Pain                   5011 non-null object\n",
      "Illness                5011 non-null object\n",
      "Menstruation           5011 non-null object\n",
      "Nutrition              5011 non-null object\n",
      "NutritionAdjustment    5011 non-null object\n",
      "USGMeasurement         4843 non-null object\n",
      "USG                    629 non-null float64\n",
      "TrainingReadiness      5011 non-null object\n",
      "dtypes: float64(2), int64(7), object(10)\n",
      "memory usage: 743.9+ KB\n"
     ]
    }
   ],
   "source": [
    "# As Menstruation, Nutrition and Nutrition Adjustment are categorical, fill NA with their Modes\n",
    "dfWell.Menstruation.fillna(dfWell.Menstruation.mode()[0],inplace=True)\n",
    "dfWell.Nutrition.fillna(dfWell.Nutrition.mode()[0],inplace=True)\n",
    "dfWell.NutritionAdjustment.fillna(dfWell.NutritionAdjustment.mode()[0],inplace=True)\n",
    "dfWell.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "No     4301\n",
       "Yes     710\n",
       "Name: Menstruation, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.Menstruation.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Excellent    3550\n",
       "Okay         1398\n",
       "Poor           63\n",
       "Name: Nutrition, dtype: int64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.Nutrition.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Yes             4472\n",
       "No               439\n",
       "I Don't Know     100\n",
       "Name: NutritionAdjustment, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.NutritionAdjustment.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>PlayerID</th>\n",
       "      <th>Fatigue</th>\n",
       "      <th>Soreness</th>\n",
       "      <th>Desire</th>\n",
       "      <th>Irritability</th>\n",
       "      <th>BedTime</th>\n",
       "      <th>WakeTime</th>\n",
       "      <th>SleepHours</th>\n",
       "      <th>SleepQuality</th>\n",
       "      <th>MonitoringScore</th>\n",
       "      <th>Pain</th>\n",
       "      <th>Illness</th>\n",
       "      <th>Menstruation</th>\n",
       "      <th>Nutrition</th>\n",
       "      <th>NutritionAdjustment</th>\n",
       "      <th>TrainingReadiness</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>23:00:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>8.00</td>\n",
       "      <td>2</td>\n",
       "      <td>13</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Excellent</td>\n",
       "      <td>Yes</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>23:00:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>8.00</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>Yes</td>\n",
       "      <td>No</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Excellent</td>\n",
       "      <td>Yes</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>22:30:00</td>\n",
       "      <td>06:30:00</td>\n",
       "      <td>8.00</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>Excellent</td>\n",
       "      <td>Yes</td>\n",
       "      <td>100%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>00:30:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>6.50</td>\n",
       "      <td>1</td>\n",
       "      <td>15</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Excellent</td>\n",
       "      <td>Yes</td>\n",
       "      <td>95%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>23:45:00</td>\n",
       "      <td>07:00:00</td>\n",
       "      <td>7.25</td>\n",
       "      <td>4</td>\n",
       "      <td>20</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>Okay</td>\n",
       "      <td>Yes</td>\n",
       "      <td>100%</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Date  PlayerID  Fatigue  Soreness  Desire  Irritability   BedTime  \\\n",
       "0  2018-07-21         1        3         3       2             3  23:00:00   \n",
       "1  2018-07-21         2        4         3       4             4  23:00:00   \n",
       "2  2018-07-21         3        3         3       5             4  22:30:00   \n",
       "3  2018-07-21         4        2         3       5             4  00:30:00   \n",
       "4  2018-07-21         5        5         3       4             4  23:45:00   \n",
       "\n",
       "   WakeTime  SleepHours  SleepQuality  MonitoringScore Pain Illness  \\\n",
       "0  07:00:00        8.00             2               13   No      No   \n",
       "1  07:00:00        8.00             4               19  Yes      No   \n",
       "2  06:30:00        8.00             4               19   No      No   \n",
       "3  07:00:00        6.50             1               15   No      No   \n",
       "4  07:00:00        7.25             4               20   No      No   \n",
       "\n",
       "  Menstruation  Nutrition NutritionAdjustment TrainingReadiness  \n",
       "0          Yes  Excellent                 Yes                0%  \n",
       "1          Yes  Excellent                 Yes                0%  \n",
       "2           No  Excellent                 Yes              100%  \n",
       "3          Yes  Excellent                 Yes               95%  \n",
       "4           No       Okay                 Yes              100%  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# As USG measurement has almost 87% NA, it doesn't make sense to fill NA with random or mean values. \n",
    "# Hence, drop USG related columns\n",
    "dfWell = dfWell.drop(['USGMeasurement', 'USG'], axis=1)\n",
    "dfWell.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We do not require Bed Time and Wake Time as well. We'll be using SleepHours instead\n",
    "dfWell = dfWell.drop(['BedTime', 'WakeTime'], axis=1)\n",
    "# Convert TrainingReadiness from String to fraction\n",
    "dfWell['TrainingReadiness'] = dfWell['TrainingReadiness'].str.rstrip('%').astype('float') / 100.0 * 7"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "No     4423\n",
       "Yes     588\n",
       "Name: Pain, dtype: int64"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.Pain.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "No              4456\n",
       "Slightly Off     421\n",
       "Yes              134\n",
       "Name: Illness, dtype: int64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell.Illness.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>PlayerID</th>\n",
       "      <th>Fatigue</th>\n",
       "      <th>Soreness</th>\n",
       "      <th>Desire</th>\n",
       "      <th>Irritability</th>\n",
       "      <th>SleepHours</th>\n",
       "      <th>SleepQuality</th>\n",
       "      <th>MonitoringScore</th>\n",
       "      <th>Pain</th>\n",
       "      <th>Illness</th>\n",
       "      <th>Menstruation</th>\n",
       "      <th>Nutrition</th>\n",
       "      <th>NutritionAdjustment</th>\n",
       "      <th>TrainingReadiness</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>8.00</td>\n",
       "      <td>2</td>\n",
       "      <td>13</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>8.00</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>8.00</td>\n",
       "      <td>4</td>\n",
       "      <td>19</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>7.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>6.50</td>\n",
       "      <td>1</td>\n",
       "      <td>15</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>6.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>7.25</td>\n",
       "      <td>4</td>\n",
       "      <td>20</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>7.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Date  PlayerID  Fatigue  Soreness  Desire  Irritability  SleepHours  \\\n",
       "0  2018-07-21         1        3         3       2             3        8.00   \n",
       "1  2018-07-21         2        4         3       4             4        8.00   \n",
       "2  2018-07-21         3        3         3       5             4        8.00   \n",
       "3  2018-07-21         4        2         3       5             4        6.50   \n",
       "4  2018-07-21         5        5         3       4             4        7.25   \n",
       "\n",
       "   SleepQuality  MonitoringScore  Pain  Illness  Menstruation  Nutrition  \\\n",
       "0             2               13     1        2             0          2   \n",
       "1             4               19     0        2             0          2   \n",
       "2             4               19     1        2             1          2   \n",
       "3             1               15     1        2             0          2   \n",
       "4             4               20     1        2             1          1   \n",
       "\n",
       "   NutritionAdjustment  TrainingReadiness  \n",
       "0                    2               0.00  \n",
       "1                    2               0.00  \n",
       "2                    2               7.00  \n",
       "3                    2               6.65  \n",
       "4                    2               7.00  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Convert into numerical values\n",
    "dfWell.Pain = np.where(dfWell.Pain == 'No', 1, 0)\n",
    "dfWell.Menstruation = np.where(dfWell.Menstruation == 'No', 1, 0)\n",
    "dfWell.Nutrition = np.where(dfWell.Nutrition == 'Poor', 0, np.where(dfWell.Nutrition == 'Okay', 1, 2))\n",
    "dfWell.Illness = np.where(dfWell.Illness == 'Yes', 0, np.where(dfWell.Illness == 'Slightly Off', 1, 2))\n",
    "dfWell.NutritionAdjustment = np.where(dfWell.NutritionAdjustment == 'No', 0, \\\n",
    "                                      np.where(dfWell.NutritionAdjustment == 'I Don\\'t Know', 1, 2))\n",
    "dfWell.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10209.44506669854, 0.0)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from factor_analyzer.factor_analyzer import calculate_bartlett_sphericity\n",
    "df = dfWell[dfWell.columns.difference(['Date','PlayerID','MonitoringScore'])]\n",
    "chi_square_value, p_value = calculate_bartlett_sphericity(df)\n",
    "chi_square_value, p_value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7230727699430893"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from factor_analyzer.factor_analyzer import calculate_kmo\n",
    "kmo_all, kmo_model = calculate_kmo(df)\n",
    "kmo_model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Original_Eigenvalues</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2.867840</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>1.550185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>1.163748</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>1.079430</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0.990381</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>0.955426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>0.885087</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>0.663733</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>0.566753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>0.500336</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>0.445287</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>0.331794</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Original_Eigenvalues\n",
       "0               2.867840\n",
       "1               1.550185\n",
       "2               1.163748\n",
       "3               1.079430\n",
       "4               0.990381\n",
       "5               0.955426\n",
       "6               0.885087\n",
       "7               0.663733\n",
       "8               0.566753\n",
       "9               0.500336\n",
       "10              0.445287\n",
       "11              0.331794"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Create factor analysis object and perform factor analysis\n",
    "fa = FactorAnalyzer()\n",
    "fa.analyze(df, 12, rotation=None)\n",
    "# Check Eigenvalues\n",
    "ev, v = fa.get_eigenvalues()\n",
    "ev"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Create scree plot using matplotlib\n",
    "plt.scatter(range(1,df.shape[1]+1),ev)\n",
    "plt.plot(range(1,df.shape[1]+1),ev)\n",
    "plt.title('Scree Plot')\n",
    "plt.xlabel('Factors')\n",
    "plt.ylabel('Eigenvalue')\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Factor1</th>\n",
       "      <th>Factor2</th>\n",
       "      <th>Factor3</th>\n",
       "      <th>Factor4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>Desire</td>\n",
       "      <td>0.297775</td>\n",
       "      <td>0.014830</td>\n",
       "      <td>-0.018263</td>\n",
       "      <td>0.826713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Fatigue</td>\n",
       "      <td>0.680681</td>\n",
       "      <td>-0.005057</td>\n",
       "      <td>0.027876</td>\n",
       "      <td>0.481921</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Illness</td>\n",
       "      <td>0.083225</td>\n",
       "      <td>0.071866</td>\n",
       "      <td>0.125495</td>\n",
       "      <td>0.110502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Irritability</td>\n",
       "      <td>0.469493</td>\n",
       "      <td>0.046278</td>\n",
       "      <td>0.004567</td>\n",
       "      <td>0.365455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Menstruation</td>\n",
       "      <td>0.022113</td>\n",
       "      <td>0.063481</td>\n",
       "      <td>0.020381</td>\n",
       "      <td>0.033328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Nutrition</td>\n",
       "      <td>0.047010</td>\n",
       "      <td>0.675161</td>\n",
       "      <td>0.051184</td>\n",
       "      <td>-0.029770</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>NutritionAdjustment</td>\n",
       "      <td>-0.015880</td>\n",
       "      <td>0.726706</td>\n",
       "      <td>-0.021174</td>\n",
       "      <td>-0.000230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Pain</td>\n",
       "      <td>0.030785</td>\n",
       "      <td>0.050629</td>\n",
       "      <td>0.995425</td>\n",
       "      <td>0.039629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>SleepHours</td>\n",
       "      <td>0.334700</td>\n",
       "      <td>0.057831</td>\n",
       "      <td>0.020863</td>\n",
       "      <td>-0.088249</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>SleepQuality</td>\n",
       "      <td>0.713932</td>\n",
       "      <td>0.088429</td>\n",
       "      <td>0.078114</td>\n",
       "      <td>0.116014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Soreness</td>\n",
       "      <td>0.382954</td>\n",
       "      <td>-0.096350</td>\n",
       "      <td>0.098340</td>\n",
       "      <td>0.393524</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>TrainingReadiness</td>\n",
       "      <td>-0.057163</td>\n",
       "      <td>0.057130</td>\n",
       "      <td>0.055586</td>\n",
       "      <td>0.305239</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      Factor1   Factor2   Factor3   Factor4\n",
       "Desire               0.297775  0.014830 -0.018263  0.826713\n",
       "Fatigue              0.680681 -0.005057  0.027876  0.481921\n",
       "Illness              0.083225  0.071866  0.125495  0.110502\n",
       "Irritability         0.469493  0.046278  0.004567  0.365455\n",
       "Menstruation         0.022113  0.063481  0.020381  0.033328\n",
       "Nutrition            0.047010  0.675161  0.051184 -0.029770\n",
       "NutritionAdjustment -0.015880  0.726706 -0.021174 -0.000230\n",
       "Pain                 0.030785  0.050629  0.995425  0.039629\n",
       "SleepHours           0.334700  0.057831  0.020863 -0.088249\n",
       "SleepQuality         0.713932  0.088429  0.078114  0.116014\n",
       "Soreness             0.382954 -0.096350  0.098340  0.393524\n",
       "TrainingReadiness   -0.057163  0.057130  0.055586  0.305239"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fa.analyze(df, 4, rotation=\"varimax\")\n",
    "fa.loadings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Factor1</th>\n",
       "      <th>Factor2</th>\n",
       "      <th>Factor3</th>\n",
       "      <th>Factor4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>SS Loadings</td>\n",
       "      <td>1.554890</td>\n",
       "      <td>1.021801</td>\n",
       "      <td>1.030533</td>\n",
       "      <td>1.334318</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Proportion Var</td>\n",
       "      <td>0.129574</td>\n",
       "      <td>0.085150</td>\n",
       "      <td>0.085878</td>\n",
       "      <td>0.111193</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>Cumulative Var</td>\n",
       "      <td>0.129574</td>\n",
       "      <td>0.214724</td>\n",
       "      <td>0.300602</td>\n",
       "      <td>0.411795</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 Factor1   Factor2   Factor3   Factor4\n",
       "SS Loadings     1.554890  1.021801  1.030533  1.334318\n",
       "Proportion Var  0.129574  0.085150  0.085878  0.111193\n",
       "Cumulative Var  0.129574  0.214724  0.300602  0.411795"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fa.get_factor_variance()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Energy</th>\n",
       "      <th>Nourishment</th>\n",
       "      <th>Discomfort</th>\n",
       "      <th>Determination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>9.559896</td>\n",
       "      <td>3.501880</td>\n",
       "      <td>1.985388</td>\n",
       "      <td>5.102797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>12.702699</td>\n",
       "      <td>3.698991</td>\n",
       "      <td>1.142109</td>\n",
       "      <td>7.796001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>11.972553</td>\n",
       "      <td>4.232901</td>\n",
       "      <td>2.500879</td>\n",
       "      <td>10.350426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>8.645920</td>\n",
       "      <td>3.802447</td>\n",
       "      <td>2.167529</td>\n",
       "      <td>9.512673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>12.738104</td>\n",
       "      <td>3.489422</td>\n",
       "      <td>2.508064</td>\n",
       "      <td>10.583512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5006</td>\n",
       "      <td>18.614064</td>\n",
       "      <td>1.087246</td>\n",
       "      <td>2.825409</td>\n",
       "      <td>15.476140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5007</td>\n",
       "      <td>10.961311</td>\n",
       "      <td>3.214301</td>\n",
       "      <td>2.515009</td>\n",
       "      <td>9.804929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5008</td>\n",
       "      <td>12.822358</td>\n",
       "      <td>2.503752</td>\n",
       "      <td>2.477125</td>\n",
       "      <td>11.418906</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5009</td>\n",
       "      <td>12.524053</td>\n",
       "      <td>3.412587</td>\n",
       "      <td>2.583743</td>\n",
       "      <td>10.473052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5010</td>\n",
       "      <td>14.886535</td>\n",
       "      <td>3.679469</td>\n",
       "      <td>2.736708</td>\n",
       "      <td>11.853125</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5011 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         Energy  Nourishment  Discomfort  Determination\n",
       "0      9.559896     3.501880    1.985388       5.102797\n",
       "1     12.702699     3.698991    1.142109       7.796001\n",
       "2     11.972553     4.232901    2.500879      10.350426\n",
       "3      8.645920     3.802447    2.167529       9.512673\n",
       "4     12.738104     3.489422    2.508064      10.583512\n",
       "...         ...          ...         ...            ...\n",
       "5006  18.614064     1.087246    2.825409      15.476140\n",
       "5007  10.961311     3.214301    2.515009       9.804929\n",
       "5008  12.822358     2.503752    2.477125      11.418906\n",
       "5009  12.524053     3.412587    2.583743      10.473052\n",
       "5010  14.886535     3.679469    2.736708      11.853125\n",
       "\n",
       "[5011 rows x 4 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_fact = pd.DataFrame(np.dot(df, fa.loadings))\n",
    "df_fact.columns = [\"Energy\",\"Nourishment\",\"Discomfort\",\"Determination\"] \n",
    "df_fact"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 5011 entries, 0 to 5010\n",
      "Data columns (total 19 columns):\n",
      "Date                   5011 non-null object\n",
      "PlayerID               5011 non-null int64\n",
      "Fatigue                5011 non-null int64\n",
      "Soreness               5011 non-null int64\n",
      "Desire                 5011 non-null int64\n",
      "Irritability           5011 non-null int64\n",
      "SleepHours             5011 non-null float64\n",
      "SleepQuality           5011 non-null int64\n",
      "MonitoringScore        5011 non-null int64\n",
      "Pain                   5011 non-null int32\n",
      "Illness                5011 non-null int32\n",
      "Menstruation           5011 non-null int32\n",
      "Nutrition              5011 non-null int32\n",
      "NutritionAdjustment    5011 non-null int32\n",
      "TrainingReadiness      5011 non-null float64\n",
      "Energy                 5011 non-null float64\n",
      "Nourishment            5011 non-null float64\n",
      "Discomfort             5011 non-null float64\n",
      "Determination          5011 non-null float64\n",
      "dtypes: float64(6), int32(5), int64(7), object(1)\n",
      "memory usage: 646.1+ KB\n"
     ]
    }
   ],
   "source": [
    "dfWell = pd.concat([dfWell, df_fact], axis=1)\n",
    "dfWell.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>PlayerID</th>\n",
       "      <th>MonitoringScore</th>\n",
       "      <th>Energy</th>\n",
       "      <th>Nourishment</th>\n",
       "      <th>Discomfort</th>\n",
       "      <th>Determination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>1</td>\n",
       "      <td>13</td>\n",
       "      <td>9.559896</td>\n",
       "      <td>3.501880</td>\n",
       "      <td>1.985388</td>\n",
       "      <td>5.102797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>2</td>\n",
       "      <td>19</td>\n",
       "      <td>12.702699</td>\n",
       "      <td>3.698991</td>\n",
       "      <td>1.142109</td>\n",
       "      <td>7.796001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>3</td>\n",
       "      <td>19</td>\n",
       "      <td>11.972553</td>\n",
       "      <td>4.232901</td>\n",
       "      <td>2.500879</td>\n",
       "      <td>10.350426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>4</td>\n",
       "      <td>15</td>\n",
       "      <td>8.645920</td>\n",
       "      <td>3.802447</td>\n",
       "      <td>2.167529</td>\n",
       "      <td>9.512673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>5</td>\n",
       "      <td>20</td>\n",
       "      <td>12.738104</td>\n",
       "      <td>3.489422</td>\n",
       "      <td>2.508064</td>\n",
       "      <td>10.583512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5006</td>\n",
       "      <td>2017-08-01</td>\n",
       "      <td>8</td>\n",
       "      <td>33</td>\n",
       "      <td>18.614064</td>\n",
       "      <td>1.087246</td>\n",
       "      <td>2.825409</td>\n",
       "      <td>15.476140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5007</td>\n",
       "      <td>2017-08-01</td>\n",
       "      <td>10</td>\n",
       "      <td>18</td>\n",
       "      <td>10.961311</td>\n",
       "      <td>3.214301</td>\n",
       "      <td>2.515009</td>\n",
       "      <td>9.804929</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5008</td>\n",
       "      <td>2017-08-01</td>\n",
       "      <td>12</td>\n",
       "      <td>21</td>\n",
       "      <td>12.822358</td>\n",
       "      <td>2.503752</td>\n",
       "      <td>2.477125</td>\n",
       "      <td>11.418906</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5009</td>\n",
       "      <td>2017-08-01</td>\n",
       "      <td>13</td>\n",
       "      <td>20</td>\n",
       "      <td>12.524053</td>\n",
       "      <td>3.412587</td>\n",
       "      <td>2.583743</td>\n",
       "      <td>10.473052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5010</td>\n",
       "      <td>2017-08-01</td>\n",
       "      <td>14</td>\n",
       "      <td>24</td>\n",
       "      <td>14.886535</td>\n",
       "      <td>3.679469</td>\n",
       "      <td>2.736708</td>\n",
       "      <td>11.853125</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5011 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            Date  PlayerID  MonitoringScore     Energy  Nourishment  \\\n",
       "0     2018-07-21         1               13   9.559896     3.501880   \n",
       "1     2018-07-21         2               19  12.702699     3.698991   \n",
       "2     2018-07-21         3               19  11.972553     4.232901   \n",
       "3     2018-07-21         4               15   8.645920     3.802447   \n",
       "4     2018-07-21         5               20  12.738104     3.489422   \n",
       "...          ...       ...              ...        ...          ...   \n",
       "5006  2017-08-01         8               33  18.614064     1.087246   \n",
       "5007  2017-08-01        10               18  10.961311     3.214301   \n",
       "5008  2017-08-01        12               21  12.822358     2.503752   \n",
       "5009  2017-08-01        13               20  12.524053     3.412587   \n",
       "5010  2017-08-01        14               24  14.886535     3.679469   \n",
       "\n",
       "      Discomfort  Determination  \n",
       "0       1.985388       5.102797  \n",
       "1       1.142109       7.796001  \n",
       "2       2.500879      10.350426  \n",
       "3       2.167529       9.512673  \n",
       "4       2.508064      10.583512  \n",
       "...          ...            ...  \n",
       "5006    2.825409      15.476140  \n",
       "5007    2.515009       9.804929  \n",
       "5008    2.477125      11.418906  \n",
       "5009    2.583743      10.473052  \n",
       "5010    2.736708      11.853125  \n",
       "\n",
       "[5011 rows x 7 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell = dfWell[[\"Date\",\"PlayerID\",\"MonitoringScore\",\"Energy\",\"Nourishment\",\"Discomfort\",\"Determination\"]]\n",
    "dfWell"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df = dfWell[dfWell.columns.difference(['Date','PlayerID'])]\n",
    "ax = sns.heatmap(df.corr(), annot=True, fmt=\".2f\")\n",
    "bottom, top = ax.get_ylim()\n",
    "ax.set_ylim(bottom + 0.5, top - 0.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>PlayerID</th>\n",
       "      <th>Energy</th>\n",
       "      <th>Nourishment</th>\n",
       "      <th>Discomfort</th>\n",
       "      <th>Determination</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>1</td>\n",
       "      <td>9.559896</td>\n",
       "      <td>3.501880</td>\n",
       "      <td>1.985388</td>\n",
       "      <td>5.102797</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>2</td>\n",
       "      <td>12.702699</td>\n",
       "      <td>3.698991</td>\n",
       "      <td>1.142109</td>\n",
       "      <td>7.796001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>3</td>\n",
       "      <td>11.972553</td>\n",
       "      <td>4.232901</td>\n",
       "      <td>2.500879</td>\n",
       "      <td>10.350426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>4</td>\n",
       "      <td>8.645920</td>\n",
       "      <td>3.802447</td>\n",
       "      <td>2.167529</td>\n",
       "      <td>9.512673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>2018-07-21</td>\n",
       "      <td>5</td>\n",
       "      <td>12.738104</td>\n",
       "      <td>3.489422</td>\n",
       "      <td>2.508064</td>\n",
       "      <td>10.583512</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Date  PlayerID     Energy  Nourishment  Discomfort  Determination\n",
       "0  2018-07-21         1   9.559896     3.501880    1.985388       5.102797\n",
       "1  2018-07-21         2  12.702699     3.698991    1.142109       7.796001\n",
       "2  2018-07-21         3  11.972553     4.232901    2.500879      10.350426\n",
       "3  2018-07-21         4   8.645920     3.802447    2.167529       9.512673\n",
       "4  2018-07-21         5  12.738104     3.489422    2.508064      10.583512"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfWell = dfWell.drop(['MonitoringScore'], axis=1)\n",
    "dfWell.head()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}