{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Correlation and Scatterplots\n", "In this tutorial we use the \"concrete strength\" data set to explore relationships between two continuous variables." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NoCementSlagFly ashWaterSPCoarse Aggr.Fine Aggr.Air EntrainmentCompressive Strength (28-day)(Mpa)
01273.082.0105.0210.09.0904.0680.0No34.990
12163.0149.0191.0180.012.0843.0746.0Yes32.272
23162.0148.0191.0179.016.0840.0743.0Yes35.450
34162.0148.0190.0179.019.0838.0741.0No42.080
45154.0112.0144.0220.010.0923.0658.0No26.820
.................................
9899248.3101.0239.1168.97.7954.2640.6No49.970
99100248.0101.0239.9169.17.7949.9644.1No50.230
100101258.888.0239.6175.37.6938.9646.0Yes43.461
101102297.140.9239.9194.07.5908.9651.8Yes44.639
102103348.70.1223.1208.59.6786.2758.1No48.770
\n", "

103 rows × 10 columns

\n", "
" ], "text/plain": [ " No Cement Slag Fly ash Water SP Coarse Aggr. Fine Aggr. \\\n", "0 1 273.0 82.0 105.0 210.0 9.0 904.0 680.0 \n", "1 2 163.0 149.0 191.0 180.0 12.0 843.0 746.0 \n", "2 3 162.0 148.0 191.0 179.0 16.0 840.0 743.0 \n", "3 4 162.0 148.0 190.0 179.0 19.0 838.0 741.0 \n", "4 5 154.0 112.0 144.0 220.0 10.0 923.0 658.0 \n", ".. ... ... ... ... ... ... ... ... \n", "98 99 248.3 101.0 239.1 168.9 7.7 954.2 640.6 \n", "99 100 248.0 101.0 239.9 169.1 7.7 949.9 644.1 \n", "100 101 258.8 88.0 239.6 175.3 7.6 938.9 646.0 \n", "101 102 297.1 40.9 239.9 194.0 7.5 908.9 651.8 \n", "102 103 348.7 0.1 223.1 208.5 9.6 786.2 758.1 \n", "\n", " Air Entrainment Compressive Strength (28-day)(Mpa) \n", "0 No 34.990 \n", "1 Yes 32.272 \n", "2 Yes 35.450 \n", "3 No 42.080 \n", "4 No 26.820 \n", ".. ... ... \n", "98 No 49.970 \n", "99 No 50.230 \n", "100 Yes 43.461 \n", "101 Yes 44.639 \n", "102 No 48.770 \n", "\n", "[103 rows x 10 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "con = pd.read_csv('Data/ConcreteStrength.csv')\n", "con" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Renaming columns\n", "Recall the the column names in the \"ConcreteStrength\" file are problematic: they are too long to type repeatedly, have spaces, and include special characters like \".\". Although we could change the name of the columns in the underlying spreadsheet before importing, it is generally more practical/less work/less risk to leave the organization's spreadsheets and files as they are and write some code to fix things prior to analysis. In this way, you do not have to start over when an updated version of the data is handed to you.\n", "\n", "Let's start by listing the column names. A Pandas DataFrame object exposes a list of columns through the `columns` property. Here I use the `list()` type conversion method to convert the results to a simple list (which prints nicer):" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['No',\n", " 'Cement',\n", " 'Slag',\n", " 'Fly ash',\n", " 'Water',\n", " 'SP',\n", " 'Coarse Aggr.',\n", " 'Fine Aggr.',\n", " 'Air Entrainment',\n", " 'Compressive Strength (28-day)(Mpa)']" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(con.columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `rename()` method for data frames is straightforward. Here I define a standard Python dictionary (of the form {key1: value1, key2: value2, ... }) and assign it to the \"columns\" axis. Remember that the `inplace=True` argument is required if we want to make changes to the underlying data frame." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NoCementSlagFlyAshWaterSPCoarseAggFineAggAirEntrainStrength
01273.082.0105.0210.09.0904.0680.0No34.990
12163.0149.0191.0180.012.0843.0746.0Yes32.272
23162.0148.0191.0179.016.0840.0743.0Yes35.450
34162.0148.0190.0179.019.0838.0741.0No42.080
45154.0112.0144.0220.010.0923.0658.0No26.820
\n", "
" ], "text/plain": [ " No Cement Slag FlyAsh Water SP CoarseAgg FineAgg AirEntrain \\\n", "0 1 273.0 82.0 105.0 210.0 9.0 904.0 680.0 No \n", "1 2 163.0 149.0 191.0 180.0 12.0 843.0 746.0 Yes \n", "2 3 162.0 148.0 191.0 179.0 16.0 840.0 743.0 Yes \n", "3 4 162.0 148.0 190.0 179.0 19.0 838.0 741.0 No \n", "4 5 154.0 112.0 144.0 220.0 10.0 923.0 658.0 No \n", "\n", " Strength \n", "0 34.990 \n", "1 32.272 \n", "2 35.450 \n", "3 42.080 \n", "4 26.820 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "con.rename(columns={'Fly ash': 'FlyAsh', 'Coarse Aggr.': \"CoarseAgg\",\n", " 'Fine Aggr.': 'FineAgg', 'Air Entrainment': 'AirEntrain', \n", " 'Compressive Strength (28-day)(Mpa)': 'Strength'}, inplace=True)\n", "con.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As before, we should convert any obvious categorical variables to categories:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AirEntrain
count103
unique2
topNo
freq56
\n", "
" ], "text/plain": [ " AirEntrain\n", "count 103\n", "unique 2\n", "top No\n", "freq 56" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "con['AirEntrain'] = con['AirEntrain'].astype('category')\n", "con.describe(include='category')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['No',\n", " 'Cement',\n", " 'Slag',\n", " 'FlyAsh',\n", " 'Water',\n", " 'SP',\n", " 'CoarseAgg',\n", " 'FineAgg',\n", " 'AirEntrain',\n", " 'Strength']" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(con.columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scatterplots\n", "Scatterplots are a fundamental graph type—much less complicated than histograms and boxplots. As such, we might use the Mathplotlib library instead of the Seaborn library. But since we have already used Seaborn, I will stick with it here. Just know that there are many ways to create scatterplots and other basic graphs in Python.\n", "\n", "To create a bare-bones scatterplot, we must do four things:\n", "1. Load the seaborn library\n", "2. Specify the source data frame\n", "3. Set the _x_ axis, which is generally the name of a predictor/independent variable\n", "4. Set the _y_ axis, which is generally the name of a response/dependent variable" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAhb0lEQVR4nO3de5ScVZnv8e/TuTXpTgK5dVqgaRp6AIOCMd7QZGGiHozOAW8gjpoZmZNzUTuzPC6IjrPGM6Mz4Flyhqhn1gTRyXiFkauKLDxBh7AENIEkECMCIYmJnTvkBp1L13P+qLeSSqferuqqeqvey++zVq+uru6q2ruq+qn9PvvZ+zV3R0REsqOl2Q0QEZHGUuAXEckYBX4RkYxR4BcRyRgFfhGRjBnd7AZUYurUqd7d3d3sZoiIJMrq1at3u/u0odcnIvB3d3ezatWqZjdDRCRRzGxzqeuV6hERyRgFfhGRjFHgFxHJGAV+EZGMUeAXEcmYRFT1iEhtcjln055D7Ng/QMfEVrqntNHSYrG/b4mGAr9IyuVyzgPrt/OZO9YwcDRH65gWbr76Uq6YOaPmAB3lfUt0lOoRSblNew4dD8wAA0dzfOaONfxm01427jpILlf91uxh971pz6G6tF2iocAvknI79g8cD8wFA0dzrHxuNwuWruSB9durDv5h973zwEDV7ZXoKfCLpFzHxFZax5z8r946pgX32kfoYfc9fUJr1e2V6Cnwi6Rc95Q2br760uMBunVMC33zernria1AbSP0Uvd989WX0j2lrT6Nl0hoclck5VpajCtmzuDCvjls3nOIJ//wEt95bDP9+/LBvpYRevF97zwwwPQJqupJAgV+kQxoaTF6prXTPaWNV47mePHlI0B9RuiF++6Z1l6v5krEFPhFMkQjdAEFfpHM0QhdNLkrIpIxCvwiIhmjVI+ISBWSvEdRpIHfzDYBB4BB4Ji7zzazycDtQDewCbja3V+Msh0iIvV07FiOnz7dzw13rkvkHkWNSPW83d0vdffZwc9LgBXu3gusCH4WEUmEXM751cY9x4M+JG+Pombk+K8ElgeXlwNXNaENIiJV2bTnEKs27030HkVRB34HHjSz1Wa2KLiuw937AYLv00vd0MwWmdkqM1u1a9euiJspIlKZHfsHyDmJ3qMo6sD/VnefBbwb+KSZza30hu6+zN1nu/vsadOmRddCEZER6JjYyo/XbqNvXu9JexTd9IHXJmaPokgnd939j8H3nWZ2N/BGYIeZdbp7v5l1AjujbIOISD11T2njhisu4qYHNnDd23oY1QKzz5nMZT1TEjGxCxEGfjNrA1rc/UBw+V3A3wH3AQuBG4Pv90bVBhGRgnqVXx7f9mLGhMRuexHliL8DuNvMCo/zfXd/wMx+A9xhZtcBW4APRdgGEZG6nyIy6dteRBb43X0jcEmJ6/cA86N6XBGRocJOEXlh35zEBu9aaMsGEUk9nSLyZAr8IpJ6OkXkyRT4RST1dIrIk2mTNhFJPZ2A5mQK/CKSCUmvxKknpXpERDJGgV9EJGMU+EVEMkaBX0QkYxT4RUQyRoFfRCRjVM4pkjJJPgm4NIYCv0jM1BK4670LpaSTUj0iMVII3AuWruTaWx9nwdKVPLB+O7mcV3T7sF0ok3IScGkMBX6RGKk1cGsXSqmEAr9IjNQauLULpVRCgV8kRmoN3NqFsnFyOWfjroM8+vxuNu46WHE6Lg40uSsSI4XAPXRyttLArV0oGyPpk+jmHv9PqdmzZ/uqVaua3QyRhihU9Shwx9fzOw/ynq+tPCkt1zqmhZ9+eg7nTY/P7p9mttrdZw+9XiN+yaQ417rHZfvgOD9HzbZ576GSczFb9h6KVeAPo8AvmZP0w/RG0HM0vPZxo2kd03LKiL99XDJCqiZ3JXOqLZlM8mTeSGk9wPDGjx3F4vm9J02iL57fy2ljRzW5ZZVJxseTSB0NVzIZll7J2gi4mucoSw4MHONnT/XzlQ9ewitHjjF+7Ghuffh5Lj379GY3rSIK/JI5hZLJoYfpw5VMho2AL+ybk8pAWM1zlCWdk1p592s6uf5Ha48PBBbP76VzUjKeH6V6JHOGq3UPS+dkbUWs1gMMbzAHt6x49qSBwC0rnmUwV+aGMaERv2ROWK07EJrOydoIWOsBhrfzQOmBwK6DA4mo6tGIXzKpUDL55p6p9Exrp6XFhp3QzOIIuNRzJHlJ3xpDI36RQLkJTY2ApaDWFdbNpsAvEiiXzqnHwqosLIrKQh+TngpT4BcJRD2KK1US+g/vew2zuk6na3JygsZwslb2CpCAXW9Oob16RIpEuU/Oxl0HWbD01P1dFs3t4cIZE1MRHMP6eH/Kyl6T8gEXtlePJndFikQ5oRk2h5BzUrMqNgtlr7mc89S2lxK9slmpHpE6K85xjx87miODg0xpG0fnpNJzCO71WRUbh9x62steCyP9323fn+iVzRrxi9TR0HPmXrPsUX7zwov8xb/+mt/2H+DrH3ndSSWhffN6ueuJrTUHx1rP1VsvaS97LZT85pxEl3Mqxy9SR2E57uve1sNtj2zkp5+eA8CG7fv5/Y4D/Puqrbz48pGa88Nxyq2n+XwCjz6/m2tvfZzOSa187M3nsPShZxOZ41eqR6SOwnLcZidWdr65ZyrnTm3j1Z0Tuey8KXUJjnHaVC0u5xOIQiGV1b9vgO88tpnr3tbDqBaYf+F0XnPm6bEK+sNRqkekjsJWdLqXXhNQr0nkpK8kTYriVFb/vgFue2QjF86YGEnQj3IbcKV6ROqoVJlf37xebl+1hRuuuCiyVMDQxz1nymn8/ZWvYcwoS+0iqmZpRCqrXuWiYameyAO/mY0CVgHb3P29ZjYZuB3oBjYBV7v7i8PdhwK/NEo9KmNOruoZxdHBHJPbxkUefAuPu/fQYba9NMANd66Ldf5ZwtVrzqaZOf7FwAZgYvDzEmCFu99oZkuCn29oQDtEhlWvUVazctyFxwX46G2/zsy5A9Io6jmbSHP8ZnYW8B7gm0VXXwksDy4vB66Ksg0ilUrL6QazsIgq7aKes4l6cvefgOuB4ndhh7v3AwTfp5e6oZktMrNVZrZq165dETdTpH4Bs9nn5tVEb/JFvR4islSPmb0X2Onuq83s8pHe3t2XAcsgn+Ovb+tETlWPVadx2MMl6VsGS/S7f0Y2uWtm/wh8DDgGtJLP8d8FvAG43N37zawT+KW7XzDcfWlyVxqhHkE7Lgup6lF5EoctIKQ2DZ/cdffPAZ8LHvxy4LPu/lEz+9/AQuDG4Pu9UbVBZCTqMcoqNynX6GBa7bguDkcuEp1mrNy9EbjDzK4DtgAfakIbREqqtSInLF00rb2VTbsP8sSWl/j83U9FGkzrEbTDJrpVGZQODVm56+6/dPf3Bpf3uPt8d+8Nvu9tRBtEGiFsUu6FPQe568ltx4M+RFc1VI/qJFUGDa/ZE/i10l49InVUKl3UYnDFLSv5yzk9DdlPpx414GnfXrkWaUiDaa8ekTobug9P/74TgbgRZZb1KOdM+/bKtUjDeg8FfpGIFQLxnau30jevN/JgWo+gXThyub9vDj9c9Cbu75uTqBFtlNKQBlOqR1KtXBVNI6psiuvqv/PYZhbN7eFPOiZw0YyJnDu1/o9XrxrwNG+vXIs0pMG0O6ekVrlcbCNztWk+OUnWJCnH37TdOetBgV+qUW4xVVwWW0nyJOWDXGfgkswpV90Sp7NWRU2rcOsr6WkwBX5JrXK52DTkaiuRpNSENIaqeiS1ylW3ZKVkMQ3lh1JfGvFLapWrbol6B8ThNDL1kqWUViMlOX2mwC+pVi4X24xcbaNTL1lJaTVS0tNnSvWINFijUy9ZSWk1UtLTZxrxS+Y0+xC90amXZqS0mv0cR23H/gHOGD+W9886Cwu6defqrYlJnynwS6bE4RC9GamXRqa04vAcR61zUisff8s53LLi2eN9XDy/lxkTT34N4/oBWHGqx8zONLPLzGxu4SvKholUaiRb5MbhED3tqZc4PMdRG8xxPOhDvo+3rHiWwaIDucIH4IKlK7n21sdZsHQlD6zfHostnCsa8ZvZTcA1wG+BweBqBx6OqF0iFRnp6DIOFS7NrCZqhDg8x1HbeaB0H3cdHOC86fk+xvlkNpWmeq4CLnD3wxG2RWTERvrPFZcKl6Sv/BxOXJ7jKFXSxzh/AFaa6tkIjImyISLVGOkWuWlPs8RBFp7jSvpYj/MiRGXYEb+ZfY18SudlYI2ZrQCOj/rdvS/a5omcUGqibKSjy7SnWeIgC89xJX0s3o67OA0Zhw/AYXfnNLOFw9zW3f3f6t+kU2l3TgnL5b/rog4e3LAj1RUkklzN3sWzpm2ZzWyxu99S7rqoKPDLcFsod09pS8QWuZJMcS3JrESt2zIvBIYG+T8vcZ1IJMpNlKV1ojQpkhwchxN2pPmOC6azYcd++vcN0DnpNGZ2TmT06ORshFAux38t8BHgXDO7r+hXE4A9UTZMpFgWKkXqqZGBOM0LtkpVjX3rkec5dPgYf3Pv08f7+6WrLuaqS85MTPAvN+L/FdAPTAW+WnT9AWBdVI0SGSrOE2Vx0+hAHOd69VqVOtL8+GU9XP+jtSf19wv3PE3v9HYuOfuMZjRzxIYN/O6+GdgMvKUxzREpLQuVIvXS6EAc53r1WpU60nzlyLGS/d2+b4BLzm50C6tT0XGJmR0ws/1Dvv5gZnebWU/UjRSBE4ue3twzlZ5p7TUH/ZFs9ZAkI13bUKs416vXqlS9fteU8SX7O2NScvpb6eTuzcAfge8DBnwYmAE8A3wLuDyKxtUirZNNUh9pzks3ej4kzWm44iPNHfvzH5zbXnyZv/3TmfyvH68/Kcc/s3NSk1tbuUrLOR939zcNue4xd3+zma1190siayEjL+dM8z+11Mdw5aFJT0804/0/tF6964zxbHnx5VQNvDbuOsg9a7ax7OGN/Mn0dv5y7nm8cuQYbWNHc9708VzQMSl2fay1nDNnZlcDPwp+/mDR72J3fJzmySapjzTnpZsxH1K891BaB1479g+Q8/z7ZN22/fT94Mnjv+ubfz4v7H4lMX2stPboz4CPATuBHcHlj5rZacCnImpb1QonSfjk28/nU/PyX2eMHxtZjlOSJ815aaj/fMhIpHVb5o6JrYwySr5vBnMkqo8VBX533+juf+ruU919WnD5OXd/xd0fibqRI1U4ScJtj2zk6w89xzdXbuTjbznnlJMkSHZlYSOxZmn05HKjdE9p4zVnTWLx/N6T3jd983q564mtiepjpfvxTwP+C9BdfBt3/0Q0zapN2EkS3vXqGU1umcSFykOjk9bFdi0txrwLOjh/WjuvP+cMHnluN4M5+M5jm+nfN5CoPlaa478XWAn8P06ciCW2wk6SsPPAiZMkiKR5T/xmSnuVT/fUdromt7H74JER9TFOlYaVBv7x7n5DpC2po/FjR5cccYwfO6qJrRLJhqwcTc181QT+7S/eyO5Dhzlz0mnMfFV4VU/cJrwrndz9iZktiLQldXRkcJC+eafm4Y4M5srcUqR2aV0YNhLNnFyOWi7nPPTMDu5/ajsf//av+R/fe5Jrbn2MBzfsCH2t4zbhXemIfzHweTM7Ahwhv4jL3X1iZC2rwdhRo7h91Raue1sPZuAOt6/awlvPn9LspknKxW1kJ/W3ac8h1m3dx7KHN1ZcMh638uFKq3omuHuLu7e6+8Tg51gGfciP+D9x2bmMCno3ugU+cdm5HNWIXyIWt5Gd1F9xPX+x4ap64lY+XOlePWZmHzWzvwl+PtvM3hht06o3rX0chwdzLHs4X875Lw9v5PBgjqnt45rdNEm5tJYyygnD1fOHBfK4lQ9Xmur5v0AOmAf8PXAQ+AbwhrAbmFkr8DAwLnicH7n735rZZOB28qWhm4Cr3f3FKttf0mAObv75708add38898z/8KOej6MyCnSWsooJxTX8xfKxssF8rhNeFca+N/k7rPM7EkAd3/RzMaWuc1hYJ67HzSzMcAjZvYz4P3ACne/0cyWAEuAulYM7TyQX7n7/llnYcHzeufqrew6qHJOiVaaSxklr7ief1bXGbx85Bhdk9s4d+rwgTxO5cOVBv6jZjaKYF+eYEHXsAlzz+/+djD4cUzw5cCVnNjNcznwS+oc+Asrd4s/jRfP79XKXYlc3EZ2Eo1CPX/31NJBPE41+6VUGviXAncD083sy+Q3aftCuRsFHxargfOBb7j742bW4e79AO7eb2bTQ267CFgE0NXVVWEz87RyV5opTiM7GV4UAToJlV1lJ3fNrAV4Abge+Efyp2K8yt3/vdxt3X3Q3S8FzgLeaGYXV9owd1/m7rPdffa0adMqvRkQvnJ310FNsIlIXiFAL1i6kmtvfZwFS1fywPrtNa+7SEJlV9nA7+454Kvu/jt3/4a7f93dN4zkQdz9JfIpnSuAHWbWCRB83zniVpcRt9IpEYlOtQvmogrQSajsqnTl7oNm9gEzq/g4xcymmdnpweXTgHcAvwPuAxYGf7aQ/D5AdRW30ikRiUYto/aoAnQSBp6V5vg/A7QBx8xsgMpW7nYCy4M8fwtwh7v/xMweBe4ws+uALcCHqm9+aZpgE8mGWk66FFXpbRIquyoK/O4+YaR37O7rgNeVuH4PMH+k9zdSmmATSb9atkKoJUAPNymchIFnpfvxr3D3+eWui5O4l1OJSO1qGbVXG6ArqdqJ+8Bz2By/mbUGK22nmtkZZjY5+OoGXtWQFlYhqtl6EYmXWufzqtlFNAlVO+WUG/H/V+CvyAf51UXXHyC/ZUMs6WTrItnQjLRK3HbarEa5wP8r4A7gg+7+NTNbCHyA/B4734+4bVULe2F27E/OCyMilaklrVJNSjgN+zGVK+f8F+BwEPTnkl/AtRzYByyLunHVKpyBq1jrmBbGj9EZuCT+dCKXxqg2JZyGcvFyI/5R7r43uHwNsMzd7wTuNLM1kbasBvsHjtA3r5elD53Yq6dvXi8HDh9tdtNEhpWE5f5pUW1KOAlVO+WUDfxmNtrdj5EvwVw0gts2TdgZuF5/ziXNbprIcaXSDJqfapxacvVxr9opp1zw/gHwH2a2G3gFWAlgZueTT/fEUsfEcXz4DV2n7M7ZMVEnYpF4CBvZnzF+TCwnDtNYHp2GXH21hg387v5lM1tBfhXug8FWy5CfG/h01I2rVtfkNno72lk0t4ecQ4tBb0c7XZOTk4OTdAsb2d++6C2RBaNqg3dS0k8j7V8SVthGpWy6xt0fK3Hd76NpTn0UTpTQM7U9sTk4SbewNMPRwcFIglEtwTsJ6adq+peGXH21Ypunr1XSc3CSXJWMPMPSDJPbxjGra3Ldg1EtwTsJdeu1TNRmMU6kNvCLNEOlI8/h0gxRBKNagncScuGN/nAq9eEOJGYeRIFfpI4qHXk2Os1QS/BOQi68kR9OYR/uY0cbn/r+k7GeBymodD9+EanASPZ4r2afmGrVsuio8CF1f98cfrjoTdzfN+ekgBaHBWeNXFQV9uG+buu+xOzfoxG/SB3FNS1S6xFGWPopLhU/jTyCCvtwH/p5F7d5kGIa8YvUUZyX80dxhBGnnSobdQQVdoatoQ8Xhw/8MBrxS6wlbeFQXEsEo3oek1DxU29hcx5jR9vxo704feCXosAvsRWXNMJIxa1EMMrnMa6prSiFfbgD3B+zD/wwSvVIbMUpjZBkUT6PcU5tRalUWqmRk/W10ohfYiuLaYQoRPk8xjW1JcNT4JfYymIaIQpRP49xS21JealN9cShtlhqk9U0Qr2l5XnU/3T92IkNN+Nr9uzZvmrVqor/PqmTgnKqQjWK0gi1SfrzqP/p6pjZaneffcr1aQz8G3cdZMHSlacc2t4fo90ERbJspOWl+p+uTljgT2WOf/s+nWxdsi3O6x+qGb1ror++UpnjHze6peTKujGjUtldkZNUexLxRqmmvDRstawm+quTyki4LzjZevFkVt+8Xg4MHGlyy0SiF/f1DyPZyK4gLRPUcZHKVM+UtlYe+t1zfOWDl/DK4WOMHzea5b/ayFvPn9nspolELu5pkWrKS7VeoL5SGfgv6pjA1W84h+t/tPZ4DvHvrryYizomNrtpIpGL+/qHavf313qB+kllVc/zOw/ynq+dWgHw00/P4bzpetNIuiWh9DHp5aVJkamqns17D5U81N2y95ACv6ReEtIiGr03VyoDf9vY0SUPdcePTWV3RU6hwCrDSWVVT8fEcSyef3JVz+L5vXRMHNfklomINF8qh8Bdk9vo7Whn0dwecg4tBr0d7XRNVumXiNRHnBfJlZPKwN/SYsy7oIOeqe2xzXFKdiQ5QEhpSZhAH04qUz2Qf2EODBzlpZePcmDgWGxWLUq2xH0VrVQn7ovkykll4D92LMc9a7dxzbLH+G/ffYJrlj3KPWu3cexYrvyNReoo6QEizWrZ5rma1cdxkspUz/r+fXzhnqdP+mf7wj1P0zu9nUvOPqPJrZMsifsq2qyqNVUT90Vy5UQ24jezs83sF2a2wczWm9ni4PrJZvZzM3s2+F73SNwfsjvn9n3J+DSW9NDmYvFU65FY0vcOinLEfwz4n+7+hJlNAFab2c+BPwdWuPuNZrYEWALcUM8H7px0WslP4xmT9M8mjVXt9gQSrVqPxJKwSG44kQV+d+8H+oPLB8xsA3AmcCVwefBny4FfUufAP7NzIl+66uLj6Z7WMS186aqLmdk5qZ4PI1JW0gNEWtUjVZPkRXIN2avHzLqBh4GLgS3ufnrR715091PSPWa2CFgE0NXV9frNmzeP6DGPHcuxvn8f2/cNMGNSKzM7JzF6dCrnskVkhJJejlmppp160czagf8Avuzud5nZS5UE/mIj3aRNRKScLGwU15RN2sxsDHAn8D13vyu4eoeZdbp7v5l1AjujbIOISClJTtXUKsqqHgNuAza4+81Fv7oPWBhcXgjcG1UbRETkVFGO+N8KfAx4yszWBNd9HrgRuMPMrgO2AB+KsA0iIjJElFU9jwBhCbP5UT1ugfZHkWYrvAf3HDrM2FEtvHxkUO9FiYVUrtzNyoy9VKcRg4LCe/CmBzZwzewulj70rN6LEhuprG/U/igSplGbphXeg+997ZnHgz7ovSjxkMrAn/QNlCQ6jRoUFN6DZui9KLGTysCv/VEkTKMGBcXvQb0XJW5SGfiTvoGSRKdRg4LCe/DHa7fRN69X70WJlYZs2VCralbuZmFVnoxcIyf+C+/BvYcOM0ZVPdIETduyoR60ZYPUkwYFkhVN2bJBJI6yvFRfBFKa4xcRkXAK/CIiGaPALyKSMQr8IiIZo8AvIpIxCvwiIhmjwC8ikjGprePXfvwiIqWlMvBrP34RkXCpTPVoP34RkXCpDPzaj19EJFwqA7/24xcRCZfKwK/9+EVEwqVycrelxbhi5gwu7JujrXdFRIZIZeAHbb0rIhImlakeEREJp8AvIpIxCvwiIhmjwC8ikjEK/CIiGZPaqh5t0iYiUloqA782aRMRCZfKVI82aRMRCZfKwK9N2kREwqUy8GuTNhGRcKkM/NqkTUQkXCond7VJm4hIuFSO+Iu5N7sFIiLxksoRv8o5RUTCpXLEr3JOEZFwkQV+M/uWme00s6eLrptsZj83s2eD72dE8dgq5xQRCRfliP9fgSuGXLcEWOHuvcCK4Oe6UzmniEi4yAK/uz8M7B1y9ZXA8uDycuCqKB5b5ZwiIuEaPbnb4e79AO7eb2bTw/7QzBYBiwC6urpG9CAq5xQRCRfbqh53XwYsA5g9e/aIizJ1zl0RkdIaXdWzw8w6AYLvOxv8+CIimdfowH8fsDC4vBC4t8GPLyKSeVGWc/4AeBS4wMy2mtl1wI3AO83sWeCdwc8iItJAkeX43f3akF/Nj+oxRUSkvFSu3BURkXDmCdjFzMx2AZurvPlUYHcdmxNnWelrVvoJ2elrVvoJje3rOe4+beiViQj8tTCzVe4+u9ntaISs9DUr/YTs9DUr/YR49FWpHhGRjFHgFxHJmCwE/mXNbkADZaWvWeknZKevWeknxKCvqc/xi4jIybIw4hcRkSIK/CIiGZPqwG9mV5jZM2b2nJlFctKXZjGzTWb2lJmtMbNVwXUNOcNZ1EZ69jYz+1zwGj9jZv+pOa0euZB+ftHMtgWv6xozW1D0u6T282wz+4WZbTCz9Wa2OLg+ja9pWF/j9bq6eyq/gFHA80APMBZYC7y62e2qY/82AVOHXPcVYElweQlwU7PbWWXf5gKzgKfL9Q14dfDajgPODV7zUc3uQw39/CLw2RJ/m+R+dgKzgssTgN8H/UnjaxrW11i9rmke8b8ReM7dN7r7EeCH5M8AlmYNOcNZ1HxkZ2+7Evihux929xeA58i/9rEX0s8wSe5nv7s/EVw+AGwAziSdr2lYX8M0pa9pDvxnAn8o+nkrw78ASePAg2a2OjhbGQw5wxkQeoazBArrWxpf50+Z2bogFVRIf6Sin2bWDbwOeJyUv6ZD+goxel3THPhLnWcxTbWrb3X3WcC7gU+a2dxmN6hJ0vY6/zNwHnAp0A98Nbg+8f00s3bgTuCv3H3/cH9a4rqk9zVWr2uaA/9W4Oyin88C/tikttSdu/8x+L4TuJv84WGaz3AW1rdUvc7uvsPdB909B9zKicP+RPfTzMaQD4Tfc/e7gqtT+ZqW6mvcXtc0B/7fAL1mdq6ZjQU+TP4MYIlnZm1mNqFwGXgX8DTpPsNZWN/uAz5sZuPM7FygF/h1E9pXF4VAGHgf+dcVEtxPMzPgNmCDu99c9KvUvaZhfY3d69rsWfCIZ9gXkJ9Vfx7462a3p4796iFfCbAWWF/oGzAFWAE8G3yf3Oy2Vtm/H5A/HD5KfkR03XB9A/46eI2fAd7d7PbX2M/vAE8B68gHhc4U9PNt5NMX64A1wdeClL6mYX2N1euqLRtERDImzakeEREpQYFfRCRjFPhFRDJGgV9EJGMU+EVEMkaBXzLPzAaLdk1cY2bdZna5mf2kwtuvNbMfVPB3XzSzz9beYpHajG52A0Ri4BV3v7T4imCflbLM7CLyA6i5Ztbm7ofq3zyR+tKIX2QYZtYS7Bc/rejn58xsavAnHyG/OOdB4D8X3a7PzH4bbMr1w6K7fLWZ/dLMNppZX8M6IlJEI34ROM3M1gSXX3D39xV+4e45M/su8GfAPwHvANa6++7gT64B3glcAHyK/GpcyO8vf667Hzaz04se60Lg7eT3an/GzP7Z3Y9G0iuREBrxiwSpnuDrfSV+/y3g48HlTwDfBjCzNwC73H0z+S0HZhVtt7sO+J6ZfRQ4VnRfP/X83uu7yW9K1hFBf0SGpcAvUoa7/4H8TpLzgDcBPwt+dS1woZltIr/XykTgA8Hv3gN8A3g9sNrMCkfXh4vuehAddUsTKPCLVOabwHeBO9x90MxagA8Br3X3bnfvJn82pWuD353t7r8ArgdOB9qb02yRUynwi1TmPvLB+9vBz3OBbe6+rehvHiZ/DtUzge+a2VPAk8D/cfeXGthWkWFpd06RCpjZbPIBfE6z2yJSK+UXRcowsyXAfydf2SOSeBrxi4hkjHL8IiIZo8AvIpIxCvwiIhmjwC8ikjEK/CIiGfP/AXwyuZGRTCPZAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "sns.scatterplot(x=\"FlyAsh\", y=\"Strength\", data=con);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding labels\n", "To this point, we have not said much about decorating Seaborn charts with labels and other details. This is because Seaborn does a pretty good job by default. But if we do need to clean up our charts a bit, here is the thing to know: the Seaborn chart methods return an object (of type AxesSubplot, whatever that is) for which properties can be set.\n", "\n", "Here I assign the results of the `scatterplot()` call to a variable called `ax` and then set various properties of `ax`. I end the last line of the code block with a semicolon to suppress return values:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = sns.scatterplot(x=\"FlyAsh\", y=\"Strength\", data=con)\n", "ax.set_title(\"Concrete Strength vs. Fly ash\")\n", "ax.set_xlabel(\"Fly ash\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding a best fit line\n", "As we saw with SAS Enterprise Guide and R, it is sometimes useful to add a best fit line (with confidence intervals around the slope) to a scatterplot. But let's be clear: this is not one of these situations. It is obvious from the scatterplot above that the relationship between concrete strength and fly ash is only weakly linear.\n", "\n", "The easiest way to \"add\" a best-fit line to a scatterplot is to use a different plotting method. Seaborn's `lmplot()` method (where \"lm\" stands for \"linear model\") is one possibility:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.lmplot(x=\"FlyAsh\", y=\"Strength\", data=con);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding color as a third dimension\n", "A graphics \"party trick\" made fashionable by tools like Tableau is to use color, size, or some other visual cue to add a third dimension to a two-dimensional scatterplot. In the case of color (or \"hue\" in Seaborn terminology), this third dimension need to be a non-continuous variable. This is because the palette of colors available has a finite number of options." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.lmplot(x=\"FlyAsh\", y=\"Strength\", hue=\"AirEntrain\", data=con);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Coefficient of correlation\n", "A correlation coefficient (typically denoted _r_) is a single number that describes the extent of the **linear** relationship between two variables. A value of +1 indicates perfect linearity (the two variables move together, like \"height in inches\" and \"height in centimeters\"). A value of _r_ = 0 indicates no correlation (the variables are independent) and _r_ = -1 indicates the variables are inversely correlated (an increase in one variable is associated with a decrease in the other).\n", "\n", "Like many other statistics (measures derived from raw data), there are slightly different ways to calculate the correlation coefficient that are more or less sensitive to outliers and other characteristics of the data. The most common measure is the Pearson correlation coefficient. The Scipy library provides a method called `pearsonr()` (Pearson's _r_)." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.4063870105954507, 2.0500713273946373e-05)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy import stats\n", "stats.pearsonr(con['Strength'], con['FlyAsh'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, it is not the prettiest result. But, if we were so inclined, we could write the results to a data frame and apply whatever formatting in Python we wanted to. In this form, however, we get two numbers:\n", "1. Pearson's _r_ (0,4063---same as we got in Excel, R, etc.)\n", "2. A _p_-value. This is the probability that the true value of _r_ is zero (no correlation).\n", "\n", "We conclude based on this that there is weak linear relationship between concrete strength and fly ash but not so weak that we should conclude the variables are uncorrelated. In other words, it seems that fly ash does have _some_ influence on concrete strength.\n", "\n", "Of course, correlation does not imply causality. It is equally correct, based on the value of _r_, to say that concrete strength has some influence on the amount of fly ash in the mix. But hopefully we are worldly enough to know _something_ about mixing up a batch of concrete and can generally _infer_ causality, or at least directionality. That is, we use our domain knowledge to help interpret statistical results." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Corrleation matrix\n", "A correlation matrix is a handy way to calculate the pairwise correlation coefficients between two or more (numeric) variables. The Pandas data frame has this functionality built-in to its `corr()` method, which I have wrapped inside the `round()` method to keep things tidy. Notice that every correlation matrix is symmetrical: the correlation of \"Cement\" with \"Slag\" is the same as the correlation of \"Slag\" with \"Cement\" (-0.24). Thus, the top (or bottom, depending on your preferences) of every correlation matrix is redundant. The correlation between each variable and itself is 1.0, hence the diagonal." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NoCementSlagFlyAshWaterSPCoarseAggFineAggStrength
No1.00-0.03-0.080.34-0.14-0.330.22-0.310.19
Cement-0.031.00-0.24-0.490.22-0.11-0.310.060.46
Slag-0.08-0.241.00-0.32-0.030.31-0.22-0.18-0.33
FlyAsh0.34-0.49-0.321.00-0.24-0.140.17-0.280.41
Water-0.140.22-0.03-0.241.00-0.16-0.600.11-0.22
SP-0.33-0.110.31-0.14-0.161.00-0.100.06-0.02
CoarseAgg0.22-0.31-0.220.17-0.60-0.101.00-0.49-0.15
FineAgg-0.310.06-0.18-0.280.110.06-0.491.00-0.17
Strength0.190.46-0.330.41-0.22-0.02-0.15-0.171.00
\n", "
" ], "text/plain": [ " No Cement Slag FlyAsh Water SP CoarseAgg FineAgg \\\n", "No 1.00 -0.03 -0.08 0.34 -0.14 -0.33 0.22 -0.31 \n", "Cement -0.03 1.00 -0.24 -0.49 0.22 -0.11 -0.31 0.06 \n", "Slag -0.08 -0.24 1.00 -0.32 -0.03 0.31 -0.22 -0.18 \n", "FlyAsh 0.34 -0.49 -0.32 1.00 -0.24 -0.14 0.17 -0.28 \n", "Water -0.14 0.22 -0.03 -0.24 1.00 -0.16 -0.60 0.11 \n", "SP -0.33 -0.11 0.31 -0.14 -0.16 1.00 -0.10 0.06 \n", "CoarseAgg 0.22 -0.31 -0.22 0.17 -0.60 -0.10 1.00 -0.49 \n", "FineAgg -0.31 0.06 -0.18 -0.28 0.11 0.06 -0.49 1.00 \n", "Strength 0.19 0.46 -0.33 0.41 -0.22 -0.02 -0.15 -0.17 \n", "\n", " Strength \n", "No 0.19 \n", "Cement 0.46 \n", "Slag -0.33 \n", "FlyAsh 0.41 \n", "Water -0.22 \n", "SP -0.02 \n", "CoarseAgg -0.15 \n", "FineAgg -0.17 \n", "Strength 1.00 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cormat = con.corr()\n", "round(cormat,2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Correlation matrix to heat map\n", "Python, and its libraries, make lots of things easy. For example, once the correlation matrix is defined (I assigned to the variable `cormat` above), it can be passed to Seaborn's `heatmap()` method to create a heatmap (or headgrid). The basic idea of heatmaps is that they replace numbers with colors of varying shades, as indicated by the scale on the right. Cells that are lighter have higher values of _r_. This type of visualization can make it much easier to spot linear relationships between variables than a table of numbers. For example, if I focus on the \"Strength\" column, I immediately see that \"Cement\" and \"FlyAsh\" have the largest positive correlations whereas \"Slag\" has the large negative correlation." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.heatmap(cormat);" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.9.5" } }, "nbformat": 4, "nbformat_minor": 2 }