From 6afb0f8bdf0079fe4250884936a41cc130317e7a Mon Sep 17 00:00:00 2001 From: zoonalink <zoonalink@gmail.com> Date: Sun, 18 Dec 2022 23:20:51 +0000 Subject: [PATCH] Task_1 completed --- 2022-12-18-23-11-02.png | Bin 0 -> 118520 bytes Task1 reflect notes-DELETE.md | 11 - UFCFVQ-15-M_Programming_Task_1.ipynb | 1237 ------------------- UFCFVQ-15-M_Programming_Task_1_submit.ipynb | 126 +- archived/Task1_FR_reflections.md | 89 ++ 5 files changed, 122 insertions(+), 1341 deletions(-) create mode 100644 2022-12-18-23-11-02.png delete mode 100644 Task1 reflect notes-DELETE.md delete mode 100644 UFCFVQ-15-M_Programming_Task_1.ipynb create mode 100644 archived/Task1_FR_reflections.md diff --git a/2022-12-18-23-11-02.png b/2022-12-18-23-11-02.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a39e1203baf4966d6c44f95f1e7795cbbc44e5 GIT binary patch literal 118520 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.`< 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 R7#J8BJYD@<);T3K0RXJpYLx&0 literal 0 HcmV?d00001 diff --git a/Task1 reflect notes-DELETE.md b/Task1 reflect notes-DELETE.md deleted file mode 100644 index 8947e19..0000000 --- a/Task1 reflect notes-DELETE.md +++ /dev/null @@ -1,11 +0,0 @@ -# file to store 'development process report' notes for task 1 - -* pleasure of the process; also frustrating -* process - crisp-dm - iterative -* related to work - > importance of requirements and flexing, agility -* pseudo code - getting into habit has been very useful (have a tendency, which I need to fight, to dive into the deep end and just manage to keep afloat) -* getting into git (hub, lab) - but have been frustrated (authentication with gitlab - needing to switch to https from ssh, despite seemingly set up correctly) -* single powerful tool, work environment - vs code - revolutionary -* documentation - robust, standardised, conventions - i.e. commenting -* intersections of domain, maths, coding -* not enough time diff --git a/UFCFVQ-15-M_Programming_Task_1.ipynb b/UFCFVQ-15-M_Programming_Task_1.ipynb deleted file mode 100644 index bf82610..0000000 --- a/UFCFVQ-15-M_Programming_Task_1.ipynb +++ /dev/null @@ -1,1237 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "# UFCFVQ-15-M Programming for Data Science (Autumn 2022)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">OVERALL COURSEWORK MARK: ___%</p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "### GitLab link submission, README.md file and Git commit messages\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "# Programming Task 1\n", - "\n", - "## Student Id: 05976423" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "### Requirement FR1 - Develop a function to find the arithmetic mean" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "$$\n", - "{\\displaystyle A={\\frac {1}{n}}\\sum _{i=1}^{n}a_{i}={\\frac {a_{1}+a_{2}+\\cdots +a_{n}}{n}}}\n", - "$$\n", - "\n", - "##### <b>`Pseudocode / Plan:`</b> \n", - "\n", - "<b>`Input:`</b> list of values\n", - "\n", - "<b>`Steps:` </b>\n", - "\n", - "1. sum list values\n", - "2. divide sum of list values by count (len) of list of values\n", - "3. return result\n", - "4. add try except block\n", - "\n", - "<b>`Output:`</b>\n", - "\n", - "* arithmetic mean" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "deletable": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "47.62" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# list of numbers\n", - "list = [85, 29, 35, 55, 82, 45, 42, 21, 42, 60, 56, 30, 72, 56, 37, 65, 29, 14, 66, 43, 23, 39, 81, 56, 74, 29, 22, 27, 14, 66, 55, 33, 31, 66, 63, 41, 30, 48, 68, 58, 51, 44, 66, 34, 20, 71, 59, 57, 43, 48]\n", - "\n", - "\n", - "\n", - "def mean(list):\n", - " '''\n", - " Function to calculate arithmetic mean - i.e. sum of data divided by number of data points.\n", - " '''\n", - " try:\n", - " #print(sum(list) / len(list))\n", - " return sum(list) / len(list)\n", - " except ZeroDivisionError:\n", - " print(\"Error: Division by zero. List is empty\")\n", - " except TypeError:\n", - " print(\"Error: Invalid typ in list. List must contain only numbers\")\n", - " except:\n", - " print(\"Error with list of numbers. Please check list\")\n", - "mean(list)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "### Requirement FR2 - Develop a function to read a single column from a CSV file" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "##### <b>`Pseudocode / Plan:`</b> \n", - "\n", - "<b>`Input:`</b> filename/path\n", - "\n", - "<b>`Parameters:` </b>\n", - "\n", - "* file - name, path\n", - "* column to read - column number (0 - n-1, where n is number of columns)\n", - "* delimiter - assume comma (,), but allow for other separator, e.g. /t (tab), | (pipe), etc.\n", - "* header - True / False, default = True\n", - "\n", - "<b>`Steps:` </b>\n", - "\n", - "1. Open file (with open, so autocloses file)\n", - "2. if / else for header status\n", - "3. extract column name as value\n", - "4. iterate over remaining lines with list comprehension to return list of values in column\n", - "5. return column name and values or just values\n", - "6. add try except block\n", - "\n", - "<b>`Output:`</b>\n", - "\n", - "* If header = True, return column name as value and list of data, else return only list of values\n" - ] - }, - { - "cell_type": "code", - "execution_count": 201, - "metadata": { - "deletable": false - }, - "outputs": [], - "source": [ - "\n", - "def data_from_column(filename, columnNum, delimiter = ',', header = True):\n", - " '''\n", - " Function to read csv file and return a list of data from a specified column (by column number 0 to n-1). Default delimiter is comma. If header is True, the function will return the column name and the data in a list. If header is False, the function will return the data in a list.\n", - " '''\n", - " try:\n", - " with open(filename) as openFile:\n", - " if header == True:\n", - " variable = next(openFile).split(delimiter)[columnNum] \n", - " data = [line.split(delimiter)[columnNum] for line in openFile] \n", - " return variable, data\n", - " else:\n", - " return [line.split(delimiter)[columnNum] for line in openFile]\n", - " except FileNotFoundError:\n", - " print(\"Error: File not found. Please check file name, extension and path\")\n", - " except:\n", - " print(\"Error with file. Please check file\")\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Return column names and data from csv file with header row\n", - "variable, data = data_from_column('task1.csv', 1, header = True)\n", - "print(variable)\n", - "print(data)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Demo where returns only data (assuming file has no header row) - note task1.csv has a header row so 'pop' included in list\n", - "data = data_from_column('task1.csv', 1, ',', header = False)\n", - "print(data)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "### Requirement FR3 - Develop a function to read CSV data from a file into memory" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "##### <b>`Pseudocode:`</b> \n", - "\n", - "<b>`Input:`</b> filename/path\n", - "\n", - "<b>`Parameters:` </b>\n", - "\n", - "* file\n", - "* column to read, by column number (0 - n-1, where n is number of columns)\n", - "* delimiter - assume comma (,), but allow for other separator, e.g. /t (tab), | (pipe), etc.\n", - "* header - True / False, default = True\n", - " \n", - "\n", - "<b>`Output:`</b>\n", - "\n", - "* If header = True, return column name as value and list of data, else return only list of values\n" - ] - }, - { - "cell_type": "code", - "execution_count": 205, - "metadata": {}, - "outputs": [], - "source": [ - "def read_csv_into_dictionary(filename, delimiter = ','):\n", - " '''\n", - " Function to read csv file and return a dictionary with column names as keys and data as values. Default delimiter is comma. Assumes that the first line of the file contains the column names (i.e. header).\n", - " '''\n", - " try:\n", - " with open(filename) as openFile:\n", - " variable = next(openFile).split(delimiter)\n", - " data = [line.split(delimiter) for line in openFile]\n", - " variableData_dict = {variable[i]: [row[i] for row in data] for i in range(len(variable))}\n", - " return variableData_dict\n", - "\n", - " except FileNotFoundError:\n", - " print(\"Error: File not found. Please check file name, extension and path\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "read_csv_into_dictionary('task1.csv')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "### Requirement FR4 - Develop a function to calculate the Pearson Correlation Coefficient for two named columns" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### `Pearson's R formulae`\n", - "\n", - "Given paired data, consisting of $n$ pairs: \n", - "$$\n", - "\n", - "\\displaystyle\n", - "r =\n", - " \\frac{ \\sum_{i=1}^{n}(x_i-\\bar{x})(y_i-\\bar{y}) }{%\n", - " \\sqrt{\\sum_{i=1}^{n}(x_i-\\bar{x})^2}\\sqrt{\\sum_{i=1}^{n}(y_i-\\bar{y})^2}}\n", - "$$\n", - "\n", - "\n", - "\n", - "Pearson's correlation coefficient measures linear association between two variables\n", - "* range of -1 to 1\n", - "* -1 = perfect negative linear correlation\n", - "* 1 = perfect positive linear correlation\n", - "\n", - "source: [Wikipedia](https://en.wikipedia.org/wiki/Pearson_correlation_coefficient#Definition)\n", - "\n", - "\n", - "##### <b>`Pseudocode:`</b> \n", - "\n", - "<b>`Input:`</b> Two lists of values\n", - "\n", - "<b>`Parameters:` </b> Just the lists\n", - "\n", - "<b>`Output:`</b>\n", - "\n", - "* <strike>variable 1 name, variable 2 name, </strike> r Pearson's correlation coefficient\n", - "\n", - "\n", - "<b>`Steps: `</b>\n", - "\n", - "1. get data - two lists (x, y)\n", - "2. check that input is correct (try / except):\n", - "* must be lists\n", - "* must only have numbers\n", - "* must be the same length\n", - "* must be of length > 0\n", - "3. calculating pieces for r coeff\n", - "* averages of x, y (use FR1)\n", - "* iterations:\n", - " * x_diff = $x_i - x_m$\n", - " * y_diff = $y_i - y_m$\n", - "* sums of interations :\n", - " * sum_prod_diff += x_diff * y_diff\n", - " * sum_sq_x_diff += x_diff * x_diff\n", - " * sum_sq_y_diff += y_diff * y_diff\n", - "\n", - "4. calculating r:\n", - "* r = sum_prod_diff / sqrt(sum_sq_x_diff * sum_sq_y_diff)\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "deletable": false - }, - "outputs": [], - "source": [ - "\n", - "\n", - "def pearsonCorrCoef(x, y):\n", - " '''\n", - " Function to calculate Pearson's Correlation Coefficient for two lists of numbers. Returns Pearson's Correlation Coefficient. \n", - " \n", - " r = sum of products of differences / sqrt[(sum of squares of differences x * sum of squares of differences y)]\n", - "\n", - " r = sum[(x - avg_x) * (y - avg_y)] / [sum((x - avg_x) ** 2) * sum((y - avg_y) ** 2] ** 0.5\n", - " '''\n", - " \n", - " try: \n", - " # Check that x and y are lists of the same length, error if not\n", - " \n", - " assert len(x) == len(y)\n", - " n = len(x) # number of data points in lists\n", - " assert n > 0 # check that there is at least one data point\n", - " except AssertionError:\n", - " print(\"Error: x and y MUST be same-length lists of only numbers in order to calculate Pearson's Correlation Coefficient\")\n", - " return None\n", - "\n", - " # arithmetic mean of x, y using FR1 function\n", - " avg_x = mean(x)\n", - " avg_y = mean(y)\n", - " \n", - " # initiate variables which will hold sums of columns needed to calculate Pearson's Correlation Coefficient\n", - " # sum of products of differences (x - avg_x) * (y - avg_y)\n", - " # sum of squares of differences (x - avg_x) ** 2\n", - " # sum of squares of differences (y - avg_y) ** 2\n", - "\n", - " sum_prod_diff = 0\n", - " sum_sq_x_diff = 0 \n", - " sum_sq_y_diff = 0\n", - " \n", - " #iterate to caculate sums needed - sums of products of differences, sums of squares of differences x, sums of squares of differences y\n", - "\n", - " for i in range(n):\n", - " x_diff = x[i] - avg_x\n", - " y_diff = y[i] - avg_y\n", - " sum_prod_diff += x_diff * y_diff\n", - " sum_sq_x_diff += x_diff ** 2\n", - " sum_sq_y_diff += y_diff ** 2\n", - " \n", - " # calculate Pearson's Correlation Coefficient\n", - " r = sum_prod_diff/ (sum_sq_x_diff * sum_sq_y_diff) ** 0.5\n", - " \n", - " #print options based on number of data points\n", - "\n", - " if n<5:\n", - " print(\"Pearson's Correlation Coefficient for\", x, \"and\", y, \"is\", round(r,4), \"with\", n, \"data points\")\n", - " #return r\n", - " else:\n", - " print(\"Pearson's Correlation Coefficient for\", str(x[0:4])+\"... and\", str(y[0:4])+\"... is\", round(r,4), \"with\", n, \"data points\")\n", - " #return r\n" - ] - }, - { - "cell_type": "code", - "execution_count": 206, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pearson's Correlation Coefficient for [1, 2, 3, 5] and [1, 5, 7, 8] is 0.8984458631125747 with 4 data points\n" - ] - }, - { - "data": { - "text/plain": [ - "0.8984458631125747" - ] - }, - "execution_count": 206, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "x = [1, 2, 3, 5]\n", - "y = [1, 5, 7, 8]\n", - "pearsonCorrCoef(x, y)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "### Requirement FR5 - Develop a function to generate a set of Pearson Correlation Coefficients for a given data file " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "\n", - "##### <b>`Pseudocode:`</b> \n", - "\n", - "\n", - "<font color = red> Questions: </font> \n", - "- is this reading a csv and specifying columns by name as function parameters? \n", - "- or somehow return available columns and allowing user to input which ones to use?\n", - "- or by column number - maybe combination of both?? \n", - " - tell user columns with col number and ask to input two numbers??\n", - "- maybe I could use above function x2 - choose col 1, then choose col 2\n", - "- <b> TBD </b>\n", - "\n", - "<b>`Input:`</b> data read into memory using FR3 (read_csv_into_dictionary); dictionary of colname/data k-v pairs\n", - "\n", - "<b>`Parameters:` </b> filename\n", - "\n", - "<b>`Output:`</b>\n", - "\n", - "* variable 1 name, variable 2 name, r (Pearson's correlation coefficient) for each k-v pair in dictionary\n", - "\n", - "<b>`Steps: `</b>\n", - "\n", - "1. read data into memory using `read_csv_into_dictionary` => dictionary of colname, data k-v pairs\n", - "2. iterate over dictonary data in for-if loop or list comprehension - \n", - " * iterate to make pairs from dictionary?\n", - " * passing into `pearsonCorrCoeff` function\n", - " * need to modify `pearsonCorrCoeff` for print statements and output.\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 186, - "metadata": {}, - "outputs": [], - "source": [ - "x = [1, 2, 3, 5, 2]\n", - "y = [1, 5, 7, 8, 5]\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "deletable": false - }, - "outputs": [], - "source": [ - "\n", - "\n", - "def pearsonCorrCoef_simple(x,y):\n", - " '''\n", - " Function to calculate Pearson's Correlation Coefficient two lists of numbers. Returns Pearson's Correlation Coefficient. As above, but without print options.\n", - " '''\n", - " \n", - " n = len(x) # number of data points\n", - " \n", - " # arithmetic mean of x, y\n", - " avg_x = mean(x)\n", - " avg_y = mean(y)\n", - " \n", - " # initiate variables holding sums of rows needed to calculate Pearson's Correlation Coefficient\n", - " \n", - " sum_prod_diff = 0\n", - " sum_sq_x_diff = 0 \n", - " sum_sq_y_diff = 0\n", - " \n", - " #iterate to caculate sums needed, as above\n", - "\n", - " for i in range(n):\n", - " x_diff = x[i] - avg_x\n", - " y_diff = y[i] - avg_y\n", - " sum_prod_diff += x_diff * y_diff\n", - " sum_sq_x_diff += x_diff ** 2\n", - " sum_sq_y_diff += y_diff ** 2\n", - " \n", - " #calculate Pearson's Correlation Coefficient\n", - " r = sum_prod_diff/ (sum_sq_x_diff * sum_sq_y_diff) ** 0.5\n", - "\n", - " return r\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 223, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[-0.3872983346207417, -0.1889822365046136, -0.5367450401216932]" - ] - }, - "execution_count": 223, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dict2 = {'a': [1, 1, 2, 1,3, 4], 'd': [2, 5, 6,4, 3, 2], 'e': [13, 9, 7,6,7,9]}\n", - "\n", - "data = [i for i in dict2.values()]\n", - "variable = [i for i in dict2.keys()]\n", - "#[pearsonCorrCoef_simple(data[i], data[j]) for i in range(len(data)) for j in range(i+1,len(data))]\n", - "[pearsonCorrCoef_simple(data[i], data[j]) for i in range(len(data)) for j in range(i+1,len(data))]\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 232, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a a 1.0\n", - "a d -0.3872983346207417\n", - "a e -0.1889822365046136\n", - "d a -0.3872983346207417\n", - "d d 1.0\n", - "d e -0.5367450401216932\n", - "e a -0.1889822365046136\n", - "e d -0.5367450401216932\n", - "e e 1.0\n" - ] - } - ], - "source": [ - "for variable in dict2:\n", - " data = dict2[variable]\n", - " #print(variable, data)\n", - " for variable2 in dict2:\n", - " data2 = dict2[variable2]\n", - " #print(variable2, data2)\n", - " #if variable != variable2:\n", - " pearsonCorrCoef_simple(data, data2)\n", - " print(variable, variable2, pearsonCorrCoef_simple(data, data2))\n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 231, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a d -0.3872983346207417\n", - "a e -0.1889822365046136\n", - "d a -0.3872983346207417\n", - "d e -0.5367450401216932\n", - "e a -0.1889822365046136\n", - "e d -0.5367450401216932\n" - ] - } - ], - "source": [ - "for variable in dict2:\n", - " data = dict2[variable]\n", - " #print(variable, data)\n", - " for variable2 in dict2:\n", - " data2 = dict2[variable2]\n", - " #print(variable2, data2)\n", - " if variable != variable2:\n", - " pearsonCorrCoef_simple(data, data2)\n", - " print(variable, variable2, pearsonCorrCoef_simple(data, data2))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[('age', 'age', 1.0), ('age', 'pop', -0.026709155288578715), ('age', 'share_white', 0.19960545971348648), ('age', 'share_black', -0.08806861565745706), ('age', 'share_hispanic', -0.13679338429773677), ('age', 'personal_income', 0.03247940547175454), ('age', 'household_income', 0.07122884715312655), ('age', 'poverty_rate', -0.11501578217612785), ('age', 'unemployment_rate', -0.08924108157207414), ('age', 'uni_education_25+\\n', -0.015551355328918883), ('pop', 'age', -0.026709155288578715), ('pop', 'pop', 1.0000000000000002), ('pop', 'share_white', 0.0755124299211167), ('pop', 'share_black', -0.15619530865683967), ('pop', 'share_hispanic', 0.06195481228740331), ('pop', 'personal_income', 0.20485917876690452), ('pop', 'household_income', 0.3051738076744344), ('pop', 'poverty_rate', -0.29132966650032943), ('pop', 'unemployment_rate', -0.21783723363180305), ('pop', 'uni_education_25+\\n', 0.11698059897943787), ('share_white', 'age', 0.19960545971348648), ('share_white', 'pop', 0.0755124299211167), ('share_white', 'share_white', 1.0000000000000002), ('share_white', 'share_black', -0.5449723033049567), ('share_white', 'share_hispanic', -0.5774407139938217), ('share_white', 'personal_income', 0.35839184199994806), ('share_white', 'household_income', 0.32212297679344865), ('share_white', 'poverty_rate', -0.49770809057624715), ('share_white', 'unemployment_rate', -0.3896695027097979), ('share_white', 'uni_education_25+\\n', 0.33416476681871427), ('share_black', 'age', -0.08806861565745706), ('share_black', 'pop', -0.15619530865683967), ('share_black', 'share_white', -0.5449723033049567), ('share_black', 'share_black', 1.0), ('share_black', 'share_hispanic', -0.2624176266788398), ('share_black', 'personal_income', -0.2824788256535901), ('share_black', 'household_income', -0.34673961691580957), ('share_black', 'poverty_rate', 0.4306656974717496), ('share_black', 'unemployment_rate', 0.4836283024208505), ('share_black', 'uni_education_25+\\n', -0.2129601024183306), ('share_hispanic', 'age', -0.13679338429773677), ('share_hispanic', 'pop', 0.06195481228740331), ('share_hispanic', 'share_white', -0.5774407139938217), ('share_hispanic', 'share_black', -0.2624176266788398), ('share_hispanic', 'share_hispanic', 1.0000000000000002), ('share_hispanic', 'personal_income', -0.2231256947246905), ('share_hispanic', 'household_income', -0.13596088920701366), ('share_hispanic', 'poverty_rate', 0.20829495353292043), ('share_hispanic', 'unemployment_rate', 0.014748972805766968), ('share_hispanic', 'uni_education_25+\\n', -0.2909783037426069), ('personal_income', 'age', 0.03247940547175454), ('personal_income', 'pop', 0.20485917876690452), ('personal_income', 'share_white', 0.35839184199994806), ('personal_income', 'share_black', -0.2824788256535901), ('personal_income', 'share_hispanic', -0.2231256947246905), ('personal_income', 'personal_income', 1.0), ('personal_income', 'household_income', 0.8319631230491987), ('personal_income', 'poverty_rate', -0.6959234082905974), ('personal_income', 'unemployment_rate', -0.5049325127827728), ('personal_income', 'uni_education_25+\\n', 0.7166080399373852), ('household_income', 'age', 0.07122884715312655), ('household_income', 'pop', 0.3051738076744344), ('household_income', 'share_white', 0.32212297679344865), ('household_income', 'share_black', -0.34673961691580957), ('household_income', 'share_hispanic', -0.13596088920701366), ('household_income', 'personal_income', 0.8319631230491987), ('household_income', 'household_income', 1.0), ('household_income', 'poverty_rate', -0.7541757449430393), ('household_income', 'unemployment_rate', -0.5099954109970329), ('household_income', 'uni_education_25+\\n', 0.6729008330623418), ('poverty_rate', 'age', -0.11501578217612785), ('poverty_rate', 'pop', -0.29132966650032943), ('poverty_rate', 'share_white', -0.49770809057624715), ('poverty_rate', 'share_black', 0.4306656974717496), ('poverty_rate', 'share_hispanic', 0.20829495353292043), ('poverty_rate', 'personal_income', -0.6959234082905974), ('poverty_rate', 'household_income', -0.7541757449430393), ('poverty_rate', 'poverty_rate', 1.0000000000000002), ('poverty_rate', 'unemployment_rate', 0.5916868406520023), ('poverty_rate', 'uni_education_25+\\n', -0.46033635796187616), ('unemployment_rate', 'age', -0.08924108157207414), ('unemployment_rate', 'pop', -0.21783723363180305), ('unemployment_rate', 'share_white', -0.3896695027097979), ('unemployment_rate', 'share_black', 0.4836283024208505), ('unemployment_rate', 'share_hispanic', 0.014748972805766968), ('unemployment_rate', 'personal_income', -0.5049325127827728), ('unemployment_rate', 'household_income', -0.5099954109970329), ('unemployment_rate', 'poverty_rate', 0.5916868406520023), ('unemployment_rate', 'unemployment_rate', 1.0), ('unemployment_rate', 'uni_education_25+\\n', -0.4663884373739078), ('uni_education_25+\\n', 'age', -0.015551355328918883), ('uni_education_25+\\n', 'pop', 0.11698059897943787), ('uni_education_25+\\n', 'share_white', 0.33416476681871427), ('uni_education_25+\\n', 'share_black', -0.2129601024183306), ('uni_education_25+\\n', 'share_hispanic', -0.2909783037426069), ('uni_education_25+\\n', 'personal_income', 0.7166080399373852), ('uni_education_25+\\n', 'household_income', 0.6729008330623418), ('uni_education_25+\\n', 'poverty_rate', -0.46033635796187616), ('uni_education_25+\\n', 'unemployment_rate', -0.4663884373739078), ('uni_education_25+\\n', 'uni_education_25+\\n', 1.0000000000000002)]\n" - ] - } - ], - "source": [ - "\n", - "results = [(variable, variable2, pearsonCorrCoef(my_dict[variable], my_dict[variable2]))\n", - " for variable in my_dict\n", - " for variable2 in my_dict]\n", - "print(results)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "my_dict = read_csv_into_dictionary('task1.csv')\n", - "\n", - "\n", - "\n", - "for variable in my_dict:\n", - " data = my_dict[variable]\n", - " \n", - "\n", - " for variable2 in my_dict:\n", - " data2 = my_dict[variable2] \n", - " r = PCC_simple(data, data2)\n", - "\n", - " print([(variable, variable2, r)])\n", - " \n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a d -0.3872983346207417\n", - "a e -0.1889822365046136\n", - "d a -0.3872983346207417\n", - "d e -0.5367450401216932\n", - "e a -0.1889822365046136\n", - "e d -0.5367450401216932\n" - ] - } - ], - "source": [ - "for variable in dict2:\n", - " data = dict2[variable]\n", - " #print(variable, data)\n", - " for variable2 in dict2:\n", - " data2 = dict2[variable2]\n", - " #print(variable2, data2)\n", - " if variable != variable2:\n", - " pearsonCorrCoef_simple(data, data2)\n", - " print(variable, variable2, pearsonCorrCoef_simple(data, data2))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "deletable": false - }, - "outputs": [], - "source": [ - "# replace with your code" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### <b> delete </b>\n", - "\n", - "* output (see appendix 4)\n", - " * input: \n", - " * print list of columns (variables) available in csv/data??\n", - " * user input by name?? or colnumber?? confirmation??\n", - "\n", - "* output: \n", - " * return results as input, with nicely bordered tables - old-school dot-matrix print outs (like r)\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "### Requirement FR6 - Develop a function to print a custom table" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### <b>`Pseudocode:`</b> \n", - "\n", - "\n", - "<font color = red> Questions: </font> \n", - "\n", - "* are there any limitations to character usage - probably not\n", - "* what is the source of the list of tuples? - probably doesn't matter - i.e. output from FR5 or variable storing list of tuples or list of tuples\n", - "* columns to include?? - not sure what this means yet\n", - "\n", - "* doesn't the list of tuples parameter determine which columns are included? \n", - " * may need to clarify this!\n", - "\n", - "- <b> TBD </b>\n", - "\n", - "<b>`Input:`</b> \n", - "\n", - "* list of tuples, e.g.\n", - " * var1, var1, pcc11\n", - " * var1, var2, pcc12\n", - " * var1, var3, pcc13\n", - " * var1, var4, pcc14\n", - " * var2, var3, pcc23\n", - " * var2, var4, pcc\n", - " * var3, var4, pcc\n", - " * var4, var4, pcc\n", - "\n", - "| | | | |\n", - "|----|-----|-----|-----|\n", - "| |var1 |var2 |var3 |\n", - "|var1|pcc11|pcc12|pcc13|\n", - "|var2|pcc21|pcc22|pcc23|\n", - "|var3|pcc31|pcc32|pcc33|\n", - "\n", - "tuple = [(var1, var1, pcc11), (var1, var2, pcc12)]\n", - "variable list = [var1, var2, var3]\n", - "\n", - "row header = iterate over variable list\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "<b>`Parameters:` </b> \n", - "* source of list of correlation coefficient tuples\n", - "* border character to use\n", - "* columns to include\n", - "\n", - "<b>`Output:`</b>\n", - "\n", - "* nicely printed ascii / dot matrix style table\n", - "* formatted\n", - "* padded / spaced\n", - "* legible\n", - "* footer??\n", - "* title??\n", - "\n", - "<b>`Steps: `</b>\n", - "\n", - "1. No idea, yet...read about string formatting, probably.\n", - "2. list of tuples\n", - " * get variables into list (for header row and first element of each data row)\n", - "3. enumerate over variable list for header row\n", - "4. maybe get data into the right format to iterate over rows\n", - "\n", - "first unique element of each tuple = column headers\n", - "iterate over elements 2, 3 for each tuple to print table\n", - "\n", - "\n", - "\n", - "READ : https://docs.python.org/3/library/string.html#formatspec" - ] - }, - { - "cell_type": "code", - "execution_count": 281, - "metadata": {}, - "outputs": [], - "source": [ - "#test tuple based on appendix example\n", - "\n", - "tup_list = [('Glucose', 'Glucose', 1), ('BP', 'Glucose', 0.1429), ('BMI', 'Glucose', 0.0584), ('Age', 'Glucose', 0.5328), ('Glucose','BP', 0.1429), ('BP', 'BP', 1), ('BMI', 'BP', -0.4522), ('Age', 'BP', 0.4194), ('Glucose', 'BMI', 0.0584), ('BP', 'BMI', -0.4522), ('BMI', 'BMI', 1), ('Age', 'BMI', -0.3847), ('Glucose', 'Age', 0.5328), ('BP', 'Age', 0.4194), ('BMI', 'Age', -0.3847), ('Age', 'Age', 1)]" - ] - }, - { - "cell_type": "code", - "execution_count": 337, - "metadata": {}, - "outputs": [], - "source": [ - "#pull out first element to use for column header - i.e. first row of table\n", - "\n", - "def unique_first_element(tup_list):\n", - " '''\n", - " Function to return a list of unique first elements in a list of tuples\n", - " '''\n", - " unique_list = []\n", - " for elem in tup_list:\n", - " if elem[0] not in unique_list:\n", - " unique_list.append(elem[0])\n", - " return unique_list\n", - "\n", - "unique_first_element(tup_list)\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 343, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Glucose BP BMI Age\n" - ] - } - ], - "source": [ - "\n", - "\n", - "header_row = \"{:>12}\" * (len(unique_first_element(tup_list))+1)\n", - "print(header_row.format(\" \", *unique_first_element(tup_list)))\n", - "\n", - "\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 263, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['A', 'C', 'E', 'G', 'J']" - ] - }, - "execution_count": 263, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def create_table(listTuples, row_labels, col_labels):\n", - " for row_index, label in enumerate(row_labels):\n", - " print(\"{0: <20}\".format(label), end = '')\n", - " for column in listTuples:\n", - " print(\"{0: <20}\".format(column[row_index]), end = '')\n", - " print()\n", - "\n", - "\n", - "\n", - "variables = [var[0] for var in tup_list]\n", - "variables\n", - "#create_table(tup_list, variables, variables)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "# Coding Standards\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "# Process Development Report for Task 1\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Draft version below - 966 words (including everything)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "•\tYou are expected to identify the strengths/weaknesses of your approach. For this programming task, you are expected to write a reflective report which focuses on the process taken to develop a solution to the task. Please reflect on your experiences rather than simply describing what you did. The report should: \n", - "o\tinclude an explanation of how you approached the task.\n", - "o\tidentify any strengths/weaknesses of the approach used.\n", - "o\tconsider how the approach used could be improved.\n", - "o\tsuggest alternative approaches that could have been taken instead of the one you used.\n", - "\n", - "o\tup to 8 marks for the Development Process Report\n", - "\tMarks will be awarded for appropriate use of technical language, critical reflection on development process and quality of engagement with the reflective process\n", - "\n", - "word count - 500 max\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "FR1: arithmetic mean\n", - "\n", - "* easy to implement - good confidence boost\n", - "* allows for getting into a flow of coding, including comments, docstrings, naming conventions (variables and functions), testing, etc.\n", - "* I kept returning to the naming and commenting of early requirements - as they developed. \n", - "* Challenge was getting the balance right - on the one hand, I wanted to ensure that I was including adequate comments but on the other hand, I did not want to over document. Bearing in mind that this is an assessed element of coursework submitted for a master's module, I think I have the right balance. In 'the real world,' I would probably shorten some of the docstrings and remove some in line comments. \n", - "* My tactic has been to try to name variables and functions in an unambiguous, meaningful manner so that documentation is unnecessary.\n", - "* I haven't settled on a style yet - e.g. casing (proper, camel, etc.) and use of underscores. \n", - "* When writing functions, I wanted them to have reuse value - that is, to keep them general. With some requirements, this was not possible - some of my ideas would have deviated from the brief. Examples later. \n", - "* I wanted to use helpful python code where relevant, e.g. try/except blocks with specific (anticipated) errors captured. \n", - "\n", - "* WHat I would do differently:\n", - " * I need to be mindful of using restricted/reserved words as variable names. I have used 'list' in FR1 function. This is not a problem in this instance but it could be in others. I will need to be more careful in future.\n", - " * I also would like to assess the efficiency of my functions - there are so many ways to write functions producing the same outcomes in python. Absolutely amazed at how flexible and powerful it is - but at the moment, I am pleased when I can get my code to work. Efficiency, elegance, etc. will come with time and experience - but I could start using time to assess processing times for different approaches. \n", - "\n", - "FR2: read single column from CSV file\n", - "\n", - "* Again, I wanted to make a reusable function, so I added 'delimiter' as an optional parameter. I prefer to use pipes (|) as delimiters as they are very seldom used in text. This is something I have found handy in data migration work I have undertaken in my current job. Quite often - common characters like commas and 'invisible' spacing characters like tabs, new line, carriage returns, etc. can wreak havoc when migrating data. \n", - "* I liked this function as it was a good opportunity to use the 'with' statement. I like that it 'closes' the file when finished, without a need for an explicit close statement. \n", - "* The challenge for me in this requirement was working out how to extract the header row and then proceed to the data rows. \n", - "* It was a good example of where I knew what I wanted to do and it seemed simple enough, but took some trial and error before I got there (plenty more to come!)\n", - "* Also added a specific FileNotFoundError exception as I expect this to be the most common error.\n", - "* I also added a if/else statement to account for whether the file has a header - returning results accordingly. While this is not in the brief, I was thinking about a future proofed function which can handle both varieties.\n", - "\n", - "FR3: read CSV data from a file into memory\n", - "\n", - "* Much of the above applies - the function docstring is probably a bit long but I wanted to be clear and complete in my documentation.\n", - "* This function builds on FR2 - but returns a dictionary by iterating through the data rows of the file. \n", - "* I worked through many versions of this - for loops, enumerate, etc. - but settled for a list comprehension, once I get it working the way it should. I am not sure if it is the most efficient way to do it, but it works. However, I like the conciseness of list comprehensions - although they may not be as readable as a for loop.\n", - "* In terms of variable names, I am not always clear on the standards - i, j, row, line, etc. and I vary between them - which annoys me. Consistency, clarity, transparency, etc. are very important to me. I am not so happy with 'variable_data_dict' as a name, but couldn't find anything better - 'my_dict', 'data_dict', etc. - I am critical of them all. \n", - "\n", - "\n", - "* one problem I had with FR3 was discovered when using the function in various of FR4. The original dictionary produced string key-value pairs - which when printing looked fine to me. It took me some time to realise that the values were string - that they were enclosed in single quotation marks. This was certainly a source of frustration - when something simply was not behaving the way I was anticipating.\n", - " * However, once I noticed, I tried to amend the list comprehension by convernting to integers with int() - which caused an error - \"invalid literal for int() with base 10: '60.5'\"\n", - " * Therefore I converted the data to floats - which may not be quite right for ages, but will not impact the calculations.\n", - "* \n", - "\n", - "FR4: Pearson Correlation Coefficient\n", - "\n", - "* I spent a lot of time on this function and tried to make it work using several methodologies. \n", - "* Pseudo code was particularly helpful in this instance, but I have a tendency of starting with pseudo code and then deviating into a confused space of trial and error rather than updating the pseudo code. Definitely something I can work on and take away into my current day job. \n", - "* Firstly I needed to remind myself how to calculate Pearson's r having only have had it calculated for me in SPSS or R. There a couple of approaches - but the strategy is to break down the formula into standalone calculations and build the function to produce these before putting it all together to return R. \n", - "* I spent a lot of time trying different approaches. Again, like last time I started with for loops and enumerate() but found that I couldn't always achieve my intentions - that I would get slightly lost in the hierarchy and multilined approach, so I used list comprehensions instead and in the end, I am pleased with the result.\n", - "\n", - "* As previously, I tried thinking about generalising and future-proofing the function for future use and that includes considering what tests / checks / validation I could put in place. The most obvious source of error will be the csv file so I added some assertions to ensure that the csv file has the correct data before proceeding to calculate Pearson's r. \n", - "* I tested my version of Pearsons with numpy corrcoef() and it produces the same results for a small data set, which gives you that excitement of having achieved your intentions.\n", - "\n", - "\n", - "FR5: Pearson Correlation Coefficients for a file\n", - "\n", - "* This function builds on FR4 by calculating Pearson's r for each pair of columns in a csv file.\n", - "* I enjoyed using FR3 and FR4 (which in turn use FR1) within this function. That is pretty cool.\n", - "* It does not have many lines of code but it took me a while to get it working. I had to think about how to iterate through the columns of the csv in terms of what has been returned by FR3 and FR4 and then getting the column names into a list of tuples.\n", - "* It was not plain sailing and there was a fair bit of frustration - another good example of where I knew exactly what I wanted to do but it was hard to get there. I had a few versions on the go - I think I could have benefited by sticking with one and updating the pseudo code. \n", - "* As previously, I moved from for loops to list comprehensions as I had better success getting the results I wanted, especially returning lists of tuples. Initially, I was returning individual lists instead of lists of tuples. \n", - "* The joy of success after some struggle can be very satisfying. \n", - "\n", - "I would probably look to round some of the output in future iterations.\n", - "Actually - I just added the rounding now!\n", - "\n", - "And finally\n", - "\n", - "FR6: printing the results\n", - "\n", - "* I found this FR very challenging and a bit frustrating.\n", - "* I could have benefitted significantly by sticking with my pseudo code and keeping it up to date - but once I got stuck into a cycle of trial and error, minor success and subsequent set-back, I did not rever to pseudocode and focused on cracking the issue which was hampering me. \n", - "* This function was created through trial and error - entirely\n", - "* I broke it down into separate sections and tried to think how I would iterate through the list of tuples to get a decent end result.\n", - "* Some sections worked, others didn't, changes then impacted the rest of the function and I was back to square one - hardforking!\n", - "* Towards the end, I had functioning portions - the top table header, the column headers, the rows headers, the r-values. This was a mess of for loops, list comprehensions, and string formatting which I needed to work through step by step.\n", - "* I found cells in Jupyter notebooks to be invaluable - the ability to run portions of code and easily move it around is very effective and powerul. I also found the ability to comment out sections of code very useful - I could easily comment out sections of code and then uncomment them to see how they impacted the rest of the function.\n", - "* Finally, the pieces (rows of code) were lining up - at this point, I resorted to tweaking and assessing the impact of each change. I discovered that I needed data specific to the input table - rather than fixed widths - so created a separate function to calculate max column widths and then played with that to get the table to look passable. \n", - "\n", - "Whew - got there in the end! \n", - "\n", - "Although this was more challenging to get motivated over as I am sure I would use some library to print tables without the effort and challenge - i.e. pandas, prettytable, etc. However, in hindsight I am glad I persevered as I have learned a lot about string formatting and how to iterate through lists of tuples. It allowed me to trouble-shoot, iterate through a requirement, reassess and rework through many cycles. I am sure I will use this knowledge in the future.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "add markdown text here\n", - "\n", - "coding - use of x, y, common practices, etc.\n", - "naming conventions (camel, underscore, etc.)\n", - "level/amount of commenting\n", - "efficiency of code\n", - "\n", - "\n", - "Thought I was attentive to detail\n", - "Eg print statements \n", - "\n", - "Challenging to get the iteration done\n", - "Know what I want to do but achieving it programmatically is hard and slow\n", - "\n", - "Balancing the need to know vs how to find out what I need to know\n", - "For example researching code, assessing, evaluating, understanding, not assuming. \n", - "\n", - "Knowing fundamentals but not everything. Realistically would use libraries where they do what you need them to. Maybe not most efficient, but most practical or ease of use or pretty. Maybe not quickest run time but quicker to get up and running. There's a balance to be struck - knowing what your requirements are and adapting to them...metaphors I use - chefs and recipes and ingredients and cake shops. Sometimes you need to buy the cake pre-made and decorated, sometimes you make it from scratch, sometimes you buy it and decorate it, sometimes you farm the eggs. \n", - "\n", - "Or building a shed: Building shed analogy \n", - "\n", - "Don't need to know how to build the pieces individually\n", - "Carpentry power tools skills\n", - "May get a better product\n", - "May get exactly what I want\n", - "But requires a sig investment and aptitude whereas can by prefab, deconstructed where hard work done. You can focus on the outcome and the nuance and styling\n", - "\n", - "Or decorating a room - v being interior designer\n", - "\n", - "Coding and documenting. Importance of. Dry wet. Balance. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### <b> Introduction </b>\n", - "\n", - "The purpose of this report is to provide a short, critical self-assessment of all aspects of the code development process undertaken for Task 1 of the assessed coursework for `UFCFVQ-15-M Programming for Data Science`. The report will include a brief description of the code, a reflection on the development process and an evaluation of the code, including strengths and weaknesses and alternatives to consider. \n", - "\n", - "\n", - "### <b> Code Description </b>\n", - "\n", - "The requirement for `Task_1` is to calculate Pearson Correlation Coefficients (PCCs) for all pairs of variables in a given data file, without using any external libraries such as Pandas, and print a decent-looking, customisable table of the results. \n", - "\n", - "The code was written in an interactive Jupyter notebook using a Python 3.11 kernel. \n", - "\n", - "The coursework is structured so that the code must be developed in a series of steps, each building on or incorporating its predecessor. There are six functional requirements (FRs) as follows:\n", - "\n", - "| FR | Description |\n", - "|-----|-----------------------|\n", - "| FR1 | Arithmetic mean | \n", - "| FR2 | Read column from file | \n", - "| FR3 | Read file | \n", - "| FR4 | PCC for two lists | \n", - "| FR5 | PCC for file | \n", - "| FR6 | Print table | \n", - "\n", - "\n", - "Pearson's correlation coefficient measures linear association between two variables, ranging from -1 to 1, where -1 is perfect negative linear correlation and 1 is perfect positive linear correlation. The formula for calculating the PCC is as follows:\n", - "\n", - "Given paired data, consisting of $n$ pairs: \n", - "$$\n", - "\n", - "r =\n", - " \\frac{ \\sum_{i=1}^{n}(x_i-\\bar{x})(y_i-\\bar{y}) }{%\n", - " \\sqrt{\\sum_{i=1}^{n}(x_i-\\bar{x})^2}\\sqrt{\\sum_{i=1}^{n}(y_i-\\bar{y})^2}}\n", - "$$\n", - "\n", - "\n", - "source: [Wikipedia](https://en.wikipedia.org/wiki/Pearson_correlation_coefficient#Definition)\n", - "\n", - "\n", - " \n", - "### <b> Reflection on Development Process</b>\n", - "\n", - "My development process made use of the inherent stratified nature of the task, allowing me to plan, develop and test each FR independently in separate code cells, before combining where appropriate. I found ths particularly useful for the more complex FRs - 4, 5, and 6 which required significant iteration, investigation and testing before achieving the desired results. This also worked very well in terms of source and version control, complementing the use of Git.\n", - "\n", - "My strategy was to use a localised crisp-dm approach which included initial articulation of requirements followed by iterative pseudocode, Python code and testing cycles until the desired results were achieved. I find this approach very effective and it is one I use in my current employment. However, having said that, I find that I can occasionally spiral out of control in the testing phase, which can be time-consuming, frustrating and ultimately less productive. I will continue to try to be mindful of this. \n", - "\n", - "\n", - "[create and insert a crisp-dm diagram here]\n", - "\n", - "I tried to be disciplined in my approach and for the most part feel like I was successful. I made deliberate attempts to make use of newly acquired tools and techniques like Git, VS Code, Jupyter notebooks, Markdown - ensuring that I commented on my code, made use of Markdown cells during the development phase, and committing changes to Git in appropriate intervals.\n", - "\n", - "\n", - "### <b> Code Evaluation </b>\n", - "\n", - "When it comes to code evaluation, I think it is important to acknowledge that the Task_1 code has been developed to meet the coursework specification. As such, it has been produced with certain limitations and constraints and does not necessarily reflect my approach in a different context, such as my employment or personal projects. However, it is important to reflect on what has been produced. \n", - "\n", - "Overall, I am pleased with the code that I have produced. It achieves the requirements (as I have interpreted them) and it <i>feels</i> fairly efficient and robust. \n", - "\n", - "I tried to be mindful of certain principles when undertaking this work:\n", - "\n", - "* Future-proofing the functions, i.e. making them flexible and adaptable to different data types and formats, perhaps accepting different parameters, etc. \n", - "* Thinking about likely pitfalls from the users perspective and pre-empting likely errors with assertions and exception handling\n", - "* Unambiguous, self-explanatory naming of functions and variables, where possible\n", - "* Balanced comments and docstrings - considering approaches like DRY (Dont Repeat Yourself), WET (Write Everything Twice), KISS (Keep it Simple, Stupid) bearing in mind possible readers of the code\n", - "\n", - "I think I have been reasonably successful in achieving these goals. I have tried to make the code as flexible as possible, accepting different parameters and data types, and I have tried to make the code as robust as possible, using assertions and exception handling to pre-empt likely errors. I have saved alternate versions of the functions for future use and reference, which take additional parameters or employ a different approach. \n", - "\n", - "In terms of naming convention, documentation and comments, I think I struck the right balance. If anything, I have probably over-commented slightly but this is because I am erring on the side of caution. I have yet to settle on a naming convention and standard and find that I flipflop between different methods like camelCase, snake_case, PascalCase, etc. I am also aware that there seem to be conventions for variables and functions, especially iterables, which I am not fully using. \n", - "\n", - "As for the code itself, I think it is fairly efficient and robust. Of course, there is always room for improvement and I would very much like to know of any suggestions or improvements, or better approaches.\n", - "\n", - "\n", - "#### <b> Summary </b>\n", - "\n", - "Whilst I have a background in elements of data and systems, I am only getting started in the programming part of this journey. I am super keen to learn for my personal and professional development and want to pick up best practices, adopt standard approaches and avoid pitfalls and repeating mistakes. When it comes to Python, I am amazed at how many different ways there are to solve a particular scenario. This can make it impossible to identify a 'single best approach' - something I will need to get used to and embrace. \n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "deletable": false - }, - "source": [ - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">MARK: __%</p>\n", - "<p style=\"color:red; font-weight:bold; font-size:xx-small\">FEEDBACK: </p>" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.11.0 64-bit", - "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.11.0" - }, - "vscode": { - "interpreter": { - "hash": "3a85823825384e2f260493b9b35c69d8eaac198ff59bb0d6c0e72fffbde301e2" - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/UFCFVQ-15-M_Programming_Task_1_submit.ipynb b/UFCFVQ-15-M_Programming_Task_1_submit.ipynb index faf5866..084d383 100644 --- a/UFCFVQ-15-M_Programming_Task_1_submit.ipynb +++ b/UFCFVQ-15-M_Programming_Task_1_submit.ipynb @@ -380,36 +380,13 @@ "### Requirement FR6 - Develop a function to print a custom table" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "DELETE this cell and the next cell before submitting\n", - "\n", - "TODO\n", - "\n", - "Test with FR5 output\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "#DELETE THIS CELL BEFORE SUBMISSION\n", - "# \n", - "# test tuple based on appendix example\n", - "\n", - "tup_list = [('Glucose', 'Glucose', 1), ('BP', 'Glucose', 0.1429), ('BMI', 'Glucose', 0.0584), ('Age', 'Glucose', 0.5328), ('Glucose','BP', 0.1429), ('BP', 'BP', 1), ('BMI', 'BP', -0.4522), ('Age', 'BP', 0.4194), ('Glucose', 'BMI', 0.0584), ('BP', 'BMI', -0.4522), ('BMI', 'BMI', 1), ('Age', 'BMI', -0.3847), ('Glucose', 'Age', 0.5328), ('BP', 'Age', 0.4194), ('BMI', 'Age', -0.3847), ('Age', 'Age', 1)]" - ] - }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ + "# Function to calculate max column width, used in FR6\n", "def max_col_width(tup_list):\n", " '''\n", " Function to calculate the maximum column width for a list of tuples'''\n", @@ -538,49 +515,18 @@ "# Process Development Report for Task 1\n" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plan / Outline: \n", - "\n", - "`Introduction:` overview of the purpose and objectives of the code, as well as the context in which it was developed (e.g., as part of assessed coursework).\n", - "\n", - "`Description of the code:` detailed description of the code, including its main features, functionality, and any relevant technical details (e.g., libraries used).\n", - "\n", - "`Reflection on the development process:` reflect on experience of developing the code, including any challenges and overcoming; discuss any lessons learned or insights gained during the development process.\n", - "\n", - "`Evaluation of the code:` evaluate the code based on its functionality, performance, and overall quality. discuss limitations or areas for improvement.\n", - "\n", - "`Conclusion:` summarise the key points of reflection, provide any final thoughts or recommendations for future work.\n", - "\n", - "\n", - "Version 1 below - 966 words (total with everything)\n", - "\n", - "TODO\n", - "\n", - "Review version 1\n", - "Review notes (in non-submit version)\n", - "Reduce in word count\n", - "\n" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ "### <b> Introduction </b>\n", "\n", - "The purpose of this report is to provide a short, critical self-assessment of all aspects of the code development process undertaken for Task 1 of the assessed coursework for `UFCFVQ-15-M Programming for Data Science`. The report will include a brief description of the code, a reflection on the development process and an evaluation of the code, including strengths and weaknesses and alternatives to consider. \n", - "\n", + "The purpose of this report is to provide a short, critical self-assessment of my code development process for Task 1 of the coursework for `UFCFVQ-15-M Programming_for_Data_Science`. \n", "\n", "### <b> Code Description </b>\n", + "Task_1 requires writing functions in order, to ultimately calculate Pearson’s Correlation Coefficients (PCCs) for pairs of variables in a given data file, without using imported Python libraries, and printing a decent-looking table. \n", "\n", - "The requirement for `Task_1` is to calculate Pearson Correlation Coefficients (PCCs) for all pairs of variables in a given data file, without using any external libraries such as Pandas, and print a decent-looking, customisable table of the results. \n", - "\n", - "The code was written in an interactive Jupyter notebook using a Python 3.11 kernel. \n", - "\n", - "The coursework is structured so that the code must be developed in a series of steps, each building on or incorporating its predecessor. There are six functional requirements (FRs) as follows:\n", + "Functional requirements (FRs):\n", "\n", "| FR | Description |\n", "|-----|-----------------------|\n", @@ -591,57 +537,51 @@ "| FR5 | PCC for file | \n", "| FR6 | Print table | \n", "\n", + "The code was developed in a Jupyter notebook using a Python 3.11 kernel. \n", "\n", - "Pearson's correlation coefficient measures linear association between two variables, ranging from -1 to 1, where -1 is perfect negative linear correlation and 1 is perfect positive linear correlation. The formula for calculating the PCC is as follows:\n", "\n", - "Given paired data, consisting of $n$ pairs: \n", - "$$\n", + "### <b> Development Process</b>\n", "\n", - "r =\n", - " \\frac{ \\sum_{i=1}^{n}(x_i-\\bar{x})(y_i-\\bar{y}) }{%\n", - " \\sqrt{\\sum_{i=1}^{n}(x_i-\\bar{x})^2}\\sqrt{\\sum_{i=1}^{n}(y_i-\\bar{y})^2}}\n", - "$$\n", + "My development process made use of the task’s inherent structure, allowing me to plan, develop and test each FR independently, before combining as needed. This was especially useful for more complex FRs, which required significant iteration and testing before achieving the desired results.\n", "\n", "\n", - "source: [Wikipedia](https://en.wikipedia.org/wiki/Pearson_correlation_coefficient#Definition)\n", - "\n", - "\n", - " \n", - "### <b> Reflection on Development Process</b>\n", - "\n", - "My development process made use of the inherent stratified nature of the task, allowing me to plan, develop and test each FR independently in separate code cells, before combining where appropriate. I found ths particularly useful for the more complex FRs - 4, 5, and 6 which required significant iteration, investigation and testing before achieving the desired results. This also worked very well in terms of source and version control, complementing the use of Git.\n", - "\n", - "My strategy was to use a localised crisp-dm approach which included initial articulation of requirements followed by iterative pseudocode, Python code and testing cycles until the desired results were achieved. I find this approach very effective and it is one I use in my current employment. However, having said that, I find that I can occasionally spiral out of control in the testing phase, which can be time-consuming, frustrating and ultimately less productive. I will continue to try to be mindful of this. \n", - "\n", - "\n", - "[create and insert a crisp-dm diagram here]\n", - "\n", - "I tried to be disciplined in my approach and for the most part feel like I was successful. I made deliberate attempts to make use of newly acquired tools and techniques like Git, VS Code, Jupyter notebooks, Markdown - ensuring that I commented on my code, made use of Markdown cells during the development phase, and committing changes to Git in appropriate intervals.\n", + "I used a modified crisp-dm approach, understanding the requirements, then cycling through iterations of pseudocode, Python code and testing until achieving the desired results. I found it very effective, but also that I can occasionally go “off-piste” in the iterations, which can be time-consuming, frustrating and ultimately less productive. \n", "\n", + "\n", + " \n", + "I made conscious use of “new-to-me” tools and techniques like Git, VS_Code, Jupyter notebooks, Markdown.\n", "\n", "### <b> Code Evaluation </b>\n", + "Overall, I am pleased with my code - functions achieve the requirements (as interpreted) and they <i>feel</i> efficient and robust. \n", "\n", - "When it comes to code evaluation, I think it is important to acknowledge that the Task_1 code has been developed to meet the coursework specification. As such, it has been produced with certain limitations and constraints and does not necessarily reflect my approach in a different context, such as my employment or personal projects. However, it is important to reflect on what has been produced. \n", - "\n", - "Overall, I am pleased with the code that I have produced. It achieves the requirements (as I have interpreted them) and it <i>feels</i> fairly efficient and robust. \n", + "Principles in mind when writing functions:\n", "\n", - "I tried to be mindful of certain principles when undertaking this work:\n", + "* Future-proofed: generic, flexible, adaptable to allow reusability\n", + "* User-friendly, by adding assertions and error-handling\n", + "* Unambiguous, self-explanatory naming of functions and variables\n", + "* Helpful comments/docstrings by balancing approaches like DRY (Don’t Repeat Yourself), WET (Write Everything Twice), KISS (Keep it Simple, Stupid)\n", "\n", - "* Future-proofing the functions, i.e. making them flexible and adaptable to different data types and formats, perhaps accepting different parameters, etc. \n", - "* Thinking about likely pitfalls from the users perspective and pre-empting likely errors with assertions and exception handling\n", - "* Unambiguous, self-explanatory naming of functions and variables, where possible\n", - "* Balanced comments and docstrings - considering approaches like DRY (Dont Repeat Yourself), WET (Write Everything Twice), KISS (Keep it Simple, Stupid) bearing in mind possible readers of the code\n", + "#### <b> Strengths </b> \n", + "* Well-commented, functioning code\n", + "* Consistent Git use for version control\n", + "* Kept working notes\n", "\n", - "I think I have been reasonably successful in achieving these goals. I have tried to make the code as flexible as possible, accepting different parameters and data types, and I have tried to make the code as robust as possible, using assertions and exception handling to pre-empt likely errors. I have saved alternate versions of the functions for future use and reference, which take additional parameters or employ a different approach. \n", - "\n", - "In terms of naming convention, documentation and comments, I think I struck the right balance. If anything, I have probably over-commented slightly but this is because I am erring on the side of caution. I have yet to settle on a naming convention and standard and find that I flipflop between different methods like camelCase, snake_case, PascalCase, etc. I am also aware that there seem to be conventions for variables and functions, especially iterables, which I am not fully using. \n", - "\n", - "As for the code itself, I think it is fairly efficient and robust. Of course, there is always room for improvement and I would very much like to know of any suggestions or improvements, or better approaches.\n", + "#### <b> Improvements / To-do </b>\n", + "* Perhaps over-commented; erred on side of caution\n", + "* Establish preferred naming convention – camelCase, snake_case\n", + "* Learn Python conventions \n", + "* Don’t get side-tracked when testing\n", + "\t* Update pseudo code\n", + "\t\n", + "[Archived reflective notes by task](archived\\Task1_FR_reflections.md)\n", "\n", "\n", "#### <b> Summary </b>\n", + "I found this task both appealing and beneficial. It allowed me to build a useful function from the ground up, making use of different Python coding techniques and data structures whilst also employing version control and applying appropriate metadata to the code.\n", + "\n", + "I am super-keen to keep learning for my personal and professional development, picking up best practice, standard approaches and avoiding pitfalls. This task allowed me to practice all of this. \n", "\n", - "Whilst I have a background in elements of data and systems, I am only getting started in the programming part of this journey. I am super keen to learn for my personal and professional development and want to pick up best practices, adopt standard approaches and avoid pitfalls and repeating mistakes. When it comes to Python, I am amazed at how many different ways there are to solve a particular scenario. This can make it impossible to identify a 'single best approach' - something I will need to get used to and embrace. \n", + "When it comes to Python, I am amazed at the many possibilities of solving the same scenario – this can make it challenging to identify the ‘best approach,’ if it exists. This is something I will need to get used to and embrace.\n", "\n", "\n" ] diff --git a/archived/Task1_FR_reflections.md b/archived/Task1_FR_reflections.md new file mode 100644 index 0000000..0dccd5e --- /dev/null +++ b/archived/Task1_FR_reflections.md @@ -0,0 +1,89 @@ +### FR1: arithmetic mean + +* easy to implement - good confidence boost +* allows for getting into a flow of coding, including comments, docstrings, naming conventions (variables and functions), testing, etc. +* I kept returning to the naming and commenting of early requirements - as they developed. +* Challenge was getting the balance right - on the one hand, I wanted to ensure that I was including adequate comments but on the other hand, I did not want to over document. Bearing in mind that this is an assessed element of coursework submitted for a master's module, I think I have the right balance. In 'the real world,' I would probably shorten some of the docstrings and remove some in line comments. +* My tactic has been to try to name variables and functions in an unambiguous, meaningful manner so that documentation is unnecessary. +* I haven't settled on a style yet - e.g. casing (proper, camel, etc.) and use of underscores. +* When writing functions, I wanted them to have reuse value - that is, to keep them general. With some requirements, this was not possible - some of my ideas would have deviated from the brief. Examples later. +* I wanted to use helpful python code where relevant, e.g. try/except blocks with specific (anticipated) errors captured. + +* WHat I would do differently: + * I need to be mindful of using restricted/reserved words as variable names. I have used 'list' in FR1 function. This is not a problem in this instance but it could be in others. I will need to be more careful in future. + * I also would like to assess the efficiency of my functions - there are so many ways to write functions producing the same outcomes in python. Absolutely amazed at how flexible and powerful it is - but at the moment, I am pleased when I can get my code to work. Efficiency, elegance, etc. will come with time and experience - but I could start using time to assess processing times for different approaches. + +### FR2: read single column from CSV file + +* Again, I wanted to make a reusable function, so I added 'delimiter' as an optional parameter. I prefer to use pipes (|) as delimiters as they are very seldom used in text. This is something I have found handy in data migration work I have undertaken in my current job. Quite often - common characters like commas and 'invisible' spacing characters like tabs, new line, carriage returns, etc. can wreak havoc when migrating data. +* I liked this function as it was a good opportunity to use the 'with' statement. I like that it 'closes' the file when finished, without a need for an explicit close statement. +* The challenge for me in this requirement was working out how to extract the header row and then proceed to the data rows. +* It was a good example of where I knew what I wanted to do and it seemed simple enough, but took some trial and error before I got there (plenty more to come!) +* Also added a specific FileNotFoundError exception as I expect this to be the most common error. +* I also added a if/else statement to account for whether the file has a header - returning results accordingly. While this is not in the brief, I was thinking about a future proofed function which can handle both varieties. + +### FR3: read CSV data from a file into memory + +* Much of the above applies - the function docstring is probably a bit long but I wanted to be clear and complete in my documentation. +* This function builds on FR2 - but returns a dictionary by iterating through the data rows of the file. +* I worked through many versions of this - for loops, enumerate, etc. - but settled for a list comprehension, once I get it working the way it should. I am not sure if it is the most efficient way to do it, but it works. However, I like the conciseness of list comprehensions - although they may not be as readable as a for loop. +* In terms of variable names, I am not always clear on the standards - i, j, row, line, etc. and I vary between them - which annoys me. Consistency, clarity, transparency, etc. are very important to me. I am not so happy with 'variable_data_dict' as a name, but couldn't find anything better - 'my_dict', 'data_dict', etc. - I am critical of them all. + + +* one problem I had with FR3 was discovered when using the function in various of FR4. The original dictionary produced string key-value pairs - which when printing looked fine to me. It took me some time to realise that the values were string - that they were enclosed in single quotation marks. This was certainly a source of frustration - when something simply was not behaving the way I was anticipating. + * However, once I noticed, I tried to amend the list comprehension by convernting to integers with int() - which caused an error - "invalid literal for int() with base 10: '60.5'" + * Therefore I converted the data to floats - which may not be quite right for ages, but will not impact the calculations. +* + +### FR4: Pearson Correlation Coefficient + +* I spent a lot of time on this function and tried to make it work using several methodologies. +* Pseudo code was particularly helpful in this instance, but I have a tendency of starting with pseudo code and then deviating into a confused space of trial and error rather than updating the pseudo code. Definitely something I can work on and take away into my current day job. +* Firstly I needed to remind myself how to calculate Pearson's r having only have had it calculated for me in SPSS or R. There a couple of approaches - but the strategy is to break down the formula into standalone calculations and build the function to produce these before putting it all together to return R. +* I spent a lot of time trying different approaches. Again, like last time I started with for loops and enumerate() but found that I couldn't always achieve my intentions - that I would get slightly lost in the hierarchy and multilined approach, so I used list comprehensions instead and in the end, I am pleased with the result. + +* As previously, I tried thinking about generalising and future-proofing the function for future use and that includes considering what tests / checks / validation I could put in place. The most obvious source of error will be the csv file so I added some assertions to ensure that the csv file has the correct data before proceeding to calculate Pearson's r. +* I tested my version of Pearsons with numpy corrcoef() and it produces the same results for a small data set, which gives you that excitement of having achieved your intentions. + + +### FR5: Pearson Correlation Coefficients for a file + +* This function builds on FR4 by calculating Pearson's r for each pair of columns in a csv file. +* I enjoyed using FR3 and FR4 (which in turn use FR1) within this function. That is pretty cool. +* It does not have many lines of code but it took me a while to get it working. I had to think about how to iterate through the columns of the csv in terms of what has been returned by FR3 and FR4 and then getting the column names into a list of tuples. +* It was not plain sailing and there was a fair bit of frustration - another good example of where I knew exactly what I wanted to do but it was hard to get there. I had a few versions on the go - I think I could have benefited by sticking with one and updating the pseudo code. +* As previously, I moved from for loops to list comprehensions as I had better success getting the results I wanted, especially returning lists of tuples. Initially, I was returning individual lists instead of lists of tuples. +* The joy of success after some struggle can be very satisfying. + +I would probably look to round some of the output in future iterations. +Actually - I just added the rounding now! + +And finally + +### FR6: printing the results + +* I found this FR very challenging and a bit frustrating. +* I could have benefitted significantly by sticking with my pseudo code and keeping it up to date - but once I got stuck into a cycle of trial and error, minor success and subsequent set-back, I did not rever to pseudocode and focused on cracking the issue which was hampering me. +* This function was created through trial and error - entirely +* I broke it down into separate sections and tried to think how I would iterate through the list of tuples to get a decent end result. +* Some sections worked, others didn't, changes then impacted the rest of the function and I was back to square one - hardforking! +* Towards the end, I had functioning portions - the top table header, the column headers, the rows headers, the r-values. This was a mess of for loops, list comprehensions, and string formatting which I needed to work through step by step. +* I found cells in Jupyter notebooks to be invaluable - the ability to run portions of code and easily move it around is very effective and powerul. I also found the ability to comment out sections of code very useful - I could easily comment out sections of code and then uncomment them to see how they impacted the rest of the function. +* Finally, the pieces (rows of code) were lining up - at this point, I resorted to tweaking and assessing the impact of each change. I discovered that I needed data specific to the input table - rather than fixed widths - so created a separate function to calculate max column widths and then played with that to get the table to look passable. + +Whew - got there in the end! + +Although this was more challenging to get motivated over as I am sure I would use some library to print tables without the effort and challenge - i.e. pandas, prettytable, etc. However, in hindsight I am glad I persevered as I have learned a lot about string formatting and how to iterate through lists of tuples. It allowed me to trouble-shoot, iterate through a requirement, reassess and rework through many cycles. I am sure I will use this knowledge in the future. + +### general + +* pleasure of the process; also frustrating +* process - crisp-dm - iterative +* related to work - > importance of requirements and flexing, agility +* pseudo code - getting into habit has been very useful (have a tendency, which I need to fight, to dive into the deep end and just manage to keep afloat) +* getting into git (hub, lab) - but have been frustrated (authentication with gitlab - needing to switch to https from ssh, despite seemingly set up correctly) +* single powerful tool, work environment - vs code - revolutionary +* documentation - robust, standardised, conventions - i.e. commenting +* intersections of domain, maths, coding +* not enough time + -- GitLab