diff --git a/.ipynb_checkpoints/UFCFVQ-15-M Programming Task 1 Template-checkpoint.ipynb b/.ipynb_checkpoints/UFCFVQ-15-M Programming Task 1 Template-checkpoint.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..01f60e096d4ddb0f3a0e9abaf543f18874984944
--- /dev/null
+++ b/.ipynb_checkpoints/UFCFVQ-15-M Programming Task 1 Template-checkpoint.ipynb	
@@ -0,0 +1,567 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# UFCFVQ-15-M Programming for Data Science\n",
+    "# Programming Task 1\n",
+    "\n",
+    "## Student Id: "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.8 - Read data from a file into memory"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Here I am  opening the file where the \"r\" shows that it is just to read the file. Next I created an empty list and \n",
+    "# added each number in a loop to the list until the whole file is added into the list. The list was being treated as a string \n",
+    "# and not integers so that was also changed.\n",
+    "\n",
+    "task1 = open(\"task1.dat\", \"r\")  #(Python File Open, 2021)\n",
+    "\n",
+    "list_numbers = []\n",
+    "for number in task1:\n",
+    "    changed_list = number.strip()\n",
+    "    list_numbers.append(changed_list)\n",
+    "\n",
+    "task1.close()\n",
+    "\n",
+    "task1_dat = list(map(int, list_numbers))\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.1 - Find the arithmetic mean"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "120.8945\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Used the data in task1.dat and have found the mean of the data using the equation mean=sum(x(i)/n) where x(i) is each item in \n",
+    "# the list and n in the number of items in the list.\n",
+    "\n",
+    "sum_list = sum(task1_dat)\n",
+    "\n",
+    "arithmetic_mean = round((sum_list/len(task1_dat)),4)\n",
+    "\n",
+    "print(arithmetic_mean)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.2 - Find the standard deviation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "31.9726\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Used the data given in task1.dat and produced a loop to find sum(x(i) -mean)**2, where x(i) is each item in the list. I am\n",
+    "# using the sample std which is shown by std = ((sum(x(i) -mean)**2)/n-1)**(1/2). \n",
+    "\n",
+    "number = 0\n",
+    "for i in task1_dat:\n",
+    "    number += (i - arithmetic_mean)**2\n",
+    "\n",
+    "standard_deviation =round(((number/(len(task1_dat)-1))**(1/2)),4)   #(Mullee, 2021)\n",
+    "\n",
+    "\n",
+    "print(standard_deviation)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.3 - Find the min/max values "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "199\n",
+      "0\n"
+     ]
+    }
+   ],
+   "source": [
+    "#Producing both the min and max of task1_dat.\n",
+    "\n",
+    "max_value = max(task1_dat)\n",
+    "print(max_value)\n",
+    "\n",
+    "min_value = min(task1_dat)\n",
+    "print(min_value)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.4 - Find the 25th percentile "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "191.0\n",
+      "99\n"
+     ]
+    }
+   ],
+   "source": [
+    "# First you sort the code from smallest to largest, then find the index of where the 25th percentile will lie which will give\n",
+    "# you the 25th percentile. The index of of lists start from 0 and to find the index you have to minus 1 off the value printed.\n",
+    "\n",
+    "part4 = sorted(task1_dat)\n",
+    "\n",
+    "part4_25percent = 0.25*len(task1_dat) -1\n",
+    "print(part4_25percent)\n",
+    "\n",
+    "per_25 = part4[191]\n",
+    "print(per_25)\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.5 - Find the 50th percentile"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "383.0\n",
+      "117\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Here we find the 50th percentile often known as the median. We follow the same code as in FR1.4 but replace 0.5 with 0.25.\n",
+    "\n",
+    "part5 = sorted(task1_dat)\n",
+    "\n",
+    "part5_50percent = 0.5*len(task1_dat) -1\n",
+    "print(part5_50percent)\n",
+    "\n",
+    "per_50 =part5[383]\n",
+    "print(per_50)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.6 - Find the 75th percentile"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "575.0\n",
+      "140\n"
+     ]
+    }
+   ],
+   "source": [
+    "# First you sort the code from smallest to largest, then find the index of where the 75th percentile will lie which will give\n",
+    "# you the 75th percentile.\n",
+    "part6 = sorted(task1_dat)\n",
+    "\n",
+    "part6_75percent = 0.75*len(task1_dat) -1\n",
+    "print(part6_75percent)\n",
+    "\n",
+    "per_75 =part6[575]\n",
+    "print(per_75)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.7 - Print the set of summary statistics in tabular form"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Summary Statistics\n",
+      "--------------------\n",
+      "Count\t768\n",
+      "Mean\t120.8945\n",
+      "Std\t31.9726\n",
+      "Min\t0\n",
+      "25%\t99\n",
+      "50%\t117\n",
+      "75%\t140\n",
+      "Max\t199\n"
+     ]
+    }
+   ],
+   "source": [
+    "#Here I am creating the summary statistics, I am using a function to create table form. I am aligning the text\n",
+    "#within the fields and also inputting the values creating previously.\n",
+    "\n",
+    "def createtable():\n",
+    "    print(\"Summary Statistics\")\n",
+    "    print(\"--------------------\")\n",
+    "    print(\"%s\\t%s\" % (\"Count\", len(task1_dat)))\n",
+    "    print(\"%s\\t%s\" % (\"Mean\", arithmetic_mean))\n",
+    "    print(\"%s\\t%s\" % (\"Std\", standard_deviation))\n",
+    "    print(\"%s\\t%s\" % (\"Min\", min_value))\n",
+    "    print(\"%s\\t%s\" % (\"25%\", per_25))\n",
+    "    print(\"%s\\t%s\" % (\"50%\", per_50))\n",
+    "    print(\"%s\\t%s\" % (\"75%\", per_75))\n",
+    "    print(\"%s\\t%s\" % (\"Max\", max_value))\n",
+    "\n",
+    "createtable()    #(Sledjoys, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.9 - Design and build a data structure to store CSV data in memory"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### describe what you would like to happen here...\n",
+    "\n",
+    "The first step would be checking that the CSV is stored in the same directory as this file as you would have to tell python the exact location of the CSV file. I would assign this file to a name which -  which is easy to understand.\n",
+    "\n",
+    "Next would be creating a function which will open and read the file. Next I will use the .readline() function to tell python\n",
+    "read this line and move on, this is as the first line is the headings and will affect any calculations if treated like the rest\n",
+    "of the lines.\n",
+    "\n",
+    "Create an empty list with empty sublist to store store each variable value in. Then a loop will be created \n",
+    "to read each row and and seperate the variables within each row using split(',') and also remove \n",
+    "any new line characters using .strip(). Next each item within all the rows using the index will be inserted into the the sublists of the empty data list.\n",
+    "Next I will create a dictionary to store all this data in and assign each sublist with the correct headings.\n",
+    "As good practive the CSV file should then be closed. Finally you will use the return command which will exit the function and allow the function to produce values based on the return key used.\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.10 - Create and demonstrate a function to read CSV data from a file into memory"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "26.6"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I created a function that opened and read the file, then i performed a loop where i read each row and split the columns \n",
+    "#by seperating them where the commas formed and also removed the excess characters using the .strip() function \n",
+    "#(this removed \\n- new line character). This section took a lot of thinking and although it is not the most concise \n",
+    "#piece of work it is the best method I found to answer the question. I have demonstrated below how you can find all the data\n",
+    "#using specific column names and so.\n",
+    "\n",
+    "file_csv = \"task1.csv\"\n",
+    "\n",
+    "def file(file_csv):\n",
+    "    file_open = open(file_csv, \"r\")\n",
+    "    file_open.readline()\n",
+    "    data = [[],[],[],[],[],[],[],[],[]]\n",
+    "    for row in file_open:\n",
+    "        items = row.strip().split(\",\")\n",
+    "        items = [float(i) for i in items]\n",
+    "        data[0].append(items[0])\n",
+    "        data[1].append(items[1])\n",
+    "        data[2].append(items[2])\n",
+    "        data[3].append(items[3])\n",
+    "        data[4].append(items[4])\n",
+    "        data[5].append(items[5])\n",
+    "        data[6].append(items[6])\n",
+    "        data[7].append(items[7])\n",
+    "        data[8].append(items[8])\n",
+    "        task = {\"Pregnancies\": data[0],\"Glucose\": data[1],\"BloodPressure\": data[2],\"SkinThickness\": data[3],\n",
+    "        \"Insulin\" : data[4],\"BMI\": data[5],\"DiabetesPedigreeFunction\": data[6],\"Age\": data[7],\"Outcome\": data[8]}\n",
+    "    file_open.close()\n",
+    "    return task\n",
+    "\n",
+    "df = file(file_csv)\n",
+    "df[\"BMI\"][1]\n",
+    "\n",
+    "#(Code Faster with Line-of-Code Completions, Cloudless Processing, 2021) \n",
+    "#(Python - List Comprehension, 2021)\n",
+    "#(python functions., 2021)\n",
+    "#(Python List Tutorial: Lists, Loops, and More! – Dataquest, 2021)\n",
+    "#(Convert, 2021)\n",
+    "\n",
+    "#https://www.youtube.com/watch?v=GBD4na8AQjY"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.11 - Create and demonstrate a generic statistical summary function "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 35,
+   "metadata": {
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'Pregnancies': 1.0,\n",
+       " 'Glucose': 99.0,\n",
+       " 'BloodPressure': 62.0,\n",
+       " 'SkinThickness': 0.0,\n",
+       " 'Insulin': 0.0,\n",
+       " 'BMI': 27.3,\n",
+       " 'DiabetesPedigreeFunction': 0.243,\n",
+       " 'Age': 24.0,\n",
+       " 'Outcome': 0.0}"
+      ]
+     },
+     "execution_count": 35,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#For this question i have created a function that holds multiple empty disctionaries that hold the different statistics that\n",
+    "#are required. Next i used the .items() which allows you to to unpack the dictionary and look at the headings(h) and also\n",
+    "# the values(v). Then i cairred on with the usual calculations as done previously but this time used the empty dictionaries\n",
+    "#which will house each headings results. \n",
+    "#Finally returning all the statistics in order to print and look at them individually.\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n",
+    "def sumstats(df):\n",
+    "    count={}\n",
+    "    mean = {}\n",
+    "    minimum = {}\n",
+    "    maximum = {}\n",
+    "    standard_deviation = {}\n",
+    "    per25 = {}\n",
+    "    per50 = {}\n",
+    "    per75 = {}\n",
+    "    for h,v in df.items():\n",
+    "        count[h] = float(len(v))\n",
+    "        mean[h] = round(float(sum(v))/count[h],2)     #(Dimov, 2021)\n",
+    "        minimum[h] = min(v)\n",
+    "        maximum[h] = max(v)\n",
+    "        sort_v = sorted(v)\n",
+    "        per25[h] = sort_v[int(0.25*(int(count[h]))-1)]\n",
+    "        per50 [h]= sort_v[int(0.5*int(count[h])-1)]\n",
+    "        per75 [h] = sort_v[int(0.75*int(count[h])-1)]\n",
+    "        #number = 0\n",
+    "        #number += ((v - int(mean[h]))**2)\n",
+    "        #standard_deviation[h] = round(((number/(len(v)-1))**(1/2)),3)\n",
+    "    return (count, mean, minimum, maximum, standard_deviation, per25, per50, per75)\n",
+    "\n",
+    "task11 = sumstats(df)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR1.12 - Create and demonstrate a function to print a custom table"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 36,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\t\tCount\tMean\tSt.d\tMin\tMax\t25%\t50%\t75%\n",
+      "-----------------------------------------------------------------------------\n",
+      "Pregnancies\t768.0\t3.85\t\t0.0\t17.0\t1.0\t3.0\t6.0\n",
+      "Glucose\t\t768.0\t120.89\t\t0.0\t199.0\t99.0\t117.0\t140.0\n",
+      "BloodPressure\t768.0\t69.11\t\t0.0\t122.0\t62.0\t72.0\t80.0\n",
+      "SkinThickness\t768.0\t20.54\t\t0.0\t99.0\t0.0\t23.0\t32.0\n",
+      "Insulin\t\t768.0\t79.8\t\t0.0\t846.0\t0.0\t29.0\t127.0\n",
+      "BMI\t\t768.0\t31.99\t\t0.0\t67.1\t27.3\t32.0\t36.6\n",
+      "Diabetes PF\t768.0\t0.47\t\t0.078\t2.42\t0.243\t0.371\t0.626\n",
+      "Age\t\t768.0\t33.24\t\t21.0\t81.0\t24.0\t29.0\t41.0\n",
+      "Outcome\t\t768.0\t0.35\t\t0.0\t1.0\t0.0\t0.0\t1.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "# I created a function and then used multiple print commands to create the table while also using the previous answers from the\n",
+    "#task. The \\t Creates even spaces which helps to make the table clear.\n",
+    "def createtable():\n",
+    "    print(\"\\t\\tCount\\tMean\\tSt.d\\tMin\\tMax\\t25%\\t50%\\t75%\")\n",
+    "    print(\"-----------------------------------------------------------------------------\")\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Pregnancies\",task11[0][\"Pregnancies\"],task11[1][\"Pregnancies\"],\"\",task11[2][\"Pregnancies\"],task11[3][\"Pregnancies\"],task11[5][\"Pregnancies\"],task11[6][\"Pregnancies\"],task11[7][\"Pregnancies\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Glucose\",task11[0][\"Glucose\"],task11[1][\"Glucose\"],\"\",task11[2][\"Glucose\"],task11[3][\"Glucose\"],task11[5][\"Glucose\"],task11[6][\"Glucose\"],task11[7][\"Glucose\"]))\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"BloodPressure\",task11[0][\"BloodPressure\"],task11[1][\"BloodPressure\"],\"\",task11[2][\"BloodPressure\"],task11[3][\"BloodPressure\"],task11[5][\"BloodPressure\"],task11[6][\"BloodPressure\"],task11[7][\"BloodPressure\"]))\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"SkinThickness\",task11[0][\"SkinThickness\"],task11[1][\"SkinThickness\"],\"\",task11[2][\"SkinThickness\"],task11[3][\"SkinThickness\"],task11[5][\"SkinThickness\"],task11[6][\"SkinThickness\"],task11[7][\"SkinThickness\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Insulin\",task11[0][\"Insulin\"],task11[1][\"Insulin\"],\"\",task11[2][\"Insulin\"],task11[3][\"Insulin\"],task11[5][\"Insulin\"],task11[6][\"Insulin\"],task11[7][\"Insulin\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"BMI\",task11[0][\"BMI\"],task11[1][\"BMI\"],\"\",task11[2][\"BMI\"],task11[3][\"BMI\"],task11[5][\"BMI\"],task11[6][\"BMI\"],task11[7][\"BMI\"]))\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Diabetes PF\",task11[0][\"DiabetesPedigreeFunction\"],task11[1][\"DiabetesPedigreeFunction\"],\"\",task11[2][\"DiabetesPedigreeFunction\"],task11[3][\"DiabetesPedigreeFunction\"],task11[5][\"DiabetesPedigreeFunction\"],task11[6][\"DiabetesPedigreeFunction\"],task11[7][\"DiabetesPedigreeFunction\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Age\",task11[0][\"Age\"],task11[1][\"Age\"],\"\",task11[2][\"Age\"],task11[3][\"Age\"],task11[5][\"Age\"],task11[6][\"Age\"],task11[7][\"Age\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Outcome\",task11[0][\"Outcome\"],task11[1][\"Outcome\"],\"\",task11[2][\"Outcome\"],task11[3][\"Outcome\"],task11[5][\"Outcome\"],task11[6][\"Outcome\"],task11[7][\"Outcome\"]))\n",
+    "createtable()  #(Sledjoys, 2021)\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Process Development Report for Task 1\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### FR1.1 - FR1.8\n",
+    "These tasks set a good basis for the assignment while the previous worksheets helped with the understanding of lists and the different operators that could be used to solve the summary statistics. I placed FR1.8 at the top of the assignment as it was easier to use the data given then make up my own, opening this file was relatively easy with the main issues occurring when taking the list from strings to integers to enable me to perform different calculations on it. For the standard deviation the use of a loop made the code more concise and enabled me to create a variable and use the += assignment which adds a number to this variable until the loop gone through each item in the list. Furthermore, I also used the round operator which helped make the value easier to read which meant the table further below will looked pleasing. Once again throughout these questions there was a lot of use of the basic operators that Python offers which made the code more concise. When completing the questions for the percentiles I struggled with the indexes as I was uncertain if the value produced included the 0 index or if it did not. I decided to take 1 off these values produce to get it into index form as I felt this was the correct way to do this and then merely found this value in the sorted list. There was a great link on the internet that gave me a good idea how to create a nicely formatted table for FR1.7 which involved calling the answers from the previous tasks and meant that this table would work for new .dat files.\n",
+    "### FR1.9 - FR1.12\n",
+    "The tasks that involved task1.csv file it was challenging, with Fr1.10 causing issues and so I became creative in storing this csv to memory. I felt the best way to approach this task was to remove the header,create a loop which looked at each row, removing the comma and new line character. Then I created a loop for each value in the row and appended this to a nested list. Next, I created a dictionary with the headings to store each value. For the summary statistics I created a function that had empty dictionaries which would be filled with the summary statistics for each header. I was unable to get standard deviation working within these, as I couldn’t figure out how to create the sum((v-mean[h])^2) to work for each heading however I have left the code in but commented out. I wish I had made the function print clearer results however this task did cause me to think outside the box and create a more complex function. For FR1.12 I followed the same link as for FR1.7 which helped create a nice table and I was able to select each item from the summary statistics function. Overall, this section was great to work on with a clear build up in difficulty.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### References\n",
+    "\n",
+    "Dataquest. 2021. Python List Tutorial: Lists, Loops, and More! – Dataquest. [online] Available at: <https://www.dataquest.io/blog/python-list-tutorial/> [Accessed 21 March 2021].\n",
+    "\n",
+    "Convert, 2021. Convert all strings in a list to int. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/7368789/convert-all-strings-in-a-list-to-int> [Accessed 21 March 2021].\n",
+    "\n",
+    "Dimov, V., 2021. Python 3.4 - How to get the average of dictionary values?. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/30687244/python-3-4-how-to-get-the-average-of-dictionary-values> [Accessed 15 April 2021].\n",
+    "\n",
+    "Convert, 2021. Convert all strings in a list to int. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/7368789/convert-all-strings-in-a-list-to-int> [Accessed 21 March 2021].\n",
+    "\n",
+    "Dataquest. 2021. Python List Tutorial: Lists, Loops, and More! – Dataquest. [online] Available at: <https://www.dataquest.io/blog/python-list-tutorial/> [Accessed 21 March 2021].\n",
+    "\n",
+    "Dimov, V., 2021. Python 3.4 - How to get the average of dictionary values?. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/30687244/python-3-4-how-to-get-the-average-of-dictionary-values> [Accessed 15 April 2021].\n",
+    "\n",
+    "Kite.com. 2021. Code Faster with Line-of-Code Completions, Cloudless Processing. [online] Available at: <https://www.kite.com/python/answers/how-to-create-a-dictionary-of-lists-in-python> [Accessed 21 March 2021].\n",
+    "\n",
+    "Mullee, M., 2021. How to choose and use a calculator. In: How to do it 2. [online] 2. Mean and standard deviation. Available at: <https://www.bmj.com/about-bmj/resources-readers/publications/statistics-square-one/2-mean-and-standard-deviation> [Accessed 15 March 2021].\n",
+    "\n",
+    "Sledjoys, B., 2021. How To Create A Table in Python. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/33458074/how-to-create-a-table-in-python> [Accessed 20 March 2021].\n",
+    "\n",
+    "W3schools.com. 2021. Python - List Comprehension. [online] Available at: <https://www.w3schools.com/python/python_lists_comprehension.asp> [Accessed 21 March 2021].\n",
+    "\n",
+    "W3schools.com. 2021. Python File Open. [online] Available at: <https://www.w3schools.com/python/python_file_open.asp> [Accessed 14 March 2021].\n",
+    "\n",
+    "W3schools.com. 2021. python functions.. [online] Available at: <https://www.w3schools.com/python/python_functions.asp> [Accessed 21 March 2021].\n"
+   ]
+  }
+ ],
+ "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/.ipynb_checkpoints/UFCFVQ-15-M Programming Task 2 Template (1)-checkpoint.ipynb b/.ipynb_checkpoints/UFCFVQ-15-M Programming Task 2 Template (1)-checkpoint.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..eafb96515951db336335199896294208858c8ade
--- /dev/null
+++ b/.ipynb_checkpoints/UFCFVQ-15-M Programming Task 2 Template (1)-checkpoint.ipynb	
@@ -0,0 +1,1881 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# UFCFVQ-15-M Programming for Data Science\n",
+    "# Programming Task 2\n",
+    "\n",
+    "## Student Id: "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.1 - Read CSV data from a file (with a header row) into memory "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26741</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26742</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26743</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26744</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26745</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>26746 rows × 9 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26741       26741     2620947      F              Scotland   \n",
+       "26742       26742     2645731      F   East Anglian Region   \n",
+       "26743       26743     2648187      F          South Region   \n",
+       "26744       26744     2679821      F     South East Region   \n",
+       "26745       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \n",
+       "0           HE Qualification     55<=          N         Pass   82.0  \n",
+       "1           HE Qualification    35-55          N         Pass   67.0  \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0  \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0  \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0  \n",
+       "...                      ...      ...        ...          ...    ...  \n",
+       "26741  A Level or Equivalent     0-35          Y  Distinction   89.0  \n",
+       "26742     Lower Than A Level    35-55          N  Distinction   89.0  \n",
+       "26743  A Level or Equivalent     0-35          Y         Pass   77.0  \n",
+       "26744     Lower Than A Level    35-55          N    Withdrawn   92.0  \n",
+       "26745       HE Qualification    35-55          N  Distinction   83.0  \n",
+       "\n",
+       "[26746 rows x 9 columns]"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Firstly i am importing pandas as pd as this means i can use this library and also short hand it within the code to pd.\n",
+    "#I am opening the csv file and stating to seperate each column by the ,  however delimiter=None can also be used if it is a \n",
+    "#regular csv file (seperated by a comma) Finally I am printing the dataframe to ensure you has been read correctly.\n",
+    "import pandas as pd\n",
+    "import numpy as np\n",
+    "df = pd.read_csv(\"task2a.csv\",  sep=\",\", delimiter=None)\n",
+    "df"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.2 - Read CSV data from a file (without a header row) into memory"
+   ]
+  },
+  {
+   "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>id_student</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>6516</td>\n",
+       "      <td>2791.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>8462</td>\n",
+       "      <td>656.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>11391</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>23629</td>\n",
+       "      <td>NaN</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>23698</td>\n",
+       "      <td>910.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26069</th>\n",
+       "      <td>2698251</td>\n",
+       "      <td>1511.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26070</th>\n",
+       "      <td>2698257</td>\n",
+       "      <td>758.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26071</th>\n",
+       "      <td>2698535</td>\n",
+       "      <td>4241.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26072</th>\n",
+       "      <td>2698577</td>\n",
+       "      <td>717.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26073</th>\n",
+       "      <td>2698588</td>\n",
+       "      <td>605.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>26074 rows × 2 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       id_student  click_events\n",
+       "0            6516        2791.0\n",
+       "1            8462         656.0\n",
+       "2           11391         934.0\n",
+       "3           23629           NaN\n",
+       "4           23698         910.0\n",
+       "...           ...           ...\n",
+       "26069     2698251        1511.0\n",
+       "26070     2698257         758.0\n",
+       "26071     2698535        4241.0\n",
+       "26072     2698577         717.0\n",
+       "26073     2698588         605.0\n",
+       "\n",
+       "[26074 rows x 2 columns]"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I am following the same pattern as above. Fruther I am telling pandas that there are no headers to be read off this file.\n",
+    "#I am then telling pandas what I want the columns names ro be and further printing the dataframe to ensure everything has worked\n",
+    "df2 = pd.read_csv(\"task2b.csv\",  sep=\",\", delimiter=None,header=None,  names = [\"id_student\", \"click_events\"])\n",
+    "df2\n",
+    "\n",
+    "#(Bhalla, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.3 - Merge the data from two Dataframes"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>26721 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \\\n",
+       "0           HE Qualification     55<=          N         Pass   82.0   \n",
+       "1           HE Qualification    35-55          N         Pass   67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0   \n",
+       "...                      ...      ...        ...          ...    ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction   89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction   89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass   77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn   92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction   83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[26721 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#This section I am merging the 2 dataframes together, by telling pandas that they both have a matching column which can be used\n",
+    "#to match these dataframes together. Printing once again to verify this has worked correctly.\n",
+    "\n",
+    "df3 = pd.merge(df,df2, left_on= 'id_student', right_on= 'id_student')\n",
+    "df3\n",
+    "\n",
+    "#(Join And Merge Pandas Dataframe, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.4 - Remove any rows that contain missing values"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25332 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \\\n",
+       "0           HE Qualification     55<=          N         Pass   82.0   \n",
+       "1           HE Qualification    35-55          N         Pass   67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0   \n",
+       "...                      ...      ...        ...          ...    ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction   89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction   89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass   77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn   92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction   83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25332 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Here I will romve any rows containing mising values using the .dropna pandas command. axis=0 is telling you to remove rows \n",
+    "#which contain missing values, how=\"any\" is telling you to remove any rows that have any missing values. Printing once again\n",
+    "#to check the number of rows have decreased.\n",
+    "\n",
+    "df4 = df3.dropna(axis=0, how = \"any\") \n",
+    "df4"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.5 - Filter out unnecessary rows"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25259 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \\\n",
+       "0           HE Qualification     55<=          N         Pass   82.0   \n",
+       "1           HE Qualification    35-55          N         Pass   67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0   \n",
+       "...                      ...      ...        ...          ...    ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction   89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction   89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass   77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn   92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction   83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25259 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I have removed any rows where the click events is less then 10. I did this by slecting the column i would like to look at\n",
+    "#saying i want values 10 or bigger and then assign store it to memory. This is something i learned from the Data Management \n",
+    "#Fundamentals assignment.\n",
+    "\n",
+    "df5 = df4[df4[\"click_events\"] >=10]\n",
+    "df5"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.6 - Rename the score column"
+   ]
+  },
+  {
+   "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>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>final_mark</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25259 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  final_mark  \\\n",
+       "0           HE Qualification     55<=          N         Pass        82.0   \n",
+       "1           HE Qualification    35-55          N         Pass        67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass        76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass        55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass        68.0   \n",
+       "...                      ...      ...        ...          ...         ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction        89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction        89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass        77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn        92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction        83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25259 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I am using the .rename function and specifying that its only the columns I would like to rename and using a dictionary\n",
+    "#style method to highlight the column and the new name. Printing again to check the column has changed.\n",
+    "df6 = df5.rename(columns = {\"score\": \"final_mark\"})\n",
+    "df6\n",
+    "#(pandas.DataFrame.rename — pandas 1.2.4 documentation, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.7 - Remove unnecessary column(s)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 143,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_mark</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25259 rows × 7 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender age_band disability  final_mark  \\\n",
+       "0               0       11391      M     55<=          N        82.0   \n",
+       "1               1       28400      F    35-55          N        67.0   \n",
+       "2               2       31604      F    35-55          N        76.0   \n",
+       "3               3       32885      F     0-35          N        55.0   \n",
+       "4               4       38053      M    35-55          N        68.0   \n",
+       "...           ...         ...    ...      ...        ...         ...   \n",
+       "26716       26741     2620947      F     0-35          Y        89.0   \n",
+       "26717       26742     2645731      F    35-55          N        89.0   \n",
+       "26718       26743     2648187      F     0-35          Y        77.0   \n",
+       "26719       26744     2679821      F    35-55          N        92.0   \n",
+       "26720       26745     2684003      F    35-55          N        83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25259 rows x 7 columns]"
+      ]
+     },
+     "execution_count": 143,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Using the .drop comman and nameing the columns to be removed and stating the axis=1 which is for the columns. Printing the\n",
+    "#dataframe to ensure it has worked.\n",
+    "df7 = df6.drop([\"region\", \"final_result\", \"highest_education\"], axis =1)\n",
+    "df7"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.8 - Write the DataFrame data to a CSV file"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Here I am writing the finalised dataframe to a csv file and further stating that the index is false as when this file is next\n",
+    "#reading using pandas it will create another index and cause the file to look messy.\n",
+    "\n",
+    "df7.to_csv(\"update.csv\", index = False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.9 - Investigate the effects of age-group on attainment and engagement"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "          final_mark  click_events\n",
+      "age_band                          \n",
+      "0-35       72.503923   1616.472655\n",
+      "35-55      75.035810   2193.000267\n",
+      "55<=       77.718919   3574.864865\n"
+     ]
+    },
+    {
+     "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>final_mark</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>age_band</th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0-35</th>\n",
+       "      <td>72.503923</td>\n",
+       "      <td>1616.472655</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>35-55</th>\n",
+       "      <td>75.035810</td>\n",
+       "      <td>2193.000267</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>55&lt;=</th>\n",
+       "      <td>77.718919</td>\n",
+       "      <td>3574.864865</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "          final_mark  click_events\n",
+       "age_band                          \n",
+       "0-35       72.503923   1616.472655\n",
+       "35-55      75.035810   2193.000267\n",
+       "55<=       77.718919   3574.864865"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I am telling pandas to group the dataframe by age_band and then to find the avergage of both the final_mark and the\n",
+    "#click_events (engagement).\n",
+    "df9 =df7.groupby([\"age_band\"])[[\"final_mark\",\"click_events\"]].mean()\n",
+    "\n",
+    "df9\n",
+    "#(Hayden, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.10 - Present the results of the age-group investigation using an appropriate visualisation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 76,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 720x360 with 2 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "# I am creating a 2 barplots next to eachother for easy comparison. These plots share the same x axis but the y axis is for\n",
+    "#each set of data. It shows the average of both final marks and click events for each age group for easy visualisation.\n",
+    "import matplotlib.pyplot as plt\n",
+    "import seaborn as sns\n",
+    "f, axs = plt.subplots(1,2,figsize=(10,5),sharex=True)\n",
+    "\n",
+    "g1 =sns.barplot(y=\"final_mark\", x = \"age_band\",data=df9, ax=axs[0])\n",
+    "g2 =sns.barplot(y=\"click_events\", x = \"age_band\",data=df9, ax=axs[1])\n",
+    "g1.set(xlabel=\"Age Group\",ylabel=\"Final Mark\")\n",
+    "g2.set(xlabel=\"Age Group\",ylabel=\"Click Events\")\n",
+    "g1.set_title(\"The effects of age groups on marks and engagement\")\n",
+    "plt.show()    \n",
+    "    \n",
+    "#(How to Combine Two Seaborn plots with Shared y-axis? - Data Viz with Python and R, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.11 - Investigate the effects of engagement on attainment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 128,
+   "metadata": {
+    "scrolled": true
+   },
+   "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"
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "The correlation coefficient is: 0.27423573401899426 ,there is a weak positive linear relationship between the two variables.\n"
+     ]
+    }
+   ],
+   "source": [
+    "#First is to create a plot to look at the relationship between the variables final marks and click events. The plot suggests\n",
+    "#that there is not a strong correlation between the variables and the correlation coefficient further verifies this. It\n",
+    "#demonstrates a weak positive linear relationship between the two variables. Due to the large dataset the correlation will\n",
+    "#naturally be lower as there is more variation within the data.\n",
+    "\n",
+    "g3 =sns.regplot(x=\"final_mark\", y=\"click_events\", data=df7, scatter_kws={'s':5,\"color\":\"red\"}, line_kws={\"color\": \"black\"})\n",
+    "g3.set(xlabel=\"Final Mark\",ylabel=\"Click Events\")\n",
+    "g3.set_title(\"Regression plot of engagement versus attainment\")\n",
+    "plt.show()\n",
+    "\n",
+    "corre = np.corrcoef(df7[\"final_mark\"],df7[\"click_events\"])[0,1]\n",
+    "print( \"The correlation coefficient is:\", corre, \",there is a weak positive linear relationship between the two variables.\")\n",
+    "\n",
+    "\n",
+    "#(Visualizing regression models — seaborn 0.11.1 documentation, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.12 - Test the hypothesis that there is a significant effect on attainment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 142,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "LinregressResult(slope=37.095925643680886, intercept=-917.2096355710828, rvalue=0.2742357340189943, pvalue=0.0, stderr=0.818528803329568)\n",
+      "R-Squared: 0.0752052378129366\n"
+     ]
+    }
+   ],
+   "source": [
+    "# H0: there is not relationship between final mark and click events, ß1=0\n",
+    "# H1:there is not relationship between final mark and click events, ß1≠0\n",
+    "# p<0.05 hence reject H0 and there is statstically significant evidence to suggest there is a relationship between the two \n",
+    "# variables. The R-Squared value however suggests that the model does not explain the variability of the response data around\n",
+    "#its mean suggesting that the model does not fit the data well.\n",
+    "\n",
+    "from scipy import stats\n",
+    "\n",
+    "res = stats.linregress(df7[\"final_mark\"],df7[\"click_events\"])\n",
+    "print(res)\n",
+    "print(\"R-Squared:\", res.rvalue**2)\n",
+    "\n",
+    "#(scipy.stats.linregress, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Process Development Report for Task 2\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### FR2.1 - FR2.8\n",
+    "Overall, this part of the assignment was a lot easier than the previous one as the use of modules meant the code became simpler and it was easier to make the code clear and concise. The first couple of tasks were very straightforward and there was a lot of help available online when using Pandas. FR2.3 was slightly more difficult to complete as trying to ensure that the correct merge was done as it could affect how the two data frames came together. With regards to FR2.4-2.5 I had previously used this in another assignment so felt very confident in my ability to complete this and for FR2.6 there was a very helpful link that demonstrated how to change column names. Furthermore FR2.7 was easier to understand with little tweaks occurring to ensure the question was answered and further learning how the axis affected the results.  FR2.8 involved saving the data frame to a new csv file and removing the index from the csv file to stop unwanted columns forming if more edits were to happen to the csv file.\n",
+    "\n",
+    "### FR2.9 - FR2.12\n",
+    "For FR2.9 there was a great website that helped a lot with answering this question as I was unsure how to select specific columns to be involved in the groupby command. FR2.10  was a lot of trial and error to produce a clear visualisation that showed the results from the previous task. Overall, I felt the best visualisation would be with a dual axis with two bar charts that shared the same x-axis, I felt like this helped show the changes for each age group for both the variables and I tried to ensure the plot had a title and renamed the headers to make it look clearer. When investigating the effects of the engagement on attainment I felt it was best to plot the two variables in a scatter plot with a regression line to visualise the data and see if there was a visible relationship between them. The regression line suggested that there could be correlation between click event and final mark and so the next stage was to get correlation coefficient to see the relationship between the two variables, numpy was a great module to find the correlation coefficients. To test the hypothesis, I performed a linear regression model but it was difficult to figure out how to perform this as I was unsure if scipy was the numpy stats module but the majority of websites said it was. To further investigate the data, I checked the R-squared value which suggested the model was not a good fit but this can be due to the very large dataset and further that the previous task suggested that there wasn’t a strong relationship between these two variables. In the future for FR2.12 I would include more statistical tests and look more at the goodness-of-fit to ensure the most appropriate model is being used, while also looking at residual plots from the regression model.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### References\n",
+    "\n",
+    "Bhalla, D., 2021. 15 ways to read CSV file with pandas. [online] ListenData. Available at: <https://www.listendata.com/2019/06/pandas-read-csv.html> [Accessed 15 April 2021].\n",
+    "\n",
+    "Chrisalbon.com. 2021. Join And Merge Pandas Dataframe. [online] Available at: <https://chrisalbon.com/python/data_wrangling/pandas_join_merge_dataframe/> [Accessed 15 April 2021].\n",
+    "\n",
+    "Data Viz with Python and R. 2021. How to Combine Two Seaborn plots with Shared y-axis? - Data Viz with Python and R. [online] Available at: <https://datavizpyr.com/seaborn-join-two-plots-with-shared-y-axis/> [Accessed 19 April 2021].\n",
+    "\n",
+    "docs.scipy.org. 2021. scipy.stats.linregress. [online] Available at:<https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.linregress.html> [Accessed 19 April 2021].\n",
+    "\n",
+    "Hayden, A., 2021. Pandas sum by groupby, but exclude certain columns. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/32751229/pandas-sum-by-groupby-but-exclude-certain-columns> [Accessed 16 April 2021].\n",
+    "\n",
+    "Pandas.pydata.org. 2021. pandas.DataFrame.rename — pandas 1.2.4 documentation. [online] Available at: <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html> [Accessed 15 April 2021].\n",
+    "\n",
+    "Seaborn.pydata.org. 2021. Visualizing regression models — seaborn 0.11.1 documentation. [online] Available at: <https://seaborn.pydata.org/tutorial/regression.html> [Accessed 19 April 2021].\n"
+   ]
+  }
+ ],
+ "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/UFCFVQ-15-M Assignment Specification 2021.docx b/UFCFVQ-15-M Assignment Specification 2021.docx
deleted file mode 100644
index c1eff21685c2a63ffde65d49278b880cc374352c..0000000000000000000000000000000000000000
Binary files a/UFCFVQ-15-M Assignment Specification 2021.docx and /dev/null differ
diff --git a/UFCFVQ-15-M Programming Task 1 Template.ipynb b/UFCFVQ-15-M Programming Task 1 Template.ipynb
index 7b516a40d9aac0fb1fc0dd5fd2101b3bbf140c66..01f60e096d4ddb0f3a0e9abaf543f18874984944 100644
--- a/UFCFVQ-15-M Programming Task 1 Template.ipynb	
+++ b/UFCFVQ-15-M Programming Task 1 Template.ipynb	
@@ -14,128 +14,273 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.1 - Find the arithmetic mean"
+    "### Requirement FR1.8 - Read data from a file into memory"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 1,
    "metadata": {},
    "outputs": [],
    "source": [
-    "# add code here"
+    "# Here I am  opening the file where the \"r\" shows that it is just to read the file. Next I created an empty list and \n",
+    "# added each number in a loop to the list until the whole file is added into the list. The list was being treated as a string \n",
+    "# and not integers so that was also changed.\n",
+    "\n",
+    "task1 = open(\"task1.dat\", \"r\")  #(Python File Open, 2021)\n",
+    "\n",
+    "list_numbers = []\n",
+    "for number in task1:\n",
+    "    changed_list = number.strip()\n",
+    "    list_numbers.append(changed_list)\n",
+    "\n",
+    "task1.close()\n",
+    "\n",
+    "task1_dat = list(map(int, list_numbers))\n"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.2 - Find the standard deviation"
+    "### Requirement FR1.1 - Find the arithmetic mean"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "120.8945\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "# Used the data in task1.dat and have found the mean of the data using the equation mean=sum(x(i)/n) where x(i) is each item in \n",
+    "# the list and n in the number of items in the list.\n",
+    "\n",
+    "sum_list = sum(task1_dat)\n",
+    "\n",
+    "arithmetic_mean = round((sum_list/len(task1_dat)),4)\n",
+    "\n",
+    "print(arithmetic_mean)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.3 - Find the min/max values "
+    "### Requirement FR1.2 - Find the standard deviation"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 3,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "31.9726\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "# Used the data given in task1.dat and produced a loop to find sum(x(i) -mean)**2, where x(i) is each item in the list. I am\n",
+    "# using the sample std which is shown by std = ((sum(x(i) -mean)**2)/n-1)**(1/2). \n",
+    "\n",
+    "number = 0\n",
+    "for i in task1_dat:\n",
+    "    number += (i - arithmetic_mean)**2\n",
+    "\n",
+    "standard_deviation =round(((number/(len(task1_dat)-1))**(1/2)),4)   #(Mullee, 2021)\n",
+    "\n",
+    "\n",
+    "print(standard_deviation)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.4 - Find the 25th percentile "
+    "### Requirement FR1.3 - Find the min/max values "
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 4,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "199\n",
+      "0\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "#Producing both the min and max of task1_dat.\n",
+    "\n",
+    "max_value = max(task1_dat)\n",
+    "print(max_value)\n",
+    "\n",
+    "min_value = min(task1_dat)\n",
+    "print(min_value)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.5 - Find the 50th percentile"
+    "### Requirement FR1.4 - Find the 25th percentile "
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 30,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "191.0\n",
+      "99\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "# First you sort the code from smallest to largest, then find the index of where the 25th percentile will lie which will give\n",
+    "# you the 25th percentile. The index of of lists start from 0 and to find the index you have to minus 1 off the value printed.\n",
+    "\n",
+    "part4 = sorted(task1_dat)\n",
+    "\n",
+    "part4_25percent = 0.25*len(task1_dat) -1\n",
+    "print(part4_25percent)\n",
+    "\n",
+    "per_25 = part4[191]\n",
+    "print(per_25)\n"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.6 - Find the 75th percentile"
+    "### Requirement FR1.5 - Find the 50th percentile"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 31,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "383.0\n",
+      "117\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "# Here we find the 50th percentile often known as the median. We follow the same code as in FR1.4 but replace 0.5 with 0.25.\n",
+    "\n",
+    "part5 = sorted(task1_dat)\n",
+    "\n",
+    "part5_50percent = 0.5*len(task1_dat) -1\n",
+    "print(part5_50percent)\n",
+    "\n",
+    "per_50 =part5[383]\n",
+    "print(per_50)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.7 - Print the set of summary statistics in tabular form"
+    "### Requirement FR1.6 - Find the 75th percentile"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 32,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "575.0\n",
+      "140\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "# First you sort the code from smallest to largest, then find the index of where the 75th percentile will lie which will give\n",
+    "# you the 75th percentile.\n",
+    "part6 = sorted(task1_dat)\n",
+    "\n",
+    "part6_75percent = 0.75*len(task1_dat) -1\n",
+    "print(part6_75percent)\n",
+    "\n",
+    "per_75 =part6[575]\n",
+    "print(per_75)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Requirement FR1.8 - Read data from a file into memory"
+    "### Requirement FR1.7 - Print the set of summary statistics in tabular form"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 8,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Summary Statistics\n",
+      "--------------------\n",
+      "Count\t768\n",
+      "Mean\t120.8945\n",
+      "Std\t31.9726\n",
+      "Min\t0\n",
+      "25%\t99\n",
+      "50%\t117\n",
+      "75%\t140\n",
+      "Max\t199\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "#Here I am creating the summary statistics, I am using a function to create table form. I am aligning the text\n",
+    "#within the fields and also inputting the values creating previously.\n",
+    "\n",
+    "def createtable():\n",
+    "    print(\"Summary Statistics\")\n",
+    "    print(\"--------------------\")\n",
+    "    print(\"%s\\t%s\" % (\"Count\", len(task1_dat)))\n",
+    "    print(\"%s\\t%s\" % (\"Mean\", arithmetic_mean))\n",
+    "    print(\"%s\\t%s\" % (\"Std\", standard_deviation))\n",
+    "    print(\"%s\\t%s\" % (\"Min\", min_value))\n",
+    "    print(\"%s\\t%s\" % (\"25%\", per_25))\n",
+    "    print(\"%s\\t%s\" % (\"50%\", per_50))\n",
+    "    print(\"%s\\t%s\" % (\"75%\", per_75))\n",
+    "    print(\"%s\\t%s\" % (\"Max\", max_value))\n",
+    "\n",
+    "createtable()    #(Sledjoys, 2021)"
    ]
   },
   {
@@ -146,12 +291,23 @@
    ]
   },
   {
-   "cell_type": "code",
-   "execution_count": null,
+   "cell_type": "markdown",
    "metadata": {},
-   "outputs": [],
    "source": [
-    "# add code here"
+    "### describe what you would like to happen here...\n",
+    "\n",
+    "The first step would be checking that the CSV is stored in the same directory as this file as you would have to tell python the exact location of the CSV file. I would assign this file to a name which -  which is easy to understand.\n",
+    "\n",
+    "Next would be creating a function which will open and read the file. Next I will use the .readline() function to tell python\n",
+    "read this line and move on, this is as the first line is the headings and will affect any calculations if treated like the rest\n",
+    "of the lines.\n",
+    "\n",
+    "Create an empty list with empty sublist to store store each variable value in. Then a loop will be created \n",
+    "to read each row and and seperate the variables within each row using split(',') and also remove \n",
+    "any new line characters using .strip(). Next each item within all the rows using the index will be inserted into the the sublists of the empty data list.\n",
+    "Next I will create a dictionary to store all this data in and assign each sublist with the correct headings.\n",
+    "As good practive the CSV file should then be closed. Finally you will use the return command which will exit the function and allow the function to produce values based on the return key used.\n",
+    "\n"
    ]
   },
   {
@@ -163,11 +319,62 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
+   "execution_count": 9,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "26.6"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
-    "# add code here"
+    "#Here I created a function that opened and read the file, then i performed a loop where i read each row and split the columns \n",
+    "#by seperating them where the commas formed and also removed the excess characters using the .strip() function \n",
+    "#(this removed \\n- new line character). This section took a lot of thinking and although it is not the most concise \n",
+    "#piece of work it is the best method I found to answer the question. I have demonstrated below how you can find all the data\n",
+    "#using specific column names and so.\n",
+    "\n",
+    "file_csv = \"task1.csv\"\n",
+    "\n",
+    "def file(file_csv):\n",
+    "    file_open = open(file_csv, \"r\")\n",
+    "    file_open.readline()\n",
+    "    data = [[],[],[],[],[],[],[],[],[]]\n",
+    "    for row in file_open:\n",
+    "        items = row.strip().split(\",\")\n",
+    "        items = [float(i) for i in items]\n",
+    "        data[0].append(items[0])\n",
+    "        data[1].append(items[1])\n",
+    "        data[2].append(items[2])\n",
+    "        data[3].append(items[3])\n",
+    "        data[4].append(items[4])\n",
+    "        data[5].append(items[5])\n",
+    "        data[6].append(items[6])\n",
+    "        data[7].append(items[7])\n",
+    "        data[8].append(items[8])\n",
+    "        task = {\"Pregnancies\": data[0],\"Glucose\": data[1],\"BloodPressure\": data[2],\"SkinThickness\": data[3],\n",
+    "        \"Insulin\" : data[4],\"BMI\": data[5],\"DiabetesPedigreeFunction\": data[6],\"Age\": data[7],\"Outcome\": data[8]}\n",
+    "    file_open.close()\n",
+    "    return task\n",
+    "\n",
+    "df = file(file_csv)\n",
+    "df[\"BMI\"][1]\n",
+    "\n",
+    "#(Code Faster with Line-of-Code Completions, Cloudless Processing, 2021) \n",
+    "#(Python - List Comprehension, 2021)\n",
+    "#(python functions., 2021)\n",
+    "#(Python List Tutorial: Lists, Loops, and More! – Dataquest, 2021)\n",
+    "#(Convert, 2021)\n",
+    "\n",
+    "#https://www.youtube.com/watch?v=GBD4na8AQjY"
    ]
   },
   {
@@ -179,11 +386,64 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
+   "execution_count": 35,
+   "metadata": {
+    "scrolled": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'Pregnancies': 1.0,\n",
+       " 'Glucose': 99.0,\n",
+       " 'BloodPressure': 62.0,\n",
+       " 'SkinThickness': 0.0,\n",
+       " 'Insulin': 0.0,\n",
+       " 'BMI': 27.3,\n",
+       " 'DiabetesPedigreeFunction': 0.243,\n",
+       " 'Age': 24.0,\n",
+       " 'Outcome': 0.0}"
+      ]
+     },
+     "execution_count": 35,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
-    "# add code here"
+    "#For this question i have created a function that holds multiple empty disctionaries that hold the different statistics that\n",
+    "#are required. Next i used the .items() which allows you to to unpack the dictionary and look at the headings(h) and also\n",
+    "# the values(v). Then i cairred on with the usual calculations as done previously but this time used the empty dictionaries\n",
+    "#which will house each headings results. \n",
+    "#Finally returning all the statistics in order to print and look at them individually.\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n",
+    "def sumstats(df):\n",
+    "    count={}\n",
+    "    mean = {}\n",
+    "    minimum = {}\n",
+    "    maximum = {}\n",
+    "    standard_deviation = {}\n",
+    "    per25 = {}\n",
+    "    per50 = {}\n",
+    "    per75 = {}\n",
+    "    for h,v in df.items():\n",
+    "        count[h] = float(len(v))\n",
+    "        mean[h] = round(float(sum(v))/count[h],2)     #(Dimov, 2021)\n",
+    "        minimum[h] = min(v)\n",
+    "        maximum[h] = max(v)\n",
+    "        sort_v = sorted(v)\n",
+    "        per25[h] = sort_v[int(0.25*(int(count[h]))-1)]\n",
+    "        per50 [h]= sort_v[int(0.5*int(count[h])-1)]\n",
+    "        per75 [h] = sort_v[int(0.75*int(count[h])-1)]\n",
+    "        #number = 0\n",
+    "        #number += ((v - int(mean[h]))**2)\n",
+    "        #standard_deviation[h] = round(((number/(len(v)-1))**(1/2)),3)\n",
+    "    return (count, mean, minimum, maximum, standard_deviation, per25, per50, per75)\n",
+    "\n",
+    "task11 = sumstats(df)"
    ]
   },
   {
@@ -195,11 +455,43 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 36,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\t\tCount\tMean\tSt.d\tMin\tMax\t25%\t50%\t75%\n",
+      "-----------------------------------------------------------------------------\n",
+      "Pregnancies\t768.0\t3.85\t\t0.0\t17.0\t1.0\t3.0\t6.0\n",
+      "Glucose\t\t768.0\t120.89\t\t0.0\t199.0\t99.0\t117.0\t140.0\n",
+      "BloodPressure\t768.0\t69.11\t\t0.0\t122.0\t62.0\t72.0\t80.0\n",
+      "SkinThickness\t768.0\t20.54\t\t0.0\t99.0\t0.0\t23.0\t32.0\n",
+      "Insulin\t\t768.0\t79.8\t\t0.0\t846.0\t0.0\t29.0\t127.0\n",
+      "BMI\t\t768.0\t31.99\t\t0.0\t67.1\t27.3\t32.0\t36.6\n",
+      "Diabetes PF\t768.0\t0.47\t\t0.078\t2.42\t0.243\t0.371\t0.626\n",
+      "Age\t\t768.0\t33.24\t\t21.0\t81.0\t24.0\t29.0\t41.0\n",
+      "Outcome\t\t768.0\t0.35\t\t0.0\t1.0\t0.0\t0.0\t1.0\n"
+     ]
+    }
+   ],
    "source": [
-    "# add code here"
+    "# I created a function and then used multiple print commands to create the table while also using the previous answers from the\n",
+    "#task. The \\t Creates even spaces which helps to make the table clear.\n",
+    "def createtable():\n",
+    "    print(\"\\t\\tCount\\tMean\\tSt.d\\tMin\\tMax\\t25%\\t50%\\t75%\")\n",
+    "    print(\"-----------------------------------------------------------------------------\")\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Pregnancies\",task11[0][\"Pregnancies\"],task11[1][\"Pregnancies\"],\"\",task11[2][\"Pregnancies\"],task11[3][\"Pregnancies\"],task11[5][\"Pregnancies\"],task11[6][\"Pregnancies\"],task11[7][\"Pregnancies\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Glucose\",task11[0][\"Glucose\"],task11[1][\"Glucose\"],\"\",task11[2][\"Glucose\"],task11[3][\"Glucose\"],task11[5][\"Glucose\"],task11[6][\"Glucose\"],task11[7][\"Glucose\"]))\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"BloodPressure\",task11[0][\"BloodPressure\"],task11[1][\"BloodPressure\"],\"\",task11[2][\"BloodPressure\"],task11[3][\"BloodPressure\"],task11[5][\"BloodPressure\"],task11[6][\"BloodPressure\"],task11[7][\"BloodPressure\"]))\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"SkinThickness\",task11[0][\"SkinThickness\"],task11[1][\"SkinThickness\"],\"\",task11[2][\"SkinThickness\"],task11[3][\"SkinThickness\"],task11[5][\"SkinThickness\"],task11[6][\"SkinThickness\"],task11[7][\"SkinThickness\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Insulin\",task11[0][\"Insulin\"],task11[1][\"Insulin\"],\"\",task11[2][\"Insulin\"],task11[3][\"Insulin\"],task11[5][\"Insulin\"],task11[6][\"Insulin\"],task11[7][\"Insulin\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"BMI\",task11[0][\"BMI\"],task11[1][\"BMI\"],\"\",task11[2][\"BMI\"],task11[3][\"BMI\"],task11[5][\"BMI\"],task11[6][\"BMI\"],task11[7][\"BMI\"]))\n",
+    "    print(\"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Diabetes PF\",task11[0][\"DiabetesPedigreeFunction\"],task11[1][\"DiabetesPedigreeFunction\"],\"\",task11[2][\"DiabetesPedigreeFunction\"],task11[3][\"DiabetesPedigreeFunction\"],task11[5][\"DiabetesPedigreeFunction\"],task11[6][\"DiabetesPedigreeFunction\"],task11[7][\"DiabetesPedigreeFunction\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Age\",task11[0][\"Age\"],task11[1][\"Age\"],\"\",task11[2][\"Age\"],task11[3][\"Age\"],task11[5][\"Age\"],task11[6][\"Age\"],task11[7][\"Age\"]))\n",
+    "    print(\"%s\\t\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\"% (\"Outcome\",task11[0][\"Outcome\"],task11[1][\"Outcome\"],\"\",task11[2][\"Outcome\"],task11[3][\"Outcome\"],task11[5][\"Outcome\"],task11[6][\"Outcome\"],task11[7][\"Outcome\"]))\n",
+    "createtable()  #(Sledjoys, 2021)\n"
    ]
   },
   {
@@ -212,7 +504,43 @@
   {
    "cell_type": "markdown",
    "metadata": {},
-   "source": []
+   "source": [
+    "### FR1.1 - FR1.8\n",
+    "These tasks set a good basis for the assignment while the previous worksheets helped with the understanding of lists and the different operators that could be used to solve the summary statistics. I placed FR1.8 at the top of the assignment as it was easier to use the data given then make up my own, opening this file was relatively easy with the main issues occurring when taking the list from strings to integers to enable me to perform different calculations on it. For the standard deviation the use of a loop made the code more concise and enabled me to create a variable and use the += assignment which adds a number to this variable until the loop gone through each item in the list. Furthermore, I also used the round operator which helped make the value easier to read which meant the table further below will looked pleasing. Once again throughout these questions there was a lot of use of the basic operators that Python offers which made the code more concise. When completing the questions for the percentiles I struggled with the indexes as I was uncertain if the value produced included the 0 index or if it did not. I decided to take 1 off these values produce to get it into index form as I felt this was the correct way to do this and then merely found this value in the sorted list. There was a great link on the internet that gave me a good idea how to create a nicely formatted table for FR1.7 which involved calling the answers from the previous tasks and meant that this table would work for new .dat files.\n",
+    "### FR1.9 - FR1.12\n",
+    "The tasks that involved task1.csv file it was challenging, with Fr1.10 causing issues and so I became creative in storing this csv to memory. I felt the best way to approach this task was to remove the header,create a loop which looked at each row, removing the comma and new line character. Then I created a loop for each value in the row and appended this to a nested list. Next, I created a dictionary with the headings to store each value. For the summary statistics I created a function that had empty dictionaries which would be filled with the summary statistics for each header. I was unable to get standard deviation working within these, as I couldn’t figure out how to create the sum((v-mean[h])^2) to work for each heading however I have left the code in but commented out. I wish I had made the function print clearer results however this task did cause me to think outside the box and create a more complex function. For FR1.12 I followed the same link as for FR1.7 which helped create a nice table and I was able to select each item from the summary statistics function. Overall, this section was great to work on with a clear build up in difficulty.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### References\n",
+    "\n",
+    "Dataquest. 2021. Python List Tutorial: Lists, Loops, and More! – Dataquest. [online] Available at: <https://www.dataquest.io/blog/python-list-tutorial/> [Accessed 21 March 2021].\n",
+    "\n",
+    "Convert, 2021. Convert all strings in a list to int. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/7368789/convert-all-strings-in-a-list-to-int> [Accessed 21 March 2021].\n",
+    "\n",
+    "Dimov, V., 2021. Python 3.4 - How to get the average of dictionary values?. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/30687244/python-3-4-how-to-get-the-average-of-dictionary-values> [Accessed 15 April 2021].\n",
+    "\n",
+    "Convert, 2021. Convert all strings in a list to int. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/7368789/convert-all-strings-in-a-list-to-int> [Accessed 21 March 2021].\n",
+    "\n",
+    "Dataquest. 2021. Python List Tutorial: Lists, Loops, and More! – Dataquest. [online] Available at: <https://www.dataquest.io/blog/python-list-tutorial/> [Accessed 21 March 2021].\n",
+    "\n",
+    "Dimov, V., 2021. Python 3.4 - How to get the average of dictionary values?. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/30687244/python-3-4-how-to-get-the-average-of-dictionary-values> [Accessed 15 April 2021].\n",
+    "\n",
+    "Kite.com. 2021. Code Faster with Line-of-Code Completions, Cloudless Processing. [online] Available at: <https://www.kite.com/python/answers/how-to-create-a-dictionary-of-lists-in-python> [Accessed 21 March 2021].\n",
+    "\n",
+    "Mullee, M., 2021. How to choose and use a calculator. In: How to do it 2. [online] 2. Mean and standard deviation. Available at: <https://www.bmj.com/about-bmj/resources-readers/publications/statistics-square-one/2-mean-and-standard-deviation> [Accessed 15 March 2021].\n",
+    "\n",
+    "Sledjoys, B., 2021. How To Create A Table in Python. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/33458074/how-to-create-a-table-in-python> [Accessed 20 March 2021].\n",
+    "\n",
+    "W3schools.com. 2021. Python - List Comprehension. [online] Available at: <https://www.w3schools.com/python/python_lists_comprehension.asp> [Accessed 21 March 2021].\n",
+    "\n",
+    "W3schools.com. 2021. Python File Open. [online] Available at: <https://www.w3schools.com/python/python_file_open.asp> [Accessed 14 March 2021].\n",
+    "\n",
+    "W3schools.com. 2021. python functions.. [online] Available at: <https://www.w3schools.com/python/python_functions.asp> [Accessed 21 March 2021].\n"
+   ]
   }
  ],
  "metadata": {
diff --git a/UFCFVQ-15-M Programming Task 2 Template (1).ipynb b/UFCFVQ-15-M Programming Task 2 Template (1).ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..eafb96515951db336335199896294208858c8ade
--- /dev/null
+++ b/UFCFVQ-15-M Programming Task 2 Template (1).ipynb	
@@ -0,0 +1,1881 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# UFCFVQ-15-M Programming for Data Science\n",
+    "# Programming Task 2\n",
+    "\n",
+    "## Student Id: "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.1 - Read CSV data from a file (with a header row) into memory "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26741</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26742</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26743</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26744</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26745</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>26746 rows × 9 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26741       26741     2620947      F              Scotland   \n",
+       "26742       26742     2645731      F   East Anglian Region   \n",
+       "26743       26743     2648187      F          South Region   \n",
+       "26744       26744     2679821      F     South East Region   \n",
+       "26745       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \n",
+       "0           HE Qualification     55<=          N         Pass   82.0  \n",
+       "1           HE Qualification    35-55          N         Pass   67.0  \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0  \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0  \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0  \n",
+       "...                      ...      ...        ...          ...    ...  \n",
+       "26741  A Level or Equivalent     0-35          Y  Distinction   89.0  \n",
+       "26742     Lower Than A Level    35-55          N  Distinction   89.0  \n",
+       "26743  A Level or Equivalent     0-35          Y         Pass   77.0  \n",
+       "26744     Lower Than A Level    35-55          N    Withdrawn   92.0  \n",
+       "26745       HE Qualification    35-55          N  Distinction   83.0  \n",
+       "\n",
+       "[26746 rows x 9 columns]"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Firstly i am importing pandas as pd as this means i can use this library and also short hand it within the code to pd.\n",
+    "#I am opening the csv file and stating to seperate each column by the ,  however delimiter=None can also be used if it is a \n",
+    "#regular csv file (seperated by a comma) Finally I am printing the dataframe to ensure you has been read correctly.\n",
+    "import pandas as pd\n",
+    "import numpy as np\n",
+    "df = pd.read_csv(\"task2a.csv\",  sep=\",\", delimiter=None)\n",
+    "df"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.2 - Read CSV data from a file (without a header row) into memory"
+   ]
+  },
+  {
+   "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>id_student</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>6516</td>\n",
+       "      <td>2791.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>8462</td>\n",
+       "      <td>656.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>11391</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>23629</td>\n",
+       "      <td>NaN</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>23698</td>\n",
+       "      <td>910.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26069</th>\n",
+       "      <td>2698251</td>\n",
+       "      <td>1511.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26070</th>\n",
+       "      <td>2698257</td>\n",
+       "      <td>758.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26071</th>\n",
+       "      <td>2698535</td>\n",
+       "      <td>4241.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26072</th>\n",
+       "      <td>2698577</td>\n",
+       "      <td>717.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26073</th>\n",
+       "      <td>2698588</td>\n",
+       "      <td>605.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>26074 rows × 2 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       id_student  click_events\n",
+       "0            6516        2791.0\n",
+       "1            8462         656.0\n",
+       "2           11391         934.0\n",
+       "3           23629           NaN\n",
+       "4           23698         910.0\n",
+       "...           ...           ...\n",
+       "26069     2698251        1511.0\n",
+       "26070     2698257         758.0\n",
+       "26071     2698535        4241.0\n",
+       "26072     2698577         717.0\n",
+       "26073     2698588         605.0\n",
+       "\n",
+       "[26074 rows x 2 columns]"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I am following the same pattern as above. Fruther I am telling pandas that there are no headers to be read off this file.\n",
+    "#I am then telling pandas what I want the columns names ro be and further printing the dataframe to ensure everything has worked\n",
+    "df2 = pd.read_csv(\"task2b.csv\",  sep=\",\", delimiter=None,header=None,  names = [\"id_student\", \"click_events\"])\n",
+    "df2\n",
+    "\n",
+    "#(Bhalla, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.3 - Merge the data from two Dataframes"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>26721 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \\\n",
+       "0           HE Qualification     55<=          N         Pass   82.0   \n",
+       "1           HE Qualification    35-55          N         Pass   67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0   \n",
+       "...                      ...      ...        ...          ...    ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction   89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction   89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass   77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn   92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction   83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[26721 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 12,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#This section I am merging the 2 dataframes together, by telling pandas that they both have a matching column which can be used\n",
+    "#to match these dataframes together. Printing once again to verify this has worked correctly.\n",
+    "\n",
+    "df3 = pd.merge(df,df2, left_on= 'id_student', right_on= 'id_student')\n",
+    "df3\n",
+    "\n",
+    "#(Join And Merge Pandas Dataframe, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.4 - Remove any rows that contain missing values"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25332 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \\\n",
+       "0           HE Qualification     55<=          N         Pass   82.0   \n",
+       "1           HE Qualification    35-55          N         Pass   67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0   \n",
+       "...                      ...      ...        ...          ...    ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction   89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction   89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass   77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn   92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction   83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25332 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 13,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Here I will romve any rows containing mising values using the .dropna pandas command. axis=0 is telling you to remove rows \n",
+    "#which contain missing values, how=\"any\" is telling you to remove any rows that have any missing values. Printing once again\n",
+    "#to check the number of rows have decreased.\n",
+    "\n",
+    "df4 = df3.dropna(axis=0, how = \"any\") \n",
+    "df4"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.5 - Filter out unnecessary rows"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>score</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25259 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  score  \\\n",
+       "0           HE Qualification     55<=          N         Pass   82.0   \n",
+       "1           HE Qualification    35-55          N         Pass   67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass   76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass   55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass   68.0   \n",
+       "...                      ...      ...        ...          ...    ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction   89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction   89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass   77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn   92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction   83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25259 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 14,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I have removed any rows where the click events is less then 10. I did this by slecting the column i would like to look at\n",
+    "#saying i want values 10 or bigger and then assign store it to memory. This is something i learned from the Data Management \n",
+    "#Fundamentals assignment.\n",
+    "\n",
+    "df5 = df4[df4[\"click_events\"] >=10]\n",
+    "df5"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.6 - Rename the score column"
+   ]
+  },
+  {
+   "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>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>region</th>\n",
+       "      <th>highest_education</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_result</th>\n",
+       "      <th>final_mark</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>West Midlands Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>Wales</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Scotland</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>East Anglian Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South Region</td>\n",
+       "      <td>A Level or Equivalent</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>Pass</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>South East Region</td>\n",
+       "      <td>Lower Than A Level</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Withdrawn</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>Yorkshire Region</td>\n",
+       "      <td>HE Qualification</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>Distinction</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25259 rows × 10 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender                region  \\\n",
+       "0               0       11391      M   East Anglian Region   \n",
+       "1               1       28400      F              Scotland   \n",
+       "2               2       31604      F     South East Region   \n",
+       "3               3       32885      F  West Midlands Region   \n",
+       "4               4       38053      M                 Wales   \n",
+       "...           ...         ...    ...                   ...   \n",
+       "26716       26741     2620947      F              Scotland   \n",
+       "26717       26742     2645731      F   East Anglian Region   \n",
+       "26718       26743     2648187      F          South Region   \n",
+       "26719       26744     2679821      F     South East Region   \n",
+       "26720       26745     2684003      F      Yorkshire Region   \n",
+       "\n",
+       "           highest_education age_band disability final_result  final_mark  \\\n",
+       "0           HE Qualification     55<=          N         Pass        82.0   \n",
+       "1           HE Qualification    35-55          N         Pass        67.0   \n",
+       "2      A Level or Equivalent    35-55          N         Pass        76.0   \n",
+       "3         Lower Than A Level     0-35          N         Pass        55.0   \n",
+       "4      A Level or Equivalent    35-55          N         Pass        68.0   \n",
+       "...                      ...      ...        ...          ...         ...   \n",
+       "26716  A Level or Equivalent     0-35          Y  Distinction        89.0   \n",
+       "26717     Lower Than A Level    35-55          N  Distinction        89.0   \n",
+       "26718  A Level or Equivalent     0-35          Y         Pass        77.0   \n",
+       "26719     Lower Than A Level    35-55          N    Withdrawn        92.0   \n",
+       "26720       HE Qualification    35-55          N  Distinction        83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25259 rows x 10 columns]"
+      ]
+     },
+     "execution_count": 15,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I am using the .rename function and specifying that its only the columns I would like to rename and using a dictionary\n",
+    "#style method to highlight the column and the new name. Printing again to check the column has changed.\n",
+    "df6 = df5.rename(columns = {\"score\": \"final_mark\"})\n",
+    "df6\n",
+    "#(pandas.DataFrame.rename — pandas 1.2.4 documentation, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.7 - Remove unnecessary column(s)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 143,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>Unnamed: 0</th>\n",
+       "      <th>id_student</th>\n",
+       "      <th>gender</th>\n",
+       "      <th>age_band</th>\n",
+       "      <th>disability</th>\n",
+       "      <th>final_mark</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>0</td>\n",
+       "      <td>11391</td>\n",
+       "      <td>M</td>\n",
+       "      <td>55&lt;=</td>\n",
+       "      <td>N</td>\n",
+       "      <td>82.0</td>\n",
+       "      <td>934.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>1</td>\n",
+       "      <td>28400</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>67.0</td>\n",
+       "      <td>1435.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>2</td>\n",
+       "      <td>31604</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>76.0</td>\n",
+       "      <td>2158.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>3</td>\n",
+       "      <td>32885</td>\n",
+       "      <td>F</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>N</td>\n",
+       "      <td>55.0</td>\n",
+       "      <td>1034.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>4</td>\n",
+       "      <td>38053</td>\n",
+       "      <td>M</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>68.0</td>\n",
+       "      <td>2445.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\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",
+       "      <th>26716</th>\n",
+       "      <td>26741</td>\n",
+       "      <td>2620947</td>\n",
+       "      <td>F</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>476.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26717</th>\n",
+       "      <td>26742</td>\n",
+       "      <td>2645731</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>89.0</td>\n",
+       "      <td>893.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26718</th>\n",
+       "      <td>26743</td>\n",
+       "      <td>2648187</td>\n",
+       "      <td>F</td>\n",
+       "      <td>0-35</td>\n",
+       "      <td>Y</td>\n",
+       "      <td>77.0</td>\n",
+       "      <td>312.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26719</th>\n",
+       "      <td>26744</td>\n",
+       "      <td>2679821</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>92.0</td>\n",
+       "      <td>275.0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>26720</th>\n",
+       "      <td>26745</td>\n",
+       "      <td>2684003</td>\n",
+       "      <td>F</td>\n",
+       "      <td>35-55</td>\n",
+       "      <td>N</td>\n",
+       "      <td>83.0</td>\n",
+       "      <td>616.0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>25259 rows × 7 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       Unnamed: 0  id_student gender age_band disability  final_mark  \\\n",
+       "0               0       11391      M     55<=          N        82.0   \n",
+       "1               1       28400      F    35-55          N        67.0   \n",
+       "2               2       31604      F    35-55          N        76.0   \n",
+       "3               3       32885      F     0-35          N        55.0   \n",
+       "4               4       38053      M    35-55          N        68.0   \n",
+       "...           ...         ...    ...      ...        ...         ...   \n",
+       "26716       26741     2620947      F     0-35          Y        89.0   \n",
+       "26717       26742     2645731      F    35-55          N        89.0   \n",
+       "26718       26743     2648187      F     0-35          Y        77.0   \n",
+       "26719       26744     2679821      F    35-55          N        92.0   \n",
+       "26720       26745     2684003      F    35-55          N        83.0   \n",
+       "\n",
+       "       click_events  \n",
+       "0             934.0  \n",
+       "1            1435.0  \n",
+       "2            2158.0  \n",
+       "3            1034.0  \n",
+       "4            2445.0  \n",
+       "...             ...  \n",
+       "26716         476.0  \n",
+       "26717         893.0  \n",
+       "26718         312.0  \n",
+       "26719         275.0  \n",
+       "26720         616.0  \n",
+       "\n",
+       "[25259 rows x 7 columns]"
+      ]
+     },
+     "execution_count": 143,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Using the .drop comman and nameing the columns to be removed and stating the axis=1 which is for the columns. Printing the\n",
+    "#dataframe to ensure it has worked.\n",
+    "df7 = df6.drop([\"region\", \"final_result\", \"highest_education\"], axis =1)\n",
+    "df7"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.8 - Write the DataFrame data to a CSV file"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Here I am writing the finalised dataframe to a csv file and further stating that the index is false as when this file is next\n",
+    "#reading using pandas it will create another index and cause the file to look messy.\n",
+    "\n",
+    "df7.to_csv(\"update.csv\", index = False)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.9 - Investigate the effects of age-group on attainment and engagement"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "          final_mark  click_events\n",
+      "age_band                          \n",
+      "0-35       72.503923   1616.472655\n",
+      "35-55      75.035810   2193.000267\n",
+      "55<=       77.718919   3574.864865\n"
+     ]
+    },
+    {
+     "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>final_mark</th>\n",
+       "      <th>click_events</th>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>age_band</th>\n",
+       "      <th></th>\n",
+       "      <th></th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0-35</th>\n",
+       "      <td>72.503923</td>\n",
+       "      <td>1616.472655</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>35-55</th>\n",
+       "      <td>75.035810</td>\n",
+       "      <td>2193.000267</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>55&lt;=</th>\n",
+       "      <td>77.718919</td>\n",
+       "      <td>3574.864865</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "          final_mark  click_events\n",
+       "age_band                          \n",
+       "0-35       72.503923   1616.472655\n",
+       "35-55      75.035810   2193.000267\n",
+       "55<=       77.718919   3574.864865"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Here I am telling pandas to group the dataframe by age_band and then to find the avergage of both the final_mark and the\n",
+    "#click_events (engagement).\n",
+    "df9 =df7.groupby([\"age_band\"])[[\"final_mark\",\"click_events\"]].mean()\n",
+    "\n",
+    "df9\n",
+    "#(Hayden, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.10 - Present the results of the age-group investigation using an appropriate visualisation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 76,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 720x360 with 2 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "# I am creating a 2 barplots next to eachother for easy comparison. These plots share the same x axis but the y axis is for\n",
+    "#each set of data. It shows the average of both final marks and click events for each age group for easy visualisation.\n",
+    "import matplotlib.pyplot as plt\n",
+    "import seaborn as sns\n",
+    "f, axs = plt.subplots(1,2,figsize=(10,5),sharex=True)\n",
+    "\n",
+    "g1 =sns.barplot(y=\"final_mark\", x = \"age_band\",data=df9, ax=axs[0])\n",
+    "g2 =sns.barplot(y=\"click_events\", x = \"age_band\",data=df9, ax=axs[1])\n",
+    "g1.set(xlabel=\"Age Group\",ylabel=\"Final Mark\")\n",
+    "g2.set(xlabel=\"Age Group\",ylabel=\"Click Events\")\n",
+    "g1.set_title(\"The effects of age groups on marks and engagement\")\n",
+    "plt.show()    \n",
+    "    \n",
+    "#(How to Combine Two Seaborn plots with Shared y-axis? - Data Viz with Python and R, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.11 - Investigate the effects of engagement on attainment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 128,
+   "metadata": {
+    "scrolled": true
+   },
+   "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"
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "The correlation coefficient is: 0.27423573401899426 ,there is a weak positive linear relationship between the two variables.\n"
+     ]
+    }
+   ],
+   "source": [
+    "#First is to create a plot to look at the relationship between the variables final marks and click events. The plot suggests\n",
+    "#that there is not a strong correlation between the variables and the correlation coefficient further verifies this. It\n",
+    "#demonstrates a weak positive linear relationship between the two variables. Due to the large dataset the correlation will\n",
+    "#naturally be lower as there is more variation within the data.\n",
+    "\n",
+    "g3 =sns.regplot(x=\"final_mark\", y=\"click_events\", data=df7, scatter_kws={'s':5,\"color\":\"red\"}, line_kws={\"color\": \"black\"})\n",
+    "g3.set(xlabel=\"Final Mark\",ylabel=\"Click Events\")\n",
+    "g3.set_title(\"Regression plot of engagement versus attainment\")\n",
+    "plt.show()\n",
+    "\n",
+    "corre = np.corrcoef(df7[\"final_mark\"],df7[\"click_events\"])[0,1]\n",
+    "print( \"The correlation coefficient is:\", corre, \",there is a weak positive linear relationship between the two variables.\")\n",
+    "\n",
+    "\n",
+    "#(Visualizing regression models — seaborn 0.11.1 documentation, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Requirement FR2.12 - Test the hypothesis that there is a significant effect on attainment"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 142,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "LinregressResult(slope=37.095925643680886, intercept=-917.2096355710828, rvalue=0.2742357340189943, pvalue=0.0, stderr=0.818528803329568)\n",
+      "R-Squared: 0.0752052378129366\n"
+     ]
+    }
+   ],
+   "source": [
+    "# H0: there is not relationship between final mark and click events, ß1=0\n",
+    "# H1:there is not relationship between final mark and click events, ß1≠0\n",
+    "# p<0.05 hence reject H0 and there is statstically significant evidence to suggest there is a relationship between the two \n",
+    "# variables. The R-Squared value however suggests that the model does not explain the variability of the response data around\n",
+    "#its mean suggesting that the model does not fit the data well.\n",
+    "\n",
+    "from scipy import stats\n",
+    "\n",
+    "res = stats.linregress(df7[\"final_mark\"],df7[\"click_events\"])\n",
+    "print(res)\n",
+    "print(\"R-Squared:\", res.rvalue**2)\n",
+    "\n",
+    "#(scipy.stats.linregress, 2021)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Process Development Report for Task 2\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### FR2.1 - FR2.8\n",
+    "Overall, this part of the assignment was a lot easier than the previous one as the use of modules meant the code became simpler and it was easier to make the code clear and concise. The first couple of tasks were very straightforward and there was a lot of help available online when using Pandas. FR2.3 was slightly more difficult to complete as trying to ensure that the correct merge was done as it could affect how the two data frames came together. With regards to FR2.4-2.5 I had previously used this in another assignment so felt very confident in my ability to complete this and for FR2.6 there was a very helpful link that demonstrated how to change column names. Furthermore FR2.7 was easier to understand with little tweaks occurring to ensure the question was answered and further learning how the axis affected the results.  FR2.8 involved saving the data frame to a new csv file and removing the index from the csv file to stop unwanted columns forming if more edits were to happen to the csv file.\n",
+    "\n",
+    "### FR2.9 - FR2.12\n",
+    "For FR2.9 there was a great website that helped a lot with answering this question as I was unsure how to select specific columns to be involved in the groupby command. FR2.10  was a lot of trial and error to produce a clear visualisation that showed the results from the previous task. Overall, I felt the best visualisation would be with a dual axis with two bar charts that shared the same x-axis, I felt like this helped show the changes for each age group for both the variables and I tried to ensure the plot had a title and renamed the headers to make it look clearer. When investigating the effects of the engagement on attainment I felt it was best to plot the two variables in a scatter plot with a regression line to visualise the data and see if there was a visible relationship between them. The regression line suggested that there could be correlation between click event and final mark and so the next stage was to get correlation coefficient to see the relationship between the two variables, numpy was a great module to find the correlation coefficients. To test the hypothesis, I performed a linear regression model but it was difficult to figure out how to perform this as I was unsure if scipy was the numpy stats module but the majority of websites said it was. To further investigate the data, I checked the R-squared value which suggested the model was not a good fit but this can be due to the very large dataset and further that the previous task suggested that there wasn’t a strong relationship between these two variables. In the future for FR2.12 I would include more statistical tests and look more at the goodness-of-fit to ensure the most appropriate model is being used, while also looking at residual plots from the regression model.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### References\n",
+    "\n",
+    "Bhalla, D., 2021. 15 ways to read CSV file with pandas. [online] ListenData. Available at: <https://www.listendata.com/2019/06/pandas-read-csv.html> [Accessed 15 April 2021].\n",
+    "\n",
+    "Chrisalbon.com. 2021. Join And Merge Pandas Dataframe. [online] Available at: <https://chrisalbon.com/python/data_wrangling/pandas_join_merge_dataframe/> [Accessed 15 April 2021].\n",
+    "\n",
+    "Data Viz with Python and R. 2021. How to Combine Two Seaborn plots with Shared y-axis? - Data Viz with Python and R. [online] Available at: <https://datavizpyr.com/seaborn-join-two-plots-with-shared-y-axis/> [Accessed 19 April 2021].\n",
+    "\n",
+    "docs.scipy.org. 2021. scipy.stats.linregress. [online] Available at:<https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.linregress.html> [Accessed 19 April 2021].\n",
+    "\n",
+    "Hayden, A., 2021. Pandas sum by groupby, but exclude certain columns. [online] Stack Overflow. Available at: <https://stackoverflow.com/questions/32751229/pandas-sum-by-groupby-but-exclude-certain-columns> [Accessed 16 April 2021].\n",
+    "\n",
+    "Pandas.pydata.org. 2021. pandas.DataFrame.rename — pandas 1.2.4 documentation. [online] Available at: <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rename.html> [Accessed 15 April 2021].\n",
+    "\n",
+    "Seaborn.pydata.org. 2021. Visualizing regression models — seaborn 0.11.1 documentation. [online] Available at: <https://seaborn.pydata.org/tutorial/regression.html> [Accessed 19 April 2021].\n"
+   ]
+  }
+ ],
+ "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.8.5"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/task1.csv b/task1.csv
deleted file mode 100644
index 9e6a36214b9dcd6e9a29dd1199cf0496782a2745..0000000000000000000000000000000000000000
--- a/task1.csv
+++ /dev/null
@@ -1,769 +0,0 @@
-Pregnancies,Glucose,BloodPressure,SkinThickness,Insulin,BMI,DiabetesPedigreeFunction,Age,Outcome
-6,148,72,35,0,33.6,0.627,50,1
-1,85,66,29,0,26.6,0.351,31,0
-8,183,64,0,0,23.3,0.672,32,1
-1,89,66,23,94,28.1,0.167,21,0
-0,137,40,35,168,43.1,2.288,33,1
-5,116,74,0,0,25.6,0.201,30,0
-3,78,50,32,88,31,0.248,26,1
-10,115,0,0,0,35.3,0.134,29,0
-2,197,70,45,543,30.5,0.158,53,1
-8,125,96,0,0,0,0.232,54,1
-4,110,92,0,0,37.6,0.191,30,0
-10,168,74,0,0,38,0.537,34,1
-10,139,80,0,0,27.1,1.441,57,0
-1,189,60,23,846,30.1,0.398,59,1
-5,166,72,19,175,25.8,0.587,51,1
-7,100,0,0,0,30,0.484,32,1
-0,118,84,47,230,45.8,0.551,31,1
-7,107,74,0,0,29.6,0.254,31,1
-1,103,30,38,83,43.3,0.183,33,0
-1,115,70,30,96,34.6,0.529,32,1
-3,126,88,41,235,39.3,0.704,27,0
-8,99,84,0,0,35.4,0.388,50,0
-7,196,90,0,0,39.8,0.451,41,1
-9,119,80,35,0,29,0.263,29,1
-11,143,94,33,146,36.6,0.254,51,1
-10,125,70,26,115,31.1,0.205,41,1
-7,147,76,0,0,39.4,0.257,43,1
-1,97,66,15,140,23.2,0.487,22,0
-13,145,82,19,110,22.2,0.245,57,0
-5,117,92,0,0,34.1,0.337,38,0
-5,109,75,26,0,36,0.546,60,0
-3,158,76,36,245,31.6,0.851,28,1
-3,88,58,11,54,24.8,0.267,22,0
-6,92,92,0,0,19.9,0.188,28,0
-10,122,78,31,0,27.6,0.512,45,0
-4,103,60,33,192,24,0.966,33,0
-11,138,76,0,0,33.2,0.42,35,0
-9,102,76,37,0,32.9,0.665,46,1
-2,90,68,42,0,38.2,0.503,27,1
-4,111,72,47,207,37.1,1.39,56,1
-3,180,64,25,70,34,0.271,26,0
-7,133,84,0,0,40.2,0.696,37,0
-7,106,92,18,0,22.7,0.235,48,0
-9,171,110,24,240,45.4,0.721,54,1
-7,159,64,0,0,27.4,0.294,40,0
-0,180,66,39,0,42,1.893,25,1
-1,146,56,0,0,29.7,0.564,29,0
-2,71,70,27,0,28,0.586,22,0
-7,103,66,32,0,39.1,0.344,31,1
-7,105,0,0,0,0,0.305,24,0
-1,103,80,11,82,19.4,0.491,22,0
-1,101,50,15,36,24.2,0.526,26,0
-5,88,66,21,23,24.4,0.342,30,0
-8,176,90,34,300,33.7,0.467,58,1
-7,150,66,42,342,34.7,0.718,42,0
-1,73,50,10,0,23,0.248,21,0
-7,187,68,39,304,37.7,0.254,41,1
-0,100,88,60,110,46.8,0.962,31,0
-0,146,82,0,0,40.5,1.781,44,0
-0,105,64,41,142,41.5,0.173,22,0
-2,84,0,0,0,0,0.304,21,0
-8,133,72,0,0,32.9,0.27,39,1
-5,44,62,0,0,25,0.587,36,0
-2,141,58,34,128,25.4,0.699,24,0
-7,114,66,0,0,32.8,0.258,42,1
-5,99,74,27,0,29,0.203,32,0
-0,109,88,30,0,32.5,0.855,38,1
-2,109,92,0,0,42.7,0.845,54,0
-1,95,66,13,38,19.6,0.334,25,0
-4,146,85,27,100,28.9,0.189,27,0
-2,100,66,20,90,32.9,0.867,28,1
-5,139,64,35,140,28.6,0.411,26,0
-13,126,90,0,0,43.4,0.583,42,1
-4,129,86,20,270,35.1,0.231,23,0
-1,79,75,30,0,32,0.396,22,0
-1,0,48,20,0,24.7,0.14,22,0
-7,62,78,0,0,32.6,0.391,41,0
-5,95,72,33,0,37.7,0.37,27,0
-0,131,0,0,0,43.2,0.27,26,1
-2,112,66,22,0,25,0.307,24,0
-3,113,44,13,0,22.4,0.14,22,0
-2,74,0,0,0,0,0.102,22,0
-7,83,78,26,71,29.3,0.767,36,0
-0,101,65,28,0,24.6,0.237,22,0
-5,137,108,0,0,48.8,0.227,37,1
-2,110,74,29,125,32.4,0.698,27,0
-13,106,72,54,0,36.6,0.178,45,0
-2,100,68,25,71,38.5,0.324,26,0
-15,136,70,32,110,37.1,0.153,43,1
-1,107,68,19,0,26.5,0.165,24,0
-1,80,55,0,0,19.1,0.258,21,0
-4,123,80,15,176,32,0.443,34,0
-7,81,78,40,48,46.7,0.261,42,0
-4,134,72,0,0,23.8,0.277,60,1
-2,142,82,18,64,24.7,0.761,21,0
-6,144,72,27,228,33.9,0.255,40,0
-2,92,62,28,0,31.6,0.13,24,0
-1,71,48,18,76,20.4,0.323,22,0
-6,93,50,30,64,28.7,0.356,23,0
-1,122,90,51,220,49.7,0.325,31,1
-1,163,72,0,0,39,1.222,33,1
-1,151,60,0,0,26.1,0.179,22,0
-0,125,96,0,0,22.5,0.262,21,0
-1,81,72,18,40,26.6,0.283,24,0
-2,85,65,0,0,39.6,0.93,27,0
-1,126,56,29,152,28.7,0.801,21,0
-1,96,122,0,0,22.4,0.207,27,0
-4,144,58,28,140,29.5,0.287,37,0
-3,83,58,31,18,34.3,0.336,25,0
-0,95,85,25,36,37.4,0.247,24,1
-3,171,72,33,135,33.3,0.199,24,1
-8,155,62,26,495,34,0.543,46,1
-1,89,76,34,37,31.2,0.192,23,0
-4,76,62,0,0,34,0.391,25,0
-7,160,54,32,175,30.5,0.588,39,1
-4,146,92,0,0,31.2,0.539,61,1
-5,124,74,0,0,34,0.22,38,1
-5,78,48,0,0,33.7,0.654,25,0
-4,97,60,23,0,28.2,0.443,22,0
-4,99,76,15,51,23.2,0.223,21,0
-0,162,76,56,100,53.2,0.759,25,1
-6,111,64,39,0,34.2,0.26,24,0
-2,107,74,30,100,33.6,0.404,23,0
-5,132,80,0,0,26.8,0.186,69,0
-0,113,76,0,0,33.3,0.278,23,1
-1,88,30,42,99,55,0.496,26,1
-3,120,70,30,135,42.9,0.452,30,0
-1,118,58,36,94,33.3,0.261,23,0
-1,117,88,24,145,34.5,0.403,40,1
-0,105,84,0,0,27.9,0.741,62,1
-4,173,70,14,168,29.7,0.361,33,1
-9,122,56,0,0,33.3,1.114,33,1
-3,170,64,37,225,34.5,0.356,30,1
-8,84,74,31,0,38.3,0.457,39,0
-2,96,68,13,49,21.1,0.647,26,0
-2,125,60,20,140,33.8,0.088,31,0
-0,100,70,26,50,30.8,0.597,21,0
-0,93,60,25,92,28.7,0.532,22,0
-0,129,80,0,0,31.2,0.703,29,0
-5,105,72,29,325,36.9,0.159,28,0
-3,128,78,0,0,21.1,0.268,55,0
-5,106,82,30,0,39.5,0.286,38,0
-2,108,52,26,63,32.5,0.318,22,0
-10,108,66,0,0,32.4,0.272,42,1
-4,154,62,31,284,32.8,0.237,23,0
-0,102,75,23,0,0,0.572,21,0
-9,57,80,37,0,32.8,0.096,41,0
-2,106,64,35,119,30.5,1.4,34,0
-5,147,78,0,0,33.7,0.218,65,0
-2,90,70,17,0,27.3,0.085,22,0
-1,136,74,50,204,37.4,0.399,24,0
-4,114,65,0,0,21.9,0.432,37,0
-9,156,86,28,155,34.3,1.189,42,1
-1,153,82,42,485,40.6,0.687,23,0
-8,188,78,0,0,47.9,0.137,43,1
-7,152,88,44,0,50,0.337,36,1
-2,99,52,15,94,24.6,0.637,21,0
-1,109,56,21,135,25.2,0.833,23,0
-2,88,74,19,53,29,0.229,22,0
-17,163,72,41,114,40.9,0.817,47,1
-4,151,90,38,0,29.7,0.294,36,0
-7,102,74,40,105,37.2,0.204,45,0
-0,114,80,34,285,44.2,0.167,27,0
-2,100,64,23,0,29.7,0.368,21,0
-0,131,88,0,0,31.6,0.743,32,1
-6,104,74,18,156,29.9,0.722,41,1
-3,148,66,25,0,32.5,0.256,22,0
-4,120,68,0,0,29.6,0.709,34,0
-4,110,66,0,0,31.9,0.471,29,0
-3,111,90,12,78,28.4,0.495,29,0
-6,102,82,0,0,30.8,0.18,36,1
-6,134,70,23,130,35.4,0.542,29,1
-2,87,0,23,0,28.9,0.773,25,0
-1,79,60,42,48,43.5,0.678,23,0
-2,75,64,24,55,29.7,0.37,33,0
-8,179,72,42,130,32.7,0.719,36,1
-6,85,78,0,0,31.2,0.382,42,0
-0,129,110,46,130,67.1,0.319,26,1
-5,143,78,0,0,45,0.19,47,0
-5,130,82,0,0,39.1,0.956,37,1
-6,87,80,0,0,23.2,0.084,32,0
-0,119,64,18,92,34.9,0.725,23,0
-1,0,74,20,23,27.7,0.299,21,0
-5,73,60,0,0,26.8,0.268,27,0
-4,141,74,0,0,27.6,0.244,40,0
-7,194,68,28,0,35.9,0.745,41,1
-8,181,68,36,495,30.1,0.615,60,1
-1,128,98,41,58,32,1.321,33,1
-8,109,76,39,114,27.9,0.64,31,1
-5,139,80,35,160,31.6,0.361,25,1
-3,111,62,0,0,22.6,0.142,21,0
-9,123,70,44,94,33.1,0.374,40,0
-7,159,66,0,0,30.4,0.383,36,1
-11,135,0,0,0,52.3,0.578,40,1
-8,85,55,20,0,24.4,0.136,42,0
-5,158,84,41,210,39.4,0.395,29,1
-1,105,58,0,0,24.3,0.187,21,0
-3,107,62,13,48,22.9,0.678,23,1
-4,109,64,44,99,34.8,0.905,26,1
-4,148,60,27,318,30.9,0.15,29,1
-0,113,80,16,0,31,0.874,21,0
-1,138,82,0,0,40.1,0.236,28,0
-0,108,68,20,0,27.3,0.787,32,0
-2,99,70,16,44,20.4,0.235,27,0
-6,103,72,32,190,37.7,0.324,55,0
-5,111,72,28,0,23.9,0.407,27,0
-8,196,76,29,280,37.5,0.605,57,1
-5,162,104,0,0,37.7,0.151,52,1
-1,96,64,27,87,33.2,0.289,21,0
-7,184,84,33,0,35.5,0.355,41,1
-2,81,60,22,0,27.7,0.29,25,0
-0,147,85,54,0,42.8,0.375,24,0
-7,179,95,31,0,34.2,0.164,60,0
-0,140,65,26,130,42.6,0.431,24,1
-9,112,82,32,175,34.2,0.26,36,1
-12,151,70,40,271,41.8,0.742,38,1
-5,109,62,41,129,35.8,0.514,25,1
-6,125,68,30,120,30,0.464,32,0
-5,85,74,22,0,29,1.224,32,1
-5,112,66,0,0,37.8,0.261,41,1
-0,177,60,29,478,34.6,1.072,21,1
-2,158,90,0,0,31.6,0.805,66,1
-7,119,0,0,0,25.2,0.209,37,0
-7,142,60,33,190,28.8,0.687,61,0
-1,100,66,15,56,23.6,0.666,26,0
-1,87,78,27,32,34.6,0.101,22,0
-0,101,76,0,0,35.7,0.198,26,0
-3,162,52,38,0,37.2,0.652,24,1
-4,197,70,39,744,36.7,2.329,31,0
-0,117,80,31,53,45.2,0.089,24,0
-4,142,86,0,0,44,0.645,22,1
-6,134,80,37,370,46.2,0.238,46,1
-1,79,80,25,37,25.4,0.583,22,0
-4,122,68,0,0,35,0.394,29,0
-3,74,68,28,45,29.7,0.293,23,0
-4,171,72,0,0,43.6,0.479,26,1
-7,181,84,21,192,35.9,0.586,51,1
-0,179,90,27,0,44.1,0.686,23,1
-9,164,84,21,0,30.8,0.831,32,1
-0,104,76,0,0,18.4,0.582,27,0
-1,91,64,24,0,29.2,0.192,21,0
-4,91,70,32,88,33.1,0.446,22,0
-3,139,54,0,0,25.6,0.402,22,1
-6,119,50,22,176,27.1,1.318,33,1
-2,146,76,35,194,38.2,0.329,29,0
-9,184,85,15,0,30,1.213,49,1
-10,122,68,0,0,31.2,0.258,41,0
-0,165,90,33,680,52.3,0.427,23,0
-9,124,70,33,402,35.4,0.282,34,0
-1,111,86,19,0,30.1,0.143,23,0
-9,106,52,0,0,31.2,0.38,42,0
-2,129,84,0,0,28,0.284,27,0
-2,90,80,14,55,24.4,0.249,24,0
-0,86,68,32,0,35.8,0.238,25,0
-12,92,62,7,258,27.6,0.926,44,1
-1,113,64,35,0,33.6,0.543,21,1
-3,111,56,39,0,30.1,0.557,30,0
-2,114,68,22,0,28.7,0.092,25,0
-1,193,50,16,375,25.9,0.655,24,0
-11,155,76,28,150,33.3,1.353,51,1
-3,191,68,15,130,30.9,0.299,34,0
-3,141,0,0,0,30,0.761,27,1
-4,95,70,32,0,32.1,0.612,24,0
-3,142,80,15,0,32.4,0.2,63,0
-4,123,62,0,0,32,0.226,35,1
-5,96,74,18,67,33.6,0.997,43,0
-0,138,0,0,0,36.3,0.933,25,1
-2,128,64,42,0,40,1.101,24,0
-0,102,52,0,0,25.1,0.078,21,0
-2,146,0,0,0,27.5,0.24,28,1
-10,101,86,37,0,45.6,1.136,38,1
-2,108,62,32,56,25.2,0.128,21,0
-3,122,78,0,0,23,0.254,40,0
-1,71,78,50,45,33.2,0.422,21,0
-13,106,70,0,0,34.2,0.251,52,0
-2,100,70,52,57,40.5,0.677,25,0
-7,106,60,24,0,26.5,0.296,29,1
-0,104,64,23,116,27.8,0.454,23,0
-5,114,74,0,0,24.9,0.744,57,0
-2,108,62,10,278,25.3,0.881,22,0
-0,146,70,0,0,37.9,0.334,28,1
-10,129,76,28,122,35.9,0.28,39,0
-7,133,88,15,155,32.4,0.262,37,0
-7,161,86,0,0,30.4,0.165,47,1
-2,108,80,0,0,27,0.259,52,1
-7,136,74,26,135,26,0.647,51,0
-5,155,84,44,545,38.7,0.619,34,0
-1,119,86,39,220,45.6,0.808,29,1
-4,96,56,17,49,20.8,0.34,26,0
-5,108,72,43,75,36.1,0.263,33,0
-0,78,88,29,40,36.9,0.434,21,0
-0,107,62,30,74,36.6,0.757,25,1
-2,128,78,37,182,43.3,1.224,31,1
-1,128,48,45,194,40.5,0.613,24,1
-0,161,50,0,0,21.9,0.254,65,0
-6,151,62,31,120,35.5,0.692,28,0
-2,146,70,38,360,28,0.337,29,1
-0,126,84,29,215,30.7,0.52,24,0
-14,100,78,25,184,36.6,0.412,46,1
-8,112,72,0,0,23.6,0.84,58,0
-0,167,0,0,0,32.3,0.839,30,1
-2,144,58,33,135,31.6,0.422,25,1
-5,77,82,41,42,35.8,0.156,35,0
-5,115,98,0,0,52.9,0.209,28,1
-3,150,76,0,0,21,0.207,37,0
-2,120,76,37,105,39.7,0.215,29,0
-10,161,68,23,132,25.5,0.326,47,1
-0,137,68,14,148,24.8,0.143,21,0
-0,128,68,19,180,30.5,1.391,25,1
-2,124,68,28,205,32.9,0.875,30,1
-6,80,66,30,0,26.2,0.313,41,0
-0,106,70,37,148,39.4,0.605,22,0
-2,155,74,17,96,26.6,0.433,27,1
-3,113,50,10,85,29.5,0.626,25,0
-7,109,80,31,0,35.9,1.127,43,1
-2,112,68,22,94,34.1,0.315,26,0
-3,99,80,11,64,19.3,0.284,30,0
-3,182,74,0,0,30.5,0.345,29,1
-3,115,66,39,140,38.1,0.15,28,0
-6,194,78,0,0,23.5,0.129,59,1
-4,129,60,12,231,27.5,0.527,31,0
-3,112,74,30,0,31.6,0.197,25,1
-0,124,70,20,0,27.4,0.254,36,1
-13,152,90,33,29,26.8,0.731,43,1
-2,112,75,32,0,35.7,0.148,21,0
-1,157,72,21,168,25.6,0.123,24,0
-1,122,64,32,156,35.1,0.692,30,1
-10,179,70,0,0,35.1,0.2,37,0
-2,102,86,36,120,45.5,0.127,23,1
-6,105,70,32,68,30.8,0.122,37,0
-8,118,72,19,0,23.1,1.476,46,0
-2,87,58,16,52,32.7,0.166,25,0
-1,180,0,0,0,43.3,0.282,41,1
-12,106,80,0,0,23.6,0.137,44,0
-1,95,60,18,58,23.9,0.26,22,0
-0,165,76,43,255,47.9,0.259,26,0
-0,117,0,0,0,33.8,0.932,44,0
-5,115,76,0,0,31.2,0.343,44,1
-9,152,78,34,171,34.2,0.893,33,1
-7,178,84,0,0,39.9,0.331,41,1
-1,130,70,13,105,25.9,0.472,22,0
-1,95,74,21,73,25.9,0.673,36,0
-1,0,68,35,0,32,0.389,22,0
-5,122,86,0,0,34.7,0.29,33,0
-8,95,72,0,0,36.8,0.485,57,0
-8,126,88,36,108,38.5,0.349,49,0
-1,139,46,19,83,28.7,0.654,22,0
-3,116,0,0,0,23.5,0.187,23,0
-3,99,62,19,74,21.8,0.279,26,0
-5,0,80,32,0,41,0.346,37,1
-4,92,80,0,0,42.2,0.237,29,0
-4,137,84,0,0,31.2,0.252,30,0
-3,61,82,28,0,34.4,0.243,46,0
-1,90,62,12,43,27.2,0.58,24,0
-3,90,78,0,0,42.7,0.559,21,0
-9,165,88,0,0,30.4,0.302,49,1
-1,125,50,40,167,33.3,0.962,28,1
-13,129,0,30,0,39.9,0.569,44,1
-12,88,74,40,54,35.3,0.378,48,0
-1,196,76,36,249,36.5,0.875,29,1
-5,189,64,33,325,31.2,0.583,29,1
-5,158,70,0,0,29.8,0.207,63,0
-5,103,108,37,0,39.2,0.305,65,0
-4,146,78,0,0,38.5,0.52,67,1
-4,147,74,25,293,34.9,0.385,30,0
-5,99,54,28,83,34,0.499,30,0
-6,124,72,0,0,27.6,0.368,29,1
-0,101,64,17,0,21,0.252,21,0
-3,81,86,16,66,27.5,0.306,22,0
-1,133,102,28,140,32.8,0.234,45,1
-3,173,82,48,465,38.4,2.137,25,1
-0,118,64,23,89,0,1.731,21,0
-0,84,64,22,66,35.8,0.545,21,0
-2,105,58,40,94,34.9,0.225,25,0
-2,122,52,43,158,36.2,0.816,28,0
-12,140,82,43,325,39.2,0.528,58,1
-0,98,82,15,84,25.2,0.299,22,0
-1,87,60,37,75,37.2,0.509,22,0
-4,156,75,0,0,48.3,0.238,32,1
-0,93,100,39,72,43.4,1.021,35,0
-1,107,72,30,82,30.8,0.821,24,0
-0,105,68,22,0,20,0.236,22,0
-1,109,60,8,182,25.4,0.947,21,0
-1,90,62,18,59,25.1,1.268,25,0
-1,125,70,24,110,24.3,0.221,25,0
-1,119,54,13,50,22.3,0.205,24,0
-5,116,74,29,0,32.3,0.66,35,1
-8,105,100,36,0,43.3,0.239,45,1
-5,144,82,26,285,32,0.452,58,1
-3,100,68,23,81,31.6,0.949,28,0
-1,100,66,29,196,32,0.444,42,0
-5,166,76,0,0,45.7,0.34,27,1
-1,131,64,14,415,23.7,0.389,21,0
-4,116,72,12,87,22.1,0.463,37,0
-4,158,78,0,0,32.9,0.803,31,1
-2,127,58,24,275,27.7,1.6,25,0
-3,96,56,34,115,24.7,0.944,39,0
-0,131,66,40,0,34.3,0.196,22,1
-3,82,70,0,0,21.1,0.389,25,0
-3,193,70,31,0,34.9,0.241,25,1
-4,95,64,0,0,32,0.161,31,1
-6,137,61,0,0,24.2,0.151,55,0
-5,136,84,41,88,35,0.286,35,1
-9,72,78,25,0,31.6,0.28,38,0
-5,168,64,0,0,32.9,0.135,41,1
-2,123,48,32,165,42.1,0.52,26,0
-4,115,72,0,0,28.9,0.376,46,1
-0,101,62,0,0,21.9,0.336,25,0
-8,197,74,0,0,25.9,1.191,39,1
-1,172,68,49,579,42.4,0.702,28,1
-6,102,90,39,0,35.7,0.674,28,0
-1,112,72,30,176,34.4,0.528,25,0
-1,143,84,23,310,42.4,1.076,22,0
-1,143,74,22,61,26.2,0.256,21,0
-0,138,60,35,167,34.6,0.534,21,1
-3,173,84,33,474,35.7,0.258,22,1
-1,97,68,21,0,27.2,1.095,22,0
-4,144,82,32,0,38.5,0.554,37,1
-1,83,68,0,0,18.2,0.624,27,0
-3,129,64,29,115,26.4,0.219,28,1
-1,119,88,41,170,45.3,0.507,26,0
-2,94,68,18,76,26,0.561,21,0
-0,102,64,46,78,40.6,0.496,21,0
-2,115,64,22,0,30.8,0.421,21,0
-8,151,78,32,210,42.9,0.516,36,1
-4,184,78,39,277,37,0.264,31,1
-0,94,0,0,0,0,0.256,25,0
-1,181,64,30,180,34.1,0.328,38,1
-0,135,94,46,145,40.6,0.284,26,0
-1,95,82,25,180,35,0.233,43,1
-2,99,0,0,0,22.2,0.108,23,0
-3,89,74,16,85,30.4,0.551,38,0
-1,80,74,11,60,30,0.527,22,0
-2,139,75,0,0,25.6,0.167,29,0
-1,90,68,8,0,24.5,1.138,36,0
-0,141,0,0,0,42.4,0.205,29,1
-12,140,85,33,0,37.4,0.244,41,0
-5,147,75,0,0,29.9,0.434,28,0
-1,97,70,15,0,18.2,0.147,21,0
-6,107,88,0,0,36.8,0.727,31,0
-0,189,104,25,0,34.3,0.435,41,1
-2,83,66,23,50,32.2,0.497,22,0
-4,117,64,27,120,33.2,0.23,24,0
-8,108,70,0,0,30.5,0.955,33,1
-4,117,62,12,0,29.7,0.38,30,1
-0,180,78,63,14,59.4,2.42,25,1
-1,100,72,12,70,25.3,0.658,28,0
-0,95,80,45,92,36.5,0.33,26,0
-0,104,64,37,64,33.6,0.51,22,1
-0,120,74,18,63,30.5,0.285,26,0
-1,82,64,13,95,21.2,0.415,23,0
-2,134,70,0,0,28.9,0.542,23,1
-0,91,68,32,210,39.9,0.381,25,0
-2,119,0,0,0,19.6,0.832,72,0
-2,100,54,28,105,37.8,0.498,24,0
-14,175,62,30,0,33.6,0.212,38,1
-1,135,54,0,0,26.7,0.687,62,0
-5,86,68,28,71,30.2,0.364,24,0
-10,148,84,48,237,37.6,1.001,51,1
-9,134,74,33,60,25.9,0.46,81,0
-9,120,72,22,56,20.8,0.733,48,0
-1,71,62,0,0,21.8,0.416,26,0
-8,74,70,40,49,35.3,0.705,39,0
-5,88,78,30,0,27.6,0.258,37,0
-10,115,98,0,0,24,1.022,34,0
-0,124,56,13,105,21.8,0.452,21,0
-0,74,52,10,36,27.8,0.269,22,0
-0,97,64,36,100,36.8,0.6,25,0
-8,120,0,0,0,30,0.183,38,1
-6,154,78,41,140,46.1,0.571,27,0
-1,144,82,40,0,41.3,0.607,28,0
-0,137,70,38,0,33.2,0.17,22,0
-0,119,66,27,0,38.8,0.259,22,0
-7,136,90,0,0,29.9,0.21,50,0
-4,114,64,0,0,28.9,0.126,24,0
-0,137,84,27,0,27.3,0.231,59,0
-2,105,80,45,191,33.7,0.711,29,1
-7,114,76,17,110,23.8,0.466,31,0
-8,126,74,38,75,25.9,0.162,39,0
-4,132,86,31,0,28,0.419,63,0
-3,158,70,30,328,35.5,0.344,35,1
-0,123,88,37,0,35.2,0.197,29,0
-4,85,58,22,49,27.8,0.306,28,0
-0,84,82,31,125,38.2,0.233,23,0
-0,145,0,0,0,44.2,0.63,31,1
-0,135,68,42,250,42.3,0.365,24,1
-1,139,62,41,480,40.7,0.536,21,0
-0,173,78,32,265,46.5,1.159,58,0
-4,99,72,17,0,25.6,0.294,28,0
-8,194,80,0,0,26.1,0.551,67,0
-2,83,65,28,66,36.8,0.629,24,0
-2,89,90,30,0,33.5,0.292,42,0
-4,99,68,38,0,32.8,0.145,33,0
-4,125,70,18,122,28.9,1.144,45,1
-3,80,0,0,0,0,0.174,22,0
-6,166,74,0,0,26.6,0.304,66,0
-5,110,68,0,0,26,0.292,30,0
-2,81,72,15,76,30.1,0.547,25,0
-7,195,70,33,145,25.1,0.163,55,1
-6,154,74,32,193,29.3,0.839,39,0
-2,117,90,19,71,25.2,0.313,21,0
-3,84,72,32,0,37.2,0.267,28,0
-6,0,68,41,0,39,0.727,41,1
-7,94,64,25,79,33.3,0.738,41,0
-3,96,78,39,0,37.3,0.238,40,0
-10,75,82,0,0,33.3,0.263,38,0
-0,180,90,26,90,36.5,0.314,35,1
-1,130,60,23,170,28.6,0.692,21,0
-2,84,50,23,76,30.4,0.968,21,0
-8,120,78,0,0,25,0.409,64,0
-12,84,72,31,0,29.7,0.297,46,1
-0,139,62,17,210,22.1,0.207,21,0
-9,91,68,0,0,24.2,0.2,58,0
-2,91,62,0,0,27.3,0.525,22,0
-3,99,54,19,86,25.6,0.154,24,0
-3,163,70,18,105,31.6,0.268,28,1
-9,145,88,34,165,30.3,0.771,53,1
-7,125,86,0,0,37.6,0.304,51,0
-13,76,60,0,0,32.8,0.18,41,0
-6,129,90,7,326,19.6,0.582,60,0
-2,68,70,32,66,25,0.187,25,0
-3,124,80,33,130,33.2,0.305,26,0
-6,114,0,0,0,0,0.189,26,0
-9,130,70,0,0,34.2,0.652,45,1
-3,125,58,0,0,31.6,0.151,24,0
-3,87,60,18,0,21.8,0.444,21,0
-1,97,64,19,82,18.2,0.299,21,0
-3,116,74,15,105,26.3,0.107,24,0
-0,117,66,31,188,30.8,0.493,22,0
-0,111,65,0,0,24.6,0.66,31,0
-2,122,60,18,106,29.8,0.717,22,0
-0,107,76,0,0,45.3,0.686,24,0
-1,86,66,52,65,41.3,0.917,29,0
-6,91,0,0,0,29.8,0.501,31,0
-1,77,56,30,56,33.3,1.251,24,0
-4,132,0,0,0,32.9,0.302,23,1
-0,105,90,0,0,29.6,0.197,46,0
-0,57,60,0,0,21.7,0.735,67,0
-0,127,80,37,210,36.3,0.804,23,0
-3,129,92,49,155,36.4,0.968,32,1
-8,100,74,40,215,39.4,0.661,43,1
-3,128,72,25,190,32.4,0.549,27,1
-10,90,85,32,0,34.9,0.825,56,1
-4,84,90,23,56,39.5,0.159,25,0
-1,88,78,29,76,32,0.365,29,0
-8,186,90,35,225,34.5,0.423,37,1
-5,187,76,27,207,43.6,1.034,53,1
-4,131,68,21,166,33.1,0.16,28,0
-1,164,82,43,67,32.8,0.341,50,0
-4,189,110,31,0,28.5,0.68,37,0
-1,116,70,28,0,27.4,0.204,21,0
-3,84,68,30,106,31.9,0.591,25,0
-6,114,88,0,0,27.8,0.247,66,0
-1,88,62,24,44,29.9,0.422,23,0
-1,84,64,23,115,36.9,0.471,28,0
-7,124,70,33,215,25.5,0.161,37,0
-1,97,70,40,0,38.1,0.218,30,0
-8,110,76,0,0,27.8,0.237,58,0
-11,103,68,40,0,46.2,0.126,42,0
-11,85,74,0,0,30.1,0.3,35,0
-6,125,76,0,0,33.8,0.121,54,1
-0,198,66,32,274,41.3,0.502,28,1
-1,87,68,34,77,37.6,0.401,24,0
-6,99,60,19,54,26.9,0.497,32,0
-0,91,80,0,0,32.4,0.601,27,0
-2,95,54,14,88,26.1,0.748,22,0
-1,99,72,30,18,38.6,0.412,21,0
-6,92,62,32,126,32,0.085,46,0
-4,154,72,29,126,31.3,0.338,37,0
-0,121,66,30,165,34.3,0.203,33,1
-3,78,70,0,0,32.5,0.27,39,0
-2,130,96,0,0,22.6,0.268,21,0
-3,111,58,31,44,29.5,0.43,22,0
-2,98,60,17,120,34.7,0.198,22,0
-1,143,86,30,330,30.1,0.892,23,0
-1,119,44,47,63,35.5,0.28,25,0
-6,108,44,20,130,24,0.813,35,0
-2,118,80,0,0,42.9,0.693,21,1
-10,133,68,0,0,27,0.245,36,0
-2,197,70,99,0,34.7,0.575,62,1
-0,151,90,46,0,42.1,0.371,21,1
-6,109,60,27,0,25,0.206,27,0
-12,121,78,17,0,26.5,0.259,62,0
-8,100,76,0,0,38.7,0.19,42,0
-8,124,76,24,600,28.7,0.687,52,1
-1,93,56,11,0,22.5,0.417,22,0
-8,143,66,0,0,34.9,0.129,41,1
-6,103,66,0,0,24.3,0.249,29,0
-3,176,86,27,156,33.3,1.154,52,1
-0,73,0,0,0,21.1,0.342,25,0
-11,111,84,40,0,46.8,0.925,45,1
-2,112,78,50,140,39.4,0.175,24,0
-3,132,80,0,0,34.4,0.402,44,1
-2,82,52,22,115,28.5,1.699,25,0
-6,123,72,45,230,33.6,0.733,34,0
-0,188,82,14,185,32,0.682,22,1
-0,67,76,0,0,45.3,0.194,46,0
-1,89,24,19,25,27.8,0.559,21,0
-1,173,74,0,0,36.8,0.088,38,1
-1,109,38,18,120,23.1,0.407,26,0
-1,108,88,19,0,27.1,0.4,24,0
-6,96,0,0,0,23.7,0.19,28,0
-1,124,74,36,0,27.8,0.1,30,0
-7,150,78,29,126,35.2,0.692,54,1
-4,183,0,0,0,28.4,0.212,36,1
-1,124,60,32,0,35.8,0.514,21,0
-1,181,78,42,293,40,1.258,22,1
-1,92,62,25,41,19.5,0.482,25,0
-0,152,82,39,272,41.5,0.27,27,0
-1,111,62,13,182,24,0.138,23,0
-3,106,54,21,158,30.9,0.292,24,0
-3,174,58,22,194,32.9,0.593,36,1
-7,168,88,42,321,38.2,0.787,40,1
-6,105,80,28,0,32.5,0.878,26,0
-11,138,74,26,144,36.1,0.557,50,1
-3,106,72,0,0,25.8,0.207,27,0
-6,117,96,0,0,28.7,0.157,30,0
-2,68,62,13,15,20.1,0.257,23,0
-9,112,82,24,0,28.2,1.282,50,1
-0,119,0,0,0,32.4,0.141,24,1
-2,112,86,42,160,38.4,0.246,28,0
-2,92,76,20,0,24.2,1.698,28,0
-6,183,94,0,0,40.8,1.461,45,0
-0,94,70,27,115,43.5,0.347,21,0
-2,108,64,0,0,30.8,0.158,21,0
-4,90,88,47,54,37.7,0.362,29,0
-0,125,68,0,0,24.7,0.206,21,0
-0,132,78,0,0,32.4,0.393,21,0
-5,128,80,0,0,34.6,0.144,45,0
-4,94,65,22,0,24.7,0.148,21,0
-7,114,64,0,0,27.4,0.732,34,1
-0,102,78,40,90,34.5,0.238,24,0
-2,111,60,0,0,26.2,0.343,23,0
-1,128,82,17,183,27.5,0.115,22,0
-10,92,62,0,0,25.9,0.167,31,0
-13,104,72,0,0,31.2,0.465,38,1
-5,104,74,0,0,28.8,0.153,48,0
-2,94,76,18,66,31.6,0.649,23,0
-7,97,76,32,91,40.9,0.871,32,1
-1,100,74,12,46,19.5,0.149,28,0
-0,102,86,17,105,29.3,0.695,27,0
-4,128,70,0,0,34.3,0.303,24,0
-6,147,80,0,0,29.5,0.178,50,1
-4,90,0,0,0,28,0.61,31,0
-3,103,72,30,152,27.6,0.73,27,0
-2,157,74,35,440,39.4,0.134,30,0
-1,167,74,17,144,23.4,0.447,33,1
-0,179,50,36,159,37.8,0.455,22,1
-11,136,84,35,130,28.3,0.26,42,1
-0,107,60,25,0,26.4,0.133,23,0
-1,91,54,25,100,25.2,0.234,23,0
-1,117,60,23,106,33.8,0.466,27,0
-5,123,74,40,77,34.1,0.269,28,0
-2,120,54,0,0,26.8,0.455,27,0
-1,106,70,28,135,34.2,0.142,22,0
-2,155,52,27,540,38.7,0.24,25,1
-2,101,58,35,90,21.8,0.155,22,0
-1,120,80,48,200,38.9,1.162,41,0
-11,127,106,0,0,39,0.19,51,0
-3,80,82,31,70,34.2,1.292,27,1
-10,162,84,0,0,27.7,0.182,54,0
-1,199,76,43,0,42.9,1.394,22,1
-8,167,106,46,231,37.6,0.165,43,1
-9,145,80,46,130,37.9,0.637,40,1
-6,115,60,39,0,33.7,0.245,40,1
-1,112,80,45,132,34.8,0.217,24,0
-4,145,82,18,0,32.5,0.235,70,1
-10,111,70,27,0,27.5,0.141,40,1
-6,98,58,33,190,34,0.43,43,0
-9,154,78,30,100,30.9,0.164,45,0
-6,165,68,26,168,33.6,0.631,49,0
-1,99,58,10,0,25.4,0.551,21,0
-10,68,106,23,49,35.5,0.285,47,0
-3,123,100,35,240,57.3,0.88,22,0
-8,91,82,0,0,35.6,0.587,68,0
-6,195,70,0,0,30.9,0.328,31,1
-9,156,86,0,0,24.8,0.23,53,1
-0,93,60,0,0,35.3,0.263,25,0
-3,121,52,0,0,36,0.127,25,1
-2,101,58,17,265,24.2,0.614,23,0
-2,56,56,28,45,24.2,0.332,22,0
-0,162,76,36,0,49.6,0.364,26,1
-0,95,64,39,105,44.6,0.366,22,0
-4,125,80,0,0,32.3,0.536,27,1
-5,136,82,0,0,0,0.64,69,0
-2,129,74,26,205,33.2,0.591,25,0
-3,130,64,0,0,23.1,0.314,22,0
-1,107,50,19,0,28.3,0.181,29,0
-1,140,74,26,180,24.1,0.828,23,0
-1,144,82,46,180,46.1,0.335,46,1
-8,107,80,0,0,24.6,0.856,34,0
-13,158,114,0,0,42.3,0.257,44,1
-2,121,70,32,95,39.1,0.886,23,0
-7,129,68,49,125,38.5,0.439,43,1
-2,90,60,0,0,23.5,0.191,25,0
-7,142,90,24,480,30.4,0.128,43,1
-3,169,74,19,125,29.9,0.268,31,1
-0,99,0,0,0,25,0.253,22,0
-4,127,88,11,155,34.5,0.598,28,0
-4,118,70,0,0,44.5,0.904,26,0
-2,122,76,27,200,35.9,0.483,26,0
-6,125,78,31,0,27.6,0.565,49,1
-1,168,88,29,0,35,0.905,52,1
-2,129,0,0,0,38.5,0.304,41,0
-4,110,76,20,100,28.4,0.118,27,0
-6,80,80,36,0,39.8,0.177,28,0
-10,115,0,0,0,0,0.261,30,1
-2,127,46,21,335,34.4,0.176,22,0
-9,164,78,0,0,32.8,0.148,45,1
-2,93,64,32,160,38,0.674,23,1
-3,158,64,13,387,31.2,0.295,24,0
-5,126,78,27,22,29.6,0.439,40,0
-10,129,62,36,0,41.2,0.441,38,1
-0,134,58,20,291,26.4,0.352,21,0
-3,102,74,0,0,29.5,0.121,32,0
-7,187,50,33,392,33.9,0.826,34,1
-3,173,78,39,185,33.8,0.97,31,1
-10,94,72,18,0,23.1,0.595,56,0
-1,108,60,46,178,35.5,0.415,24,0
-5,97,76,27,0,35.6,0.378,52,1
-4,83,86,19,0,29.3,0.317,34,0
-1,114,66,36,200,38.1,0.289,21,0
-1,149,68,29,127,29.3,0.349,42,1
-5,117,86,30,105,39.1,0.251,42,0
-1,111,94,0,0,32.8,0.265,45,0
-4,112,78,40,0,39.4,0.236,38,0
-1,116,78,29,180,36.1,0.496,25,0
-0,141,84,26,0,32.4,0.433,22,0
-2,175,88,0,0,22.9,0.326,22,0
-2,92,52,0,0,30.1,0.141,22,0
-3,130,78,23,79,28.4,0.323,34,1
-8,120,86,0,0,28.4,0.259,22,1
-2,174,88,37,120,44.5,0.646,24,1
-2,106,56,27,165,29,0.426,22,0
-2,105,75,0,0,23.3,0.56,53,0
-4,95,60,32,0,35.4,0.284,28,0
-0,126,86,27,120,27.4,0.515,21,0
-8,65,72,23,0,32,0.6,42,0
-2,99,60,17,160,36.6,0.453,21,0
-1,102,74,0,0,39.5,0.293,42,1
-11,120,80,37,150,42.3,0.785,48,1
-3,102,44,20,94,30.8,0.4,26,0
-1,109,58,18,116,28.5,0.219,22,0
-9,140,94,0,0,32.7,0.734,45,1
-13,153,88,37,140,40.6,1.174,39,0
-12,100,84,33,105,30,0.488,46,0
-1,147,94,41,0,49.3,0.358,27,1
-1,81,74,41,57,46.3,1.096,32,0
-3,187,70,22,200,36.4,0.408,36,1
-6,162,62,0,0,24.3,0.178,50,1
-4,136,70,0,0,31.2,1.182,22,1
-1,121,78,39,74,39,0.261,28,0
-3,108,62,24,0,26,0.223,25,0
-0,181,88,44,510,43.3,0.222,26,1
-8,154,78,32,0,32.4,0.443,45,1
-1,128,88,39,110,36.5,1.057,37,1
-7,137,90,41,0,32,0.391,39,0
-0,123,72,0,0,36.3,0.258,52,1
-1,106,76,0,0,37.5,0.197,26,0
-6,190,92,0,0,35.5,0.278,66,1
-2,88,58,26,16,28.4,0.766,22,0
-9,170,74,31,0,44,0.403,43,1
-9,89,62,0,0,22.5,0.142,33,0
-10,101,76,48,180,32.9,0.171,63,0
-2,122,70,27,0,36.8,0.34,27,0
-5,121,72,23,112,26.2,0.245,30,0
-1,126,60,0,0,30.1,0.349,47,1
-1,93,70,31,0,30.4,0.315,23,0
\ No newline at end of file
diff --git a/task1.dat b/task1.dat
deleted file mode 100644
index ede2c811006b2a44ecefabead5f2f43c0ae9bcd1..0000000000000000000000000000000000000000
--- a/task1.dat
+++ /dev/null
@@ -1,768 +0,0 @@
-148
-85
-183
-89
-137
-116
-78
-115
-197
-125
-110
-168
-139
-189
-166
-100
-118
-107
-103
-115
-126
-99
-196
-119
-143
-125
-147
-97
-145
-117
-109
-158
-88
-92
-122
-103
-138
-102
-90
-111
-180
-133
-106
-171
-159
-180
-146
-71
-103
-105
-103
-101
-88
-176
-150
-73
-187
-100
-146
-105
-84
-133
-44
-141
-114
-99
-109
-109
-95
-146
-100
-139
-126
-129
-79
-0
-62
-95
-131
-112
-113
-74
-83
-101
-137
-110
-106
-100
-136
-107
-80
-123
-81
-134
-142
-144
-92
-71
-93
-122
-163
-151
-125
-81
-85
-126
-96
-144
-83
-95
-171
-155
-89
-76
-160
-146
-124
-78
-97
-99
-162
-111
-107
-132
-113
-88
-120
-118
-117
-105
-173
-122
-170
-84
-96
-125
-100
-93
-129
-105
-128
-106
-108
-108
-154
-102
-57
-106
-147
-90
-136
-114
-156
-153
-188
-152
-99
-109
-88
-163
-151
-102
-114
-100
-131
-104
-148
-120
-110
-111
-102
-134
-87
-79
-75
-179
-85
-129
-143
-130
-87
-119
-0
-73
-141
-194
-181
-128
-109
-139
-111
-123
-159
-135
-85
-158
-105
-107
-109
-148
-113
-138
-108
-99
-103
-111
-196
-162
-96
-184
-81
-147
-179
-140
-112
-151
-109
-125
-85
-112
-177
-158
-119
-142
-100
-87
-101
-162
-197
-117
-142
-134
-79
-122
-74
-171
-181
-179
-164
-104
-91
-91
-139
-119
-146
-184
-122
-165
-124
-111
-106
-129
-90
-86
-92
-113
-111
-114
-193
-155
-191
-141
-95
-142
-123
-96
-138
-128
-102
-146
-101
-108
-122
-71
-106
-100
-106
-104
-114
-108
-146
-129
-133
-161
-108
-136
-155
-119
-96
-108
-78
-107
-128
-128
-161
-151
-146
-126
-100
-112
-167
-144
-77
-115
-150
-120
-161
-137
-128
-124
-80
-106
-155
-113
-109
-112
-99
-182
-115
-194
-129
-112
-124
-152
-112
-157
-122
-179
-102
-105
-118
-87
-180
-106
-95
-165
-117
-115
-152
-178
-130
-95
-0
-122
-95
-126
-139
-116
-99
-0
-92
-137
-61
-90
-90
-165
-125
-129
-88
-196
-189
-158
-103
-146
-147
-99
-124
-101
-81
-133
-173
-118
-84
-105
-122
-140
-98
-87
-156
-93
-107
-105
-109
-90
-125
-119
-116
-105
-144
-100
-100
-166
-131
-116
-158
-127
-96
-131
-82
-193
-95
-137
-136
-72
-168
-123
-115
-101
-197
-172
-102
-112
-143
-143
-138
-173
-97
-144
-83
-129
-119
-94
-102
-115
-151
-184
-94
-181
-135
-95
-99
-89
-80
-139
-90
-141
-140
-147
-97
-107
-189
-83
-117
-108
-117
-180
-100
-95
-104
-120
-82
-134
-91
-119
-100
-175
-135
-86
-148
-134
-120
-71
-74
-88
-115
-124
-74
-97
-120
-154
-144
-137
-119
-136
-114
-137
-105
-114
-126
-132
-158
-123
-85
-84
-145
-135
-139
-173
-99
-194
-83
-89
-99
-125
-80
-166
-110
-81
-195
-154
-117
-84
-0
-94
-96
-75
-180
-130
-84
-120
-84
-139
-91
-91
-99
-163
-145
-125
-76
-129
-68
-124
-114
-130
-125
-87
-97
-116
-117
-111
-122
-107
-86
-91
-77
-132
-105
-57
-127
-129
-100
-128
-90
-84
-88
-186
-187
-131
-164
-189
-116
-84
-114
-88
-84
-124
-97
-110
-103
-85
-125
-198
-87
-99
-91
-95
-99
-92
-154
-121
-78
-130
-111
-98
-143
-119
-108
-118
-133
-197
-151
-109
-121
-100
-124
-93
-143
-103
-176
-73
-111
-112
-132
-82
-123
-188
-67
-89
-173
-109
-108
-96
-124
-150
-183
-124
-181
-92
-152
-111
-106
-174
-168
-105
-138
-106
-117
-68
-112
-119
-112
-92
-183
-94
-108
-90
-125
-132
-128
-94
-114
-102
-111
-128
-92
-104
-104
-94
-97
-100
-102
-128
-147
-90
-103
-157
-167
-179
-136
-107
-91
-117
-123
-120
-106
-155
-101
-120
-127
-80
-162
-199
-167
-145
-115
-112
-145
-111
-98
-154
-165
-99
-68
-123
-91
-195
-156
-93
-121
-101
-56
-162
-95
-125
-136
-129
-130
-107
-140
-144
-107
-158
-121
-129
-90
-142
-169
-99
-127
-118
-122
-125
-168
-129
-110
-80
-115
-127
-164
-93
-158
-126
-129
-134
-102
-187
-173
-94
-108
-97
-83
-114
-149
-117
-111
-112
-116
-141
-175
-92
-130
-120
-174
-106
-105
-95
-126
-65
-99
-102
-120
-102
-109
-140
-153
-100
-147
-81
-187
-162
-136
-121
-108
-181
-154
-128
-137
-123
-106
-190
-88
-170
-89
-101
-122
-121
-126
-93