{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Lesson 3 - Data cleaning and feature engineering\n", "\n", "> How to prepare data for machine learning algorithms and create new, informative features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/lewtun/dslectures/master?urlpath=lab/tree/notebooks%2Flesson03_data-cleaning.ipynb) \n", "[![slides](https://img.shields.io/static/v1?label=slides&message=lesson03_data-cleaning.pdf&color=blue&logo=Google-drive)](https://drive.google.com/open?id=1qif0v7ZclsCsjT1efrCAjjUTqZ_KyTIl)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Learning objectives" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Understand the main steps involved in preparing data for machine learning algorithms\n", "* Create Python functions to automate steps of the data cleaning process\n", "* Gain an introduction to matplotlib's object-oriented interface to combine plots on the same figure" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This lesson draws heavily on the following textbook chapter:\n", "\n", "* Chapter 2 of _Hands-On Machine Learning with Scikit-Learn and TensorFlow_ by Aurèlien Geron\n", "\n", "You may also find the following blog posts useful:\n", "\n", "* [Machine Learning with Kaggle: Feature Engineering\n", "](https://www.datacamp.com/community/tutorials/feature-engineering-kaggle)\n", "* Sections 2 and 3 of [Intermediate Machine Learning](https://www.kaggle.com/learn/intermediate-machine-learning) on Kaggle Learn\n", "* [Effectively Using Matplotlib](https://pbpython.com/effective-matplotlib.html) by C. Moffitt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Homework\n", "\n", "* Solve the exercises included in this notebook\n", "* Read chapter 3 of _Data Science for Business_ by Provost & Fawcett" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What is data cleaning?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "
\n", "\n", "When you receive a new dataset at the beginning of a project, the first task usually involves some form of data cleaning. \n", "\n", "To solve the task at hand, you might need data from multiple sources which you need to combine into one unified table. However, this is usually a tricky task; the different data sources might have different naming conventions, some of them might be human-generated, while others are automatic system reports. A list of things you usually have to go through are the following:\n", "\n", "* Merge multiple sources into one table\n", "* Remove duplicate entries\n", "* Clean corrupted entries\n", "* Handle missing data\n", "\n", "In lesson 2, we examined how to merge the table of housing data with their addresses; in this lesson we will focus on the remainign three steps.\n", "\n", "Although building algorithms that are able to classify data or estimate outcomes is arguably the most interesting part of data science, data cleaning is the one that takes up most of the time. According to a study by [CrowdFlower](https://www.forbes.com/sites/gilpress/2016/03/23/data-preparation-most-time-consuming-least-enjoyable-data-science-task-survey-says/#67beee196f63), data scientists spend about 60-80% of their time preparing datasets for machine learning algorithms.\n", "\n", "
\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this lesson we will analyse the unified table of housing data and their addresses that we created in lesson 2:\n", "\n", "* `housing_merged.csv`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import libraries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As in previous lessons, we will be making use of the pandas and seaborn libraries." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# reload modules before executing user code\n", "%load_ext autoreload\n", "# reload all modules every time before executing the Python code\n", "%autoreload 2\n", "# render plots in notebook\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# data wrangling\n", "import pandas as pd\n", "import numpy as np\n", "from pathlib import Path\n", "from dslectures.core import *\n", "\n", "# data viz\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "\n", "# these commands define the color scheme\n", "sns.set(color_codes=True)\n", "sns.set_palette(sns.color_palette('muted'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, we can download our datasets using our helper function `get_datasets`:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Download of housing_merged.csv dataset complete.\n" ] } ], "source": [ "get_dataset('housing_merged.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also make use of the `pathlib` library to handle our filepaths:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "housing.csv housing_merged.csv\n", "housing_addresses.csv housing_processed.csv\n", "housing_backup.csv imdb.csv\n", "housing_gmaps_data_raw.csv uc\n" ] } ], "source": [ "DATA = Path('../data/')\n", "!ls {DATA}" ] }, { "cell_type": "code", "execution_count": null, "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", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valueocean_proximitystreet_numberstreet_namecitypostal_code
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0NEAR BAY3130Grizzly Peak BoulevardBerkeley94705.0
1-122.2237.8621.07099.01106.02401.01138.08.3014358500.0NEAR BAY2005Tunnel RoadOakland94611.0
2-122.2437.8552.01467.0190.0496.0177.07.2574352100.0NEAR BAY6886Chabot RoadOakland94618.0
3-122.2537.8552.01274.0235.0558.0219.05.6431341300.0NEAR BAY6365Florio StreetOakland94618.0
4-122.2537.8552.01627.0280.0565.0259.03.8462342200.0NEAR BAY6365Florio StreetOakland94618.0
\n", "
" ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "1 -122.22 37.86 21.0 7099.0 1106.0 \n", "2 -122.24 37.85 52.0 1467.0 190.0 \n", "3 -122.25 37.85 52.0 1274.0 235.0 \n", "4 -122.25 37.85 52.0 1627.0 280.0 \n", "\n", " population households median_income median_house_value ocean_proximity \\\n", "0 322.0 126.0 8.3252 452600.0 NEAR BAY \n", "1 2401.0 1138.0 8.3014 358500.0 NEAR BAY \n", "2 496.0 177.0 7.2574 352100.0 NEAR BAY \n", "3 558.0 219.0 5.6431 341300.0 NEAR BAY \n", "4 565.0 259.0 3.8462 342200.0 NEAR BAY \n", "\n", " street_number street_name city postal_code \n", "0 3130 Grizzly Peak Boulevard Berkeley 94705.0 \n", "1 2005 Tunnel Road Oakland 94611.0 \n", "2 6886 Chabot Road Oakland 94618.0 \n", "3 6365 Florio Street Oakland 94618.0 \n", "4 6365 Florio Street Oakland 94618.0 " ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data = pd.read_csv(DATA/'housing_merged.csv'); housing_data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature engineering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we prepare the data for training machine learning models, it is useful to experiment with creating new _**features**_ (i.e. columns) that may provide more information than the raw data alone. For example the column `total_rooms` refers to the total number of rooms in a housing district, and thus it is more useful to know the number of rooms per household. In pandas, we can create this new column as follows:" ] }, { "cell_type": "code", "execution_count": null, "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", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valueocean_proximitystreet_numberstreet_namecitypostal_coderooms_per_household
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0NEAR BAY3130Grizzly Peak BoulevardBerkeley94705.06.984127
\n", "
" ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "\n", " population households median_income median_house_value ocean_proximity \\\n", "0 322.0 126.0 8.3252 452600.0 NEAR BAY \n", "\n", " street_number street_name city postal_code \\\n", "0 3130 Grizzly Peak Boulevard Berkeley 94705.0 \n", "\n", " rooms_per_household \n", "0 6.984127 " ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data['rooms_per_household'] = housing_data['total_rooms'] / housing_data['households']\n", "# check we have added the column\n", "housing_data.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "#### Exercise #1\n", "\n", "* Create a new feature called `bedrooms_per_household` from the `total_bedrooms` and `households` features\n", "* Create a new feature called `bedrooms_per_room` from the `total_bedrooms` and `total_rooms` features\n", "* Create a new feature called `population_per_household` from the `population` and `households` features\n", "* Recalculate the correlation matrix from lesson 1 - what can you conclude about the correlation of the new features with the median house value?\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Remove the housing price cap" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall from lesson 1 that the quantity we wish to predict (median house value) has a cap around $500,000:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "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Z0+mT59OaGgoP/zwA7m5ucTHx7Ns2TJat2591nHn5+czceJETp48iaqq/OUvfyEhIYHc3Fz+/Oc/k5OTgxCCO++8kwkTJnD8+HGSkpKMNpO+n/Pz85k2bRpFRUWARwr0kUceATwNPN5++210XSc8PJw5c+aQkJBQ57jeffddduzYwcqVKwE4dOgQY8eOZefOnbz//vu8++67uFwuSkpKSE1NZdSoUX77jxkzhpSUFAYNGlTr86FDh8jIyKC4uBhN0xgzZgwjRoy4iG9dIqk/muMzZP369Xz88cesXLmSMWPGcO211/L1119z8uRJevbsyRNPPIHJZOLTTz/lqaeeQtd1QkJCmD9/Pt27d+fvf/87zz77LJqmERoayowZM7j66qt55plnOHbsGNnZ2eTl5XH11VfTt29fNmzYwPHjx0lPTycxMRGA559/nk8++QRd14mJiWHevHm0b9++Qb6zRueiO3P/wtm3b5/o0aOH+Pe//y2EEGL8+PHi7rvvFg6HQxQUFIirrrpKfP755yIxMVEUFhYKIYT473//K/r27SvKy8tFRkaGeOyxx4Su66KgoEDcfPPN4umnnxZCCHHLLbeI7777Tnz99dfi4YcfFpqmCSGEWLlypUhLSxNCCDFt2jTjfE6nU9x5551i7dq1Zx3zunXrRK9evURWVpYQQoiFCxeKGTNmCCGESElJEa+88ooQQojS0lKRlJQkNm/eLLKzs8W1115rHMP387PPPivmzJkjhBCivLxcPPLII6K0tFR8/vnnYtSoUaKiokIIIcQ//vEPMXjw4LOOzW63i549e4q8vDwhhBBLly4Vy5YtE2VlZeKuu+4y7uE333xjnH/dunVi4sSJQgghRo8eLT766CPjeN7PLpdL3HHHHeL77783rm3w4MHim2++Oet4JJKfm+b6DPH9N/fHP/5RaJom7Ha7uPHGG8XevXtFfn6+6Nmzp/jPf/4jhBDi448/FuPHjxc//fSTuOGGG8SxY8eEEELs2bNH9O3bV9jtdvH000+LW265RZSWlorKykpx3XXXicWLFwshhNi2bZsYMGCAEEKI999/XzzyyCPC5XIJIYR45513xIQJE+rnC2kGSA/7EujUqRNXXnklAJ07d8Zms2G1WomIiKB169YcPHiQvLw8xo4da+yjKArHjh1j7969zJw5E0VRiIiICCgA/5vf/IawsDDeeecdsrOz+fzzz/3efm+66SasVisAv/rVrygpKTnnmK+++mqjS1WPHj3Ytm0bFRUVfP3117zyyisA2Gw2hg0bxmeffcY111xT57Fuuukmw1u/4YYbePTRR7HZbOzcuZOjR49yzz33GNuWlJRQXFxMeHh4wGOFhoYycOBAPvjgA8aOHcsHH3zAW2+9RevWrXnhhRfYtWsXWVlZHDx4kIqKinNep5esrCyOHTvGzJkzjWVVVVX85z//MfqQSySNRXN8hvhyyy23YDKZCA0NpUuXLpSUlPD1119z+eWX06NHDwAGDBjAgAEDWL16Nb179yY2NhaAPn36EBERwffffw94GrvYbDbA02nvpptuMu5LcXExAJ9++in/93//x/DhwwHQdZ3KysoLGnNzRhrsS8D7Q/dSs02aoij06dOHp556ylh28uRJo22c8JFxV1W11vF37txJRkYGDzzwALfeeivx8fF88MEHxvpWrVr5nUuchyy87xi9++i6XmtfXddxu921jutyuYy/r776arZv387evXvZt28fI0eOZMWKFei6TnJyMunp6cax8vLyCAsLO+vYRo4caYTOu3XrRmxsLLm5udx9993cdddd9OzZk0GDBvHpp58G3D/QODVNo02bNkZ3LoDTp08bDwaJpDFpjs8QXwLtbzab/Zp2CCH44YcfAh5bCIHb7QbOfS/A8yyZMGGCMSXmdDov+CWjOSOzxH9GrrvuOnbv3s2hQ4cA2LVrF0OHDsXhcHDTTTexdu1adF2npKSE7du319p/9+7d3HLLLYwaNYpf//rX/P3vf0fTtHofZ2hoKNdccw2rV68GPK39NmzYwA033ECbNm1wuVxGxum2bduM/TIzM3nuuee47bbbmDVrFt26dSMrK4u+ffvy4YcfkpeXB8Dbb799Xp2GvB7vihUrGDlyJADff/89ERER/P73v+emm24yjHXN++D7pn7s2DF++OEHALp27UpQUJBhsE+ePEliYqKxrUTSlGkuzxBfrrnmGg4dOsSPP/4IeDLL09PT6d27N7t37yY7OxuAvXv3cvLkybNG8Wpy4403snbtWsrKygD461//ymOPPVb/F9FEkR72z4jJZGLBggVMmTLFePN8/vnnCQkJ4eGHH2bevHkMHjyYiIgIfvWrX9Xa/5577mHq1KkkJSWhqiq9evUyki3qm8zMTBYsWMD69etxOp0kJSUxbNgwFEUhPT2d1NRUIiIijKQugPvvv5/p06eTmJiI1WrliiuuMP5OTU1l3LhxKIpCaGgozz777Hm1yhs5cqTxEgDQt29f1q5dy6BBgwgODubqq68mIiKCo0eP+u03adIkpk+fzq5du4iPj6dXr16A5639ueeeIyMjg1WrVuF2u/nTn/5kJOdIJE2Z5vQM8XLZZZeRmZnJtGnTjOSy5cuX061bN+bNm8cf/vAHNE2jVatWvPDCCxcU7Ro5ciSnTp3irrvuQlEUOnTowJIlS362a2lqyPaaEolEIpE0A6SH3cIYNWoU5eXlAdetXr2a0NDQBh5RNatWrWLTpk0B140fP56hQ4c28IgkEklNmvIz5JeO9LAlEolEImkGyKQziUQikUiaAdJgSyQSiUTSDJAGWyKRSCSSZoA02BKJRCKRNAOkwZZIJBKJpBnw/wFA7rZXEGuAUQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# use plt.subplots() to create multiple plots\n", "fig, (ax0, ax1) = plt.subplots(nrows=1, ncols=2, figsize=(7, 4))\n", "# put one plot on axis ax0\n", "sns.distplot(housing_data[\"median_house_value\"], kde=False, ax=ax0)\n", "# put second plot on axis ax1\n", "sns.scatterplot(\"median_income\", \"median_house_value\", data=housing_data, ax=ax1)\n", "# tight_layout() fixes spacing between plots\n", "fig.tight_layout()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Tip: Up until now, we have always made individual plots to visualise the data. The example above shows how matplotlib can be used to show two plots on the same figure! See the _Effectively Using Matplotlib_ link in the references for more information." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The presence of this cap is potentially problematic since our machine learning algorithms may learn that the housing prices never go beyond that limit. Let's assume that we want to predict housing prices above $500,000, in which case we should remove these districts from the dataset." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "#### Exercise #2\n", "\n", "* Store the number of rows in `housing_data` in a variable called `n_rows_raw`\n", "* Use the `DataFrame.loc[]` method to remove all rows where `median_house_value` is greater than or equal to $500,000\n", "* Calculate the fraction of data that has been removed by this filter.\n", "* Create new histogram and scatter plots to make sure you have removed the capped values correctly.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convert strings to categories" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we inspect the data types associated with our housing `pandas.DataFrame`" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "longitude float64\n", "latitude float64\n", "housing_median_age float64\n", "total_rooms float64\n", "total_bedrooms float64\n", "population float64\n", "households float64\n", "median_income float64\n", "median_house_value float64\n", "ocean_proximity object\n", "street_number object\n", "street_name object\n", "city object\n", "postal_code float64\n", "rooms_per_household float64\n", "bedrooms_per_household float64\n", "bedrooms_per_room float64\n", "population_per_household float64\n", "dtype: object" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data.dtypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "we see that in addition to numerical features, we have features of `object` data type, which pandas denotes with the string `O`:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('O')" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data['ocean_proximity'].dtype" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('float64')" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compare against numerical column\n", "housing_data['median_house_value'].dtype" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "pandas has a handy set of functions to test the data type of each column. For example, to check whether a column is of object or numeric type we can import the following functions" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from pandas.api.types import is_object_dtype, is_numeric_dtype" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and then test them against some columns:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "is_object_dtype(housing_data['ocean_proximity'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "is_numeric_dtype(housing_data['ocean_proximity'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "is_numeric_dtype(housing_data['median_house_value'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, we know these columns are _strings_ and some step is needed to convert them to numerical form because most machine learning algorithms are best suited for doing computations on arrays of numbers, not strings.\n", "\n", "pandas has a special `Categorical` type for holding data that uses the integer-based categorical representation or **_encoding_**. For example `housing_data['ocean_proximity']` is a `pandas.Series` of Python string objects `['NEAR BAY', '<1H OCEAN', 'INLAND', 'NEAR OCEAN', 'ISLAND']`. We can convert a `pandas.DataFrame` column to categorical as follows:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "housing_data['ocean_proximity'] = housing_data['ocean_proximity'].astype('category')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting `Categorical` object has `categories` and `codes` attributes that can be accessed as follows:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['<1H OCEAN', 'INLAND', 'ISLAND', 'NEAR BAY', 'NEAR OCEAN'], dtype='object')" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data['ocean_proximity'].cat.categories" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 3\n", "1 3\n", "2 3\n", "3 3\n", "4 3\n", " ..\n", "20635 1\n", "20636 1\n", "20637 1\n", "20638 1\n", "20639 1\n", "Length: 19648, dtype: int8" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data['ocean_proximity'].cat.codes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Note: pandas will display `Categorical` features as text and treat them internally as numerical." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sometimes we may want to reorder by hand the categorical variables. For example, with our `ocean_proximity` feature, it makes more sense to order the categories by distance to the ocean:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "housing_data[\"ocean_proximity\"].cat.set_categories(\n", " [\"INLAND\", \"<1H OCEAN\", \"NEAR BAY\", \"NEAR OCEAN\", \"ISLAND\"], ordered=True, inplace=True\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Tip: Instead of doing each data cleaning step manually, it is a good idea to write functions that automate the process. The main benefits from doing so is that you will be able to reproduce your results at a later date and can reuse the functions in future projects. The exercise below is desiged to help you create your first data cleaning function!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "#### Exercise #3\n", "\n", "* Create a function called `convert_strings_to_categories` that takes a `pandas.DataFrame` as an argument and converts all columns of `object` type into `Categorical`. Note that the operation can be done in-place and thus your function should not return any objects. You may find the commands `DataFrame.columns` and `is_numeric_dtype` are useful.\n", "* Check that the transformed `housing_data` has the expected data types.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dealing with missing values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, machine learning algorithms will fail to work with missing data, and in general you have three options to handle them:\n", "\n", "* Get rid of the corresponding rows\n", "* Get rid of the whole feature or column\n", "* Replace the missing values with some value like zero or the mean, median of the column.\n", "\n", "A quick way to check if there's any missing data is to run the pandas `DataFrame.info()` method:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 19648 entries, 0 to 20639\n", "Data columns (total 18 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 longitude 19648 non-null float64 \n", " 1 latitude 19648 non-null float64 \n", " 2 housing_median_age 19648 non-null float64 \n", " 3 total_rooms 19648 non-null float64 \n", " 4 total_bedrooms 19448 non-null float64 \n", " 5 population 19648 non-null float64 \n", " 6 households 19648 non-null float64 \n", " 7 median_income 19648 non-null float64 \n", " 8 median_house_value 19648 non-null float64 \n", " 9 ocean_proximity 19648 non-null category\n", " 10 street_number 18112 non-null category\n", " 11 street_name 19144 non-null category\n", " 12 city 19488 non-null category\n", " 13 postal_code 19492 non-null float64 \n", " 14 rooms_per_household 19648 non-null float64 \n", " 15 bedrooms_per_household 19448 non-null float64 \n", " 16 bedrooms_per_room 19448 non-null float64 \n", " 17 population_per_household 19648 non-null float64 \n", "dtypes: category(4), float64(14)\n", "memory usage: 3.2 MB\n" ] } ], "source": [ "housing_data.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since `housing_data` has 20,640 rows we see that the following columns are missing values:\n", "\n", "* `total_bedrooms`\n", "* `street_number`\n", "* `street_name`\n", "* `city`\n", "* `postal_code`\n", "* `bedrooms_per_household`\n", "* `bedrooms_per_room`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An alternative way to verify this is to apply the `DataFrame.isnull()` method and calculate the sum of missing values in `housing_data`:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "longitude 0\n", "latitude 0\n", "housing_median_age 0\n", "total_rooms 0\n", "total_bedrooms 200\n", "population 0\n", "households 0\n", "median_income 0\n", "median_house_value 0\n", "ocean_proximity 0\n", "street_number 1536\n", "street_name 504\n", "city 160\n", "postal_code 156\n", "rooms_per_household 0\n", "bedrooms_per_household 200\n", "bedrooms_per_room 200\n", "population_per_household 0\n", "dtype: int64" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data.isnull().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "#### Exercise #4\n", "\n", "It is often more informative to know the fraction or percentage of missing values in a `pandas.DataFrame`. \n", "\n", "* Calculate the _fraction_ of missing values in `housing_data` and sort them in descending order.\n", "* Use seaborn to create a bar plot that shows the fraction of missing data that you calculated above.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Getting rid of rows" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look at our first option to handle missing data: getting rid of rows. One candidate for this is the `city` column since dropping the 188 rows amounts to less than 1% of the total dataset. To achieve this we can use the `DataFrame.dropna()` method as follows:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data.dropna(subset=['city'], inplace=True)\n", "# check city has no missing values\n", "housing_data['city'].isnull().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "#### Exercise #5\n", "\n", "* Use the same technique as above to remove the rows whether the `postal_code` values are missing\n", "* Use the `Series.astype()` method to convert the `postal_code` to `int` type\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Getting rid of whole features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We still have missing values for the categorical features `street_number` and `street_name`. For such data one simple approach is to replace the missing values with the _most frequent entry_. However, for these specific attributes it does not make much sense to replace e.g. the missing street names with the most common ones in some other city.\n", "\n", "To that end, we will drop the `street_number` and `street_name` columns." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "#### Exercise #6\n", "\n", "Drop the `street_number`, `street_name` and `postal_code` columns from `housing_data`\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fill missing values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the numerical columns, let's replace the missing values by the median. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Note: We choose the median since it is more robust to outliers than the mean, but in general one should experiment with different combinations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, with `total_bedrooms` this might look like the following:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calculate median total number of bedrooms\n", "total_bedrooms_median = housing_data['total_bedrooms'].median()\n", "# use inplace=True to make replacement in place\n", "housing_data['total_bedrooms'].fillna(total_bedrooms_median, inplace=True)\n", "# check replacement worked\n", "housing_data['total_bedrooms'].isnull().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although doing this replacement manually for each numerical column is feasible for this small dataset, it would be much better to have a function that automates this process." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "#### Exercise #7\n", "\n", "* Create a function called `fill_missing_values_with_median` that takes a `pandas.DataFrame` as an argument and replaces missing values in each column with the median. Note that the operation can be don in-place, so your function should not return any objects. You may find the command `is_numeric_dtype` to be useful.\n", "* Check that missing values are filled in the transformed `pandas.DataFrame`.\n", "\n", "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convert categories to numbers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've now reached the stage where we have a cleaned `pandas.DataFrame` and the final step is to convert our categorical columns to numerical form. For example, we can numericalise the `city` column by replacing the categories with their corresponding codes: " ] }, { "cell_type": "code", "execution_count": null, "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", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valueocean_proximitycitypostal_coderooms_per_householdbedrooms_per_householdbedrooms_per_roompopulation_per_household
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.0NEAR BAY69947056.9841271.023810.1465912.555556
\n", "
" ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "\n", " population households median_income median_house_value ocean_proximity \\\n", "0 322.0 126.0 8.3252 452600.0 NEAR BAY \n", "\n", " city postal_code rooms_per_household bedrooms_per_household \\\n", "0 69 94705 6.984127 1.02381 \n", "\n", " bedrooms_per_room population_per_household \n", "0 0.146591 2.555556 " ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# add +1 so codes start from 1\n", "housing_data['city'] = housing_data['city'].cat.codes + 1\n", "# check output\n", "housing_data.head(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One potential problem with the above representation is that machine learning algorithms will treat two cities that are numerically close to each other as being similar. Thus an alternative approach is to apply a technique known as _one-hot encoding_, where we create a binary feature per category. In pandas we can do this by simply running `pandas.get_dummies()`:" ] }, { "cell_type": "code", "execution_count": null, "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", "
longitudelatitudehousing_median_agetotal_roomstotal_bedroomspopulationhouseholdsmedian_incomemedian_house_valuecitypostal_coderooms_per_householdbedrooms_per_householdbedrooms_per_roompopulation_per_householdocean_proximity_INLANDocean_proximity_<1H OCEANocean_proximity_NEAR BAYocean_proximity_NEAR OCEANocean_proximity_ISLAND
0-122.2337.8841.0880.0129.0322.0126.08.3252452600.069947056.9841271.0238100.1465912.55555600100
1-122.2237.8621.07099.01106.02401.01138.08.3014358500.0620946116.2381370.9718800.1557972.10984200100
2-122.2437.8552.01467.0190.0496.0177.07.2574352100.0620946188.2881361.0734460.1295162.80226000100
3-122.2537.8552.01274.0235.0558.0219.05.6431341300.0620946185.8173521.0730590.1844582.54794500100
4-122.2537.8552.01627.0280.0565.0259.03.8462342200.0620946186.2818531.0810810.1720962.18146700100
\n", "
" ], "text/plain": [ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n", "0 -122.23 37.88 41.0 880.0 129.0 \n", "1 -122.22 37.86 21.0 7099.0 1106.0 \n", "2 -122.24 37.85 52.0 1467.0 190.0 \n", "3 -122.25 37.85 52.0 1274.0 235.0 \n", "4 -122.25 37.85 52.0 1627.0 280.0 \n", "\n", " population households median_income median_house_value city \\\n", "0 322.0 126.0 8.3252 452600.0 69 \n", "1 2401.0 1138.0 8.3014 358500.0 620 \n", "2 496.0 177.0 7.2574 352100.0 620 \n", "3 558.0 219.0 5.6431 341300.0 620 \n", "4 565.0 259.0 3.8462 342200.0 620 \n", "\n", " postal_code rooms_per_household bedrooms_per_household \\\n", "0 94705 6.984127 1.023810 \n", "1 94611 6.238137 0.971880 \n", "2 94618 8.288136 1.073446 \n", "3 94618 5.817352 1.073059 \n", "4 94618 6.281853 1.081081 \n", "\n", " bedrooms_per_room population_per_household ocean_proximity_INLAND \\\n", "0 0.146591 2.555556 0 \n", "1 0.155797 2.109842 0 \n", "2 0.129516 2.802260 0 \n", "3 0.184458 2.547945 0 \n", "4 0.172096 2.181467 0 \n", "\n", " ocean_proximity_<1H OCEAN ocean_proximity_NEAR BAY \\\n", "0 0 1 \n", "1 0 1 \n", "2 0 1 \n", "3 0 1 \n", "4 0 1 \n", "\n", " ocean_proximity_NEAR OCEAN ocean_proximity_ISLAND \n", "0 0 0 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 " ] }, "execution_count": null, "metadata": {}, "output_type": "execute_result" } ], "source": [ "housing_data = pd.get_dummies(housing_data)\n", "housing_data.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the above has converted our `ocean_proximity` column into one new column per category!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> Note: For columns with hundreds or thousands of categories, one-hot encoding may not be ideal as it will create a large number of columns and slow down the training phase of your analysis. For this reason we did not one-hot encode the `city` or `post_code` columns, even though they are strictly categorical." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 19443 entries, 0 to 20639\n", "Data columns (total 20 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 longitude 19443 non-null float64\n", " 1 latitude 19443 non-null float64\n", " 2 housing_median_age 19443 non-null float64\n", " 3 total_rooms 19443 non-null float64\n", " 4 total_bedrooms 19443 non-null float64\n", " 5 population 19443 non-null float64\n", " 6 households 19443 non-null float64\n", " 7 median_income 19443 non-null float64\n", " 8 median_house_value 19443 non-null float64\n", " 9 city 19443 non-null int16 \n", " 10 postal_code 19443 non-null int64 \n", " 11 rooms_per_household 19443 non-null float64\n", " 12 bedrooms_per_household 19443 non-null float64\n", " 13 bedrooms_per_room 19443 non-null float64\n", " 14 population_per_household 19443 non-null float64\n", " 15 ocean_proximity_INLAND 19443 non-null uint8 \n", " 16 ocean_proximity_<1H OCEAN 19443 non-null uint8 \n", " 17 ocean_proximity_NEAR BAY 19443 non-null uint8 \n", " 18 ocean_proximity_NEAR OCEAN 19443 non-null uint8 \n", " 19 ocean_proximity_ISLAND 19443 non-null uint8 \n", "dtypes: float64(13), int16(1), int64(1), uint8(5)\n", "memory usage: 2.4 MB\n" ] } ], "source": [ "# sanity check\n", "housing_data.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Save processed data to disk" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "housing_data.to_csv(DATA/'housing_processed.csv', index=False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 4 }