diff --git a/Solutions.ipynb b/Solutions.ipynb
index 89aa338..e8b941e 100644
--- a/Solutions.ipynb
+++ b/Solutions.ipynb
@@ -2,91 +2,1531 @@
"cells": [
{
"cell_type": "markdown",
- "id": "bf32ae3b",
- "metadata": {},
"source": [
"# Lab | Revisiting Machine Learning Case Study"
- ]
+ ],
+ "metadata": {}
},
{
"cell_type": "markdown",
- "id": "73df37d0",
- "metadata": {},
"source": [
"In this lab, you will use learningSet.csv file which you already have cloned in today's activities."
- ]
+ ],
+ "metadata": {}
},
{
"cell_type": "markdown",
- "id": "5bbb5252",
- "metadata": {},
"source": [
"### 1. Check for null values in all the columns"
- ]
+ ],
+ "metadata": {}
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "dbe69e8b",
- "metadata": {},
+ "execution_count": 1,
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import warnings\n",
+ "warnings.filterwarnings('ignore')\n",
+ "pd.set_option('display.max_rows', 100)\n",
+ "\n"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "source": [
+ "data = pd.read_csv('learningSet.csv')\n",
+ "data"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ODATEDW | \n",
+ " OSOURCE | \n",
+ " TCODE | \n",
+ " STATE | \n",
+ " ZIP | \n",
+ " MAILCODE | \n",
+ " PVASTATE | \n",
+ " DOB | \n",
+ " NOEXCH | \n",
+ " RECINHSE | \n",
+ " ... | \n",
+ " TARGET_D | \n",
+ " HPHONE_D | \n",
+ " RFA_2R | \n",
+ " RFA_2F | \n",
+ " RFA_2A | \n",
+ " MDMAUD_R | \n",
+ " MDMAUD_F | \n",
+ " MDMAUD_A | \n",
+ " CLUSTER2 | \n",
+ " GEOCODE2 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 8901 | \n",
+ " GRI | \n",
+ " 0 | \n",
+ " IL | \n",
+ " 61081 | \n",
+ " | \n",
+ " | \n",
+ " 3712 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " L | \n",
+ " 4 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 39.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 9401 | \n",
+ " BOA | \n",
+ " 1 | \n",
+ " CA | \n",
+ " 91326 | \n",
+ " | \n",
+ " | \n",
+ " 5202 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " L | \n",
+ " 2 | \n",
+ " G | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 1.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 9001 | \n",
+ " AMH | \n",
+ " 1 | \n",
+ " NC | \n",
+ " 27017 | \n",
+ " | \n",
+ " | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 4 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 60.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 8701 | \n",
+ " BRY | \n",
+ " 0 | \n",
+ " CA | \n",
+ " 95953 | \n",
+ " | \n",
+ " | \n",
+ " 2801 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 4 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 41.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 8601 | \n",
+ " | \n",
+ " 0 | \n",
+ " FL | \n",
+ " 33176 | \n",
+ " | \n",
+ " | \n",
+ " 2001 | \n",
+ " 0 | \n",
+ " X | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 2 | \n",
+ " F | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 26.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 95407 | \n",
+ " 9601 | \n",
+ " ASE | \n",
+ " 1 | \n",
+ " AK | \n",
+ " 99504 | \n",
+ " | \n",
+ " | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " L | \n",
+ " 1 | \n",
+ " G | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 12.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 95408 | \n",
+ " 9601 | \n",
+ " DCD | \n",
+ " 1 | \n",
+ " TX | \n",
+ " 77379 | \n",
+ " | \n",
+ " | \n",
+ " 5001 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 1 | \n",
+ " F | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 2.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | 95409 | \n",
+ " 9501 | \n",
+ " MBC | \n",
+ " 1 | \n",
+ " MI | \n",
+ " 48910 | \n",
+ " | \n",
+ " | \n",
+ " 3801 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 3 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 34.0 | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " | 95410 | \n",
+ " 8601 | \n",
+ " PRV | \n",
+ " 0 | \n",
+ " CA | \n",
+ " 91320 | \n",
+ " | \n",
+ " | \n",
+ " 4005 | \n",
+ " 0 | \n",
+ " X | \n",
+ " ... | \n",
+ " 18.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 4 | \n",
+ " F | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 11.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | 95411 | \n",
+ " 8801 | \n",
+ " MCC | \n",
+ " 2 | \n",
+ " NC | \n",
+ " 28409 | \n",
+ " | \n",
+ " | \n",
+ " 1801 | \n",
+ " 0 | \n",
+ " X | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 1 | \n",
+ " G | \n",
+ " C | \n",
+ " 1 | \n",
+ " C | \n",
+ " 12.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
95412 rows × 481 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ODATEDW OSOURCE TCODE STATE ZIP MAILCODE PVASTATE DOB NOEXCH \\\n",
+ "0 8901 GRI 0 IL 61081 3712 0 \n",
+ "1 9401 BOA 1 CA 91326 5202 0 \n",
+ "2 9001 AMH 1 NC 27017 0 0 \n",
+ "3 8701 BRY 0 CA 95953 2801 0 \n",
+ "4 8601 0 FL 33176 2001 0 \n",
+ "... ... ... ... ... ... ... ... ... ... \n",
+ "95407 9601 ASE 1 AK 99504 0 0 \n",
+ "95408 9601 DCD 1 TX 77379 5001 0 \n",
+ "95409 9501 MBC 1 MI 48910 3801 0 \n",
+ "95410 8601 PRV 0 CA 91320 4005 0 \n",
+ "95411 8801 MCC 2 NC 28409 1801 0 \n",
+ "\n",
+ " RECINHSE ... TARGET_D HPHONE_D RFA_2R RFA_2F RFA_2A MDMAUD_R MDMAUD_F \\\n",
+ "0 ... 0.0 0 L 4 E X X \n",
+ "1 ... 0.0 0 L 2 G X X \n",
+ "2 ... 0.0 1 L 4 E X X \n",
+ "3 ... 0.0 1 L 4 E X X \n",
+ "4 X ... 0.0 1 L 2 F X X \n",
+ "... ... ... ... ... ... ... ... ... ... \n",
+ "95407 ... 0.0 0 L 1 G X X \n",
+ "95408 ... 0.0 1 L 1 F X X \n",
+ "95409 ... 0.0 1 L 3 E X X \n",
+ "95410 X ... 18.0 1 L 4 F X X \n",
+ "95411 X ... 0.0 1 L 1 G C 1 \n",
+ "\n",
+ " MDMAUD_A CLUSTER2 GEOCODE2 \n",
+ "0 X 39.0 C \n",
+ "1 X 1.0 A \n",
+ "2 X 60.0 C \n",
+ "3 X 41.0 C \n",
+ "4 X 26.0 A \n",
+ "... ... ... ... \n",
+ "95407 X 12.0 C \n",
+ "95408 X 2.0 A \n",
+ "95409 X 34.0 B \n",
+ "95410 X 11.0 A \n",
+ "95411 C 12.0 C \n",
+ "\n",
+ "[95412 rows x 481 columns]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 2
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "source": [
+ "# check for all nulls in df\n",
+ "\n",
+ "nulls = pd.DataFrame(data.isna().sum()*100/len(data), columns=['percentage'])\n",
+ "nulls = nulls.sort_values('percentage', ascending = False).head(500)\n",
+ "nulls"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " percentage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | RDATE_5 | \n",
+ " 99.990567 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_5 | \n",
+ " 99.990567 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_3 | \n",
+ " 99.746363 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_3 | \n",
+ " 99.746363 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_4 | \n",
+ " 99.705488 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | ETHC3 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | ETHC2 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | ETHC1 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | HHD12 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " | TPE11 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
481 rows × 1 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " percentage\n",
+ "RDATE_5 99.990567\n",
+ "RAMNT_5 99.990567\n",
+ "RDATE_3 99.746363\n",
+ "RAMNT_3 99.746363\n",
+ "RDATE_4 99.705488\n",
+ "... ...\n",
+ "ETHC3 0.000000\n",
+ "ETHC2 0.000000\n",
+ "ETHC1 0.000000\n",
+ "HHD12 0.000000\n",
+ "TPE11 0.000000\n",
+ "\n",
+ "[481 rows x 1 columns]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 3
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "source": [
+ "# here i just made a new df for all the columns which have over 50% nulls so it's easier to analyse instead of having 480 rows we just have 60\n",
+ "lst = []\n",
+ "\n",
+ "for i,row in nulls.iterrows():\n",
+ " if row['percentage'] > 50:\n",
+ " lst.append(row)\n",
+ " nulls_over50 = pd.DataFrame(lst)\n",
+ " \n",
+ "\n"
+ ],
"outputs": [],
- "source": []
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "source": [
+ "nulls_over50[:100]"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " percentage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | RDATE_5 | \n",
+ " 99.990567 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_5 | \n",
+ " 99.990567 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_3 | \n",
+ " 99.746363 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_3 | \n",
+ " 99.746363 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_4 | \n",
+ " 99.705488 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_4 | \n",
+ " 99.705488 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_6 | \n",
+ " 99.186685 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_6 | \n",
+ " 99.186685 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_15 | \n",
+ " 92.388798 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_15 | \n",
+ " 92.388798 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_23 | \n",
+ " 91.763091 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_23 | \n",
+ " 91.763091 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_20 | \n",
+ " 91.732696 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_20 | \n",
+ " 91.732696 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_7 | \n",
+ " 90.677273 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_7 | \n",
+ " 90.677273 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_17 | \n",
+ " 90.146942 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_17 | \n",
+ " 90.146942 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_21 | \n",
+ " 90.029556 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_21 | \n",
+ " 90.029556 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_10 | \n",
+ " 89.035970 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_10 | \n",
+ " 89.035970 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_13 | \n",
+ " 87.160944 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_13 | \n",
+ " 87.160944 | \n",
+ "
\n",
+ " \n",
+ " | NUMCHLD | \n",
+ " 87.018404 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_11 | \n",
+ " 84.551209 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_11 | \n",
+ " 84.551209 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_19 | \n",
+ " 83.359535 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_19 | \n",
+ " 83.359535 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_9 | \n",
+ " 82.461326 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_9 | \n",
+ " 82.461326 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_24 | \n",
+ " 81.409047 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_24 | \n",
+ " 81.409047 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_18 | \n",
+ " 79.270951 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_18 | \n",
+ " 79.270951 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_22 | \n",
+ " 78.123297 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_22 | \n",
+ " 78.123297 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_8 | \n",
+ " 77.495493 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_8 | \n",
+ " 77.495493 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_14 | \n",
+ " 75.561774 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_14 | \n",
+ " 75.561774 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_12 | \n",
+ " 73.064185 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_12 | \n",
+ " 73.064185 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_16 | \n",
+ " 71.707961 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_16 | \n",
+ " 71.707961 | \n",
+ "
\n",
+ " \n",
+ " | ADATE_15 | \n",
+ " 68.625540 | \n",
+ "
\n",
+ " \n",
+ " | ADATE_23 | \n",
+ " 58.975810 | \n",
+ "
\n",
+ " \n",
+ " | MBCOLECT | \n",
+ " 55.458433 | \n",
+ "
\n",
+ " \n",
+ " | MAGFAML | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | MBCRAFT | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | MBBOOKS | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | MAGFEM | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | MAGMALE | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | PUBGARDN | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | PUBCULIN | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | PUBHLTH | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | PUBDOITY | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | PUBNEWFN | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | PUBPHOTO | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | PUBOPP | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | MBGARDEN | \n",
+ " 55.395548 | \n",
+ "
\n",
+ " \n",
+ " | ADATE_20 | \n",
+ " 52.613927 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " percentage\n",
+ "RDATE_5 99.990567\n",
+ "RAMNT_5 99.990567\n",
+ "RDATE_3 99.746363\n",
+ "RAMNT_3 99.746363\n",
+ "RDATE_4 99.705488\n",
+ "RAMNT_4 99.705488\n",
+ "RAMNT_6 99.186685\n",
+ "RDATE_6 99.186685\n",
+ "RAMNT_15 92.388798\n",
+ "RDATE_15 92.388798\n",
+ "RDATE_23 91.763091\n",
+ "RAMNT_23 91.763091\n",
+ "RDATE_20 91.732696\n",
+ "RAMNT_20 91.732696\n",
+ "RAMNT_7 90.677273\n",
+ "RDATE_7 90.677273\n",
+ "RAMNT_17 90.146942\n",
+ "RDATE_17 90.146942\n",
+ "RDATE_21 90.029556\n",
+ "RAMNT_21 90.029556\n",
+ "RAMNT_10 89.035970\n",
+ "RDATE_10 89.035970\n",
+ "RDATE_13 87.160944\n",
+ "RAMNT_13 87.160944\n",
+ "NUMCHLD 87.018404\n",
+ "RDATE_11 84.551209\n",
+ "RAMNT_11 84.551209\n",
+ "RDATE_19 83.359535\n",
+ "RAMNT_19 83.359535\n",
+ "RAMNT_9 82.461326\n",
+ "RDATE_9 82.461326\n",
+ "RDATE_24 81.409047\n",
+ "RAMNT_24 81.409047\n",
+ "RAMNT_18 79.270951\n",
+ "RDATE_18 79.270951\n",
+ "RAMNT_22 78.123297\n",
+ "RDATE_22 78.123297\n",
+ "RAMNT_8 77.495493\n",
+ "RDATE_8 77.495493\n",
+ "RDATE_14 75.561774\n",
+ "RAMNT_14 75.561774\n",
+ "RAMNT_12 73.064185\n",
+ "RDATE_12 73.064185\n",
+ "RAMNT_16 71.707961\n",
+ "RDATE_16 71.707961\n",
+ "ADATE_15 68.625540\n",
+ "ADATE_23 58.975810\n",
+ "MBCOLECT 55.458433\n",
+ "MAGFAML 55.395548\n",
+ "MBCRAFT 55.395548\n",
+ "MBBOOKS 55.395548\n",
+ "MAGFEM 55.395548\n",
+ "MAGMALE 55.395548\n",
+ "PUBGARDN 55.395548\n",
+ "PUBCULIN 55.395548\n",
+ "PUBHLTH 55.395548\n",
+ "PUBDOITY 55.395548\n",
+ "PUBNEWFN 55.395548\n",
+ "PUBPHOTO 55.395548\n",
+ "PUBOPP 55.395548\n",
+ "MBGARDEN 55.395548\n",
+ "ADATE_20 52.613927"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 5
+ }
+ ],
+ "metadata": {}
},
{
"cell_type": "markdown",
- "id": "6febccdc",
- "metadata": {},
"source": [
"### 2. Exclude the following variables by looking at the definitions. Create a new empty list called drop_list. We will append this list and then drop all the columns in this list later:\n",
"\n",
"- `OSOURCE` - symbol definitions not provided, too many categories\n",
"- `ZIP CODE` - we are including state already\n"
- ]
+ ],
+ "metadata": {}
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "3a07b75a",
- "metadata": {},
+ "execution_count": 6,
+ "source": [
+ "drop_list = ['OSOURCE', 'ZIP']"
+ ],
"outputs": [],
- "source": []
+ "metadata": {}
},
{
"cell_type": "markdown",
- "id": "6a2470e4",
- "metadata": {},
"source": [
"### 3. Identify columns that over 85% missing values"
- ]
+ ],
+ "metadata": {}
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "2b6f01b6",
- "metadata": {},
- "outputs": [],
- "source": []
+ "execution_count": 7,
+ "source": [
+ "# i will just use the same loop from above but change the threshold to 85\n",
+ "\n",
+ "lst = []\n",
+ "\n",
+ "for i,row in nulls.iterrows():\n",
+ " if row['percentage'] > 85:\n",
+ " lst.append(row)\n",
+ " nulls_over85 = pd.DataFrame(lst)\n",
+ "\n",
+ "nulls_over85"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " percentage | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | RDATE_5 | \n",
+ " 99.990567 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_5 | \n",
+ " 99.990567 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_3 | \n",
+ " 99.746363 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_3 | \n",
+ " 99.746363 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_4 | \n",
+ " 99.705488 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_4 | \n",
+ " 99.705488 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_6 | \n",
+ " 99.186685 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_6 | \n",
+ " 99.186685 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_15 | \n",
+ " 92.388798 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_15 | \n",
+ " 92.388798 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_23 | \n",
+ " 91.763091 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_23 | \n",
+ " 91.763091 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_20 | \n",
+ " 91.732696 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_20 | \n",
+ " 91.732696 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_7 | \n",
+ " 90.677273 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_7 | \n",
+ " 90.677273 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_17 | \n",
+ " 90.146942 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_17 | \n",
+ " 90.146942 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_21 | \n",
+ " 90.029556 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_21 | \n",
+ " 90.029556 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_10 | \n",
+ " 89.035970 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_10 | \n",
+ " 89.035970 | \n",
+ "
\n",
+ " \n",
+ " | RDATE_13 | \n",
+ " 87.160944 | \n",
+ "
\n",
+ " \n",
+ " | RAMNT_13 | \n",
+ " 87.160944 | \n",
+ "
\n",
+ " \n",
+ " | NUMCHLD | \n",
+ " 87.018404 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " percentage\n",
+ "RDATE_5 99.990567\n",
+ "RAMNT_5 99.990567\n",
+ "RDATE_3 99.746363\n",
+ "RAMNT_3 99.746363\n",
+ "RDATE_4 99.705488\n",
+ "RAMNT_4 99.705488\n",
+ "RAMNT_6 99.186685\n",
+ "RDATE_6 99.186685\n",
+ "RAMNT_15 92.388798\n",
+ "RDATE_15 92.388798\n",
+ "RDATE_23 91.763091\n",
+ "RAMNT_23 91.763091\n",
+ "RDATE_20 91.732696\n",
+ "RAMNT_20 91.732696\n",
+ "RAMNT_7 90.677273\n",
+ "RDATE_7 90.677273\n",
+ "RAMNT_17 90.146942\n",
+ "RDATE_17 90.146942\n",
+ "RDATE_21 90.029556\n",
+ "RAMNT_21 90.029556\n",
+ "RAMNT_10 89.035970\n",
+ "RDATE_10 89.035970\n",
+ "RDATE_13 87.160944\n",
+ "RAMNT_13 87.160944\n",
+ "NUMCHLD 87.018404"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 7
+ }
+ ],
+ "metadata": {}
},
{
"cell_type": "markdown",
- "id": "70865946",
- "metadata": {},
"source": [
"### 4. Remove those columns from the dataframe"
- ]
+ ],
+ "metadata": {}
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "ca6c4d91",
- "metadata": {},
- "outputs": [],
- "source": []
+ "execution_count": 8,
+ "source": [
+ "# have to swap the rows and columns so i can make a list of the columsn to drop\n",
+ "\n",
+ "to_delete = list(nulls_over85.transpose())\n",
+ "to_delete\n"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "['RDATE_5',\n",
+ " 'RAMNT_5',\n",
+ " 'RDATE_3',\n",
+ " 'RAMNT_3',\n",
+ " 'RDATE_4',\n",
+ " 'RAMNT_4',\n",
+ " 'RAMNT_6',\n",
+ " 'RDATE_6',\n",
+ " 'RAMNT_15',\n",
+ " 'RDATE_15',\n",
+ " 'RDATE_23',\n",
+ " 'RAMNT_23',\n",
+ " 'RDATE_20',\n",
+ " 'RAMNT_20',\n",
+ " 'RAMNT_7',\n",
+ " 'RDATE_7',\n",
+ " 'RAMNT_17',\n",
+ " 'RDATE_17',\n",
+ " 'RDATE_21',\n",
+ " 'RAMNT_21',\n",
+ " 'RAMNT_10',\n",
+ " 'RDATE_10',\n",
+ " 'RDATE_13',\n",
+ " 'RAMNT_13',\n",
+ " 'NUMCHLD']"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 8
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "source": [
+ "# drop cols and make new copy of df\n",
+ "\n",
+ "data_copy = data.drop(columns= [col for col in to_delete])\n",
+ "data_copy"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ODATEDW | \n",
+ " OSOURCE | \n",
+ " TCODE | \n",
+ " STATE | \n",
+ " ZIP | \n",
+ " MAILCODE | \n",
+ " PVASTATE | \n",
+ " DOB | \n",
+ " NOEXCH | \n",
+ " RECINHSE | \n",
+ " ... | \n",
+ " TARGET_D | \n",
+ " HPHONE_D | \n",
+ " RFA_2R | \n",
+ " RFA_2F | \n",
+ " RFA_2A | \n",
+ " MDMAUD_R | \n",
+ " MDMAUD_F | \n",
+ " MDMAUD_A | \n",
+ " CLUSTER2 | \n",
+ " GEOCODE2 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 8901 | \n",
+ " GRI | \n",
+ " 0 | \n",
+ " IL | \n",
+ " 61081 | \n",
+ " | \n",
+ " | \n",
+ " 3712 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " L | \n",
+ " 4 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 39.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 9401 | \n",
+ " BOA | \n",
+ " 1 | \n",
+ " CA | \n",
+ " 91326 | \n",
+ " | \n",
+ " | \n",
+ " 5202 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " L | \n",
+ " 2 | \n",
+ " G | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 1.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 9001 | \n",
+ " AMH | \n",
+ " 1 | \n",
+ " NC | \n",
+ " 27017 | \n",
+ " | \n",
+ " | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 4 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 60.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 8701 | \n",
+ " BRY | \n",
+ " 0 | \n",
+ " CA | \n",
+ " 95953 | \n",
+ " | \n",
+ " | \n",
+ " 2801 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 4 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 41.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 8601 | \n",
+ " | \n",
+ " 0 | \n",
+ " FL | \n",
+ " 33176 | \n",
+ " | \n",
+ " | \n",
+ " 2001 | \n",
+ " 0 | \n",
+ " X | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 2 | \n",
+ " F | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 26.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 95407 | \n",
+ " 9601 | \n",
+ " ASE | \n",
+ " 1 | \n",
+ " AK | \n",
+ " 99504 | \n",
+ " | \n",
+ " | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 0 | \n",
+ " L | \n",
+ " 1 | \n",
+ " G | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 12.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ " | 95408 | \n",
+ " 9601 | \n",
+ " DCD | \n",
+ " 1 | \n",
+ " TX | \n",
+ " 77379 | \n",
+ " | \n",
+ " | \n",
+ " 5001 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 1 | \n",
+ " F | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 2.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | 95409 | \n",
+ " 9501 | \n",
+ " MBC | \n",
+ " 1 | \n",
+ " MI | \n",
+ " 48910 | \n",
+ " | \n",
+ " | \n",
+ " 3801 | \n",
+ " 0 | \n",
+ " | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 3 | \n",
+ " E | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 34.0 | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " | 95410 | \n",
+ " 8601 | \n",
+ " PRV | \n",
+ " 0 | \n",
+ " CA | \n",
+ " 91320 | \n",
+ " | \n",
+ " | \n",
+ " 4005 | \n",
+ " 0 | \n",
+ " X | \n",
+ " ... | \n",
+ " 18.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 4 | \n",
+ " F | \n",
+ " X | \n",
+ " X | \n",
+ " X | \n",
+ " 11.0 | \n",
+ " A | \n",
+ "
\n",
+ " \n",
+ " | 95411 | \n",
+ " 8801 | \n",
+ " MCC | \n",
+ " 2 | \n",
+ " NC | \n",
+ " 28409 | \n",
+ " | \n",
+ " | \n",
+ " 1801 | \n",
+ " 0 | \n",
+ " X | \n",
+ " ... | \n",
+ " 0.0 | \n",
+ " 1 | \n",
+ " L | \n",
+ " 1 | \n",
+ " G | \n",
+ " C | \n",
+ " 1 | \n",
+ " C | \n",
+ " 12.0 | \n",
+ " C | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
95412 rows × 456 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ODATEDW OSOURCE TCODE STATE ZIP MAILCODE PVASTATE DOB NOEXCH \\\n",
+ "0 8901 GRI 0 IL 61081 3712 0 \n",
+ "1 9401 BOA 1 CA 91326 5202 0 \n",
+ "2 9001 AMH 1 NC 27017 0 0 \n",
+ "3 8701 BRY 0 CA 95953 2801 0 \n",
+ "4 8601 0 FL 33176 2001 0 \n",
+ "... ... ... ... ... ... ... ... ... ... \n",
+ "95407 9601 ASE 1 AK 99504 0 0 \n",
+ "95408 9601 DCD 1 TX 77379 5001 0 \n",
+ "95409 9501 MBC 1 MI 48910 3801 0 \n",
+ "95410 8601 PRV 0 CA 91320 4005 0 \n",
+ "95411 8801 MCC 2 NC 28409 1801 0 \n",
+ "\n",
+ " RECINHSE ... TARGET_D HPHONE_D RFA_2R RFA_2F RFA_2A MDMAUD_R MDMAUD_F \\\n",
+ "0 ... 0.0 0 L 4 E X X \n",
+ "1 ... 0.0 0 L 2 G X X \n",
+ "2 ... 0.0 1 L 4 E X X \n",
+ "3 ... 0.0 1 L 4 E X X \n",
+ "4 X ... 0.0 1 L 2 F X X \n",
+ "... ... ... ... ... ... ... ... ... ... \n",
+ "95407 ... 0.0 0 L 1 G X X \n",
+ "95408 ... 0.0 1 L 1 F X X \n",
+ "95409 ... 0.0 1 L 3 E X X \n",
+ "95410 X ... 18.0 1 L 4 F X X \n",
+ "95411 X ... 0.0 1 L 1 G C 1 \n",
+ "\n",
+ " MDMAUD_A CLUSTER2 GEOCODE2 \n",
+ "0 X 39.0 C \n",
+ "1 X 1.0 A \n",
+ "2 X 60.0 C \n",
+ "3 X 41.0 C \n",
+ "4 X 26.0 A \n",
+ "... ... ... ... \n",
+ "95407 X 12.0 C \n",
+ "95408 X 2.0 A \n",
+ "95409 X 34.0 B \n",
+ "95410 X 11.0 A \n",
+ "95411 C 12.0 C \n",
+ "\n",
+ "[95412 rows x 456 columns]"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 19
+ }
+ ],
+ "metadata": {}
},
{
"cell_type": "markdown",
- "id": "7bbcf161",
- "metadata": {},
"source": [
"### 5. Reduce the number of categories in the column GENDER. The column should only have either \"M\" for males, \"F\" for females, and \"other\" for all the rest\n",
"\n",
@@ -96,22 +1536,123 @@
"print(categorical['GENDER'].value_counts())\n",
"categorical['GENDER'] = categorical['GENDER'].fillna('F')\n",
"```"
- ]
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "source": [
+ "data_copy['GENDER'] = data_copy['GENDER'].fillna('F')"
+ ],
+ "outputs": [],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "source": [
+ "data_copy['GENDER'].value_counts()"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "F 51277\n",
+ "M 39094\n",
+ " 2957\n",
+ "U 1715\n",
+ "J 365\n",
+ "A 2\n",
+ "C 2\n",
+ "Name: GENDER, dtype: int64"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 21
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "source": [
+ "# some rows are blanks not nulls so need can't use the fillna function\n",
+ "\n",
+ "data_copy['GENDER'].isna().sum()"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "0"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 22
+ }
+ ],
+ "metadata": {}
},
{
"cell_type": "code",
- "execution_count": null,
- "id": "b583feaa",
- "metadata": {},
+ "execution_count": 23,
+ "source": [
+ "replace = {\n",
+ " 'U': \"other\",\n",
+ " 'J' : \"other\",\n",
+ " 'A' : \"other\",\n",
+ " 'C' : \"other\",\n",
+ " ' ' : \"other\"\n",
+ "}\n",
+ "\n",
+ "data_copy[\"GENDER\"] = data_copy[\"GENDER\"].replace(replace)\n",
+ "\n"
+ ],
"outputs": [],
- "source": []
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "i tried to do the above with a for loop but still don't really understand how to loop through dataframes :(\n",
+ "in this case using a dictionary is ok because there are only 5 values to replace but if there were more a loop would be more efficient."
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "source": [
+ "# now other has replaced all the non M or F rows\n",
+ "\n",
+ "data_copy['GENDER'].value_counts()"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "F 51277\n",
+ "M 39094\n",
+ "other 5041\n",
+ "Name: GENDER, dtype: int64"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 24
+ }
+ ],
+ "metadata": {}
}
],
"metadata": {
"kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
+ "name": "python3",
+ "display_name": "Python 3.8.8 64-bit ('base': conda)"
},
"language_info": {
"codemirror_mode": {
@@ -123,9 +1664,12 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.8.5"
+ "version": "3.8.8"
+ },
+ "interpreter": {
+ "hash": "f27e873c37e1f1555e60b9534290287a99b02cba69d8f829668ffeb66728ce50"
}
},
"nbformat": 4,
"nbformat_minor": 5
-}
+}
\ No newline at end of file