{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 1.Overview of the Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline\n", "import matplotlib\n", "matplotlib.rcParams[\"figure.figsize\"] = (20,10)\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "ename": "FileNotFoundError", "evalue": "[Errno 2] No such file or directory: 'C:/Users/vijay/OneDrive/Desktop/Data Analysis Project/BHV.csv'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[2], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m df1 \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mC:/Users/vijay/OneDrive/Desktop/Data Analysis Project/BHV.csv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[0;32m 2\u001b[0m df1\u001b[38;5;241m.\u001b[39mhead(\u001b[38;5;241m5\u001b[39m)\n", "File \u001b[1;32mc:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pandas\\util\\_decorators.py:211\u001b[0m, in \u001b[0;36mdeprecate_kwarg.._deprecate_kwarg..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 209\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 210\u001b[0m kwargs[new_arg_name] \u001b[38;5;241m=\u001b[39m new_arg_value\n\u001b[1;32m--> 211\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", "File \u001b[1;32mc:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pandas\\util\\_decorators.py:331\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 325\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[0;32m 326\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 327\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[0;32m 328\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[0;32m 329\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[0;32m 330\u001b[0m )\n\u001b[1;32m--> 331\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", "File \u001b[1;32mc:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:950\u001b[0m, in \u001b[0;36mread_csv\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001b[0m\n\u001b[0;32m 935\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[0;32m 936\u001b[0m dialect,\n\u001b[0;32m 937\u001b[0m delimiter,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 946\u001b[0m defaults\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdelimiter\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m\"\u001b[39m},\n\u001b[0;32m 947\u001b[0m )\n\u001b[0;32m 948\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[1;32m--> 950\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[1;32mc:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:605\u001b[0m, in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 602\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[0;32m 604\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[1;32m--> 605\u001b[0m parser \u001b[38;5;241m=\u001b[39m TextFileReader(filepath_or_buffer, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwds)\n\u001b[0;32m 607\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[0;32m 608\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", "File \u001b[1;32mc:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:1442\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 1439\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 1441\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m-> 1442\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[1;32mc:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:1735\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[1;34m(self, f, engine)\u001b[0m\n\u001b[0;32m 1733\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[0;32m 1734\u001b[0m mode \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m-> 1735\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1736\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1737\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1738\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1739\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcompression\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1740\u001b[0m \u001b[43m \u001b[49m\u001b[43mmemory_map\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmemory_map\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1741\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_text\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_text\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1742\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding_errors\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstrict\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1743\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstorage_options\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1744\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1745\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 1746\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n", "File \u001b[1;32mc:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\pandas\\io\\common.py:856\u001b[0m, in \u001b[0;36mget_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[0;32m 851\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[0;32m 852\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[0;32m 853\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[0;32m 854\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[0;32m 855\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[1;32m--> 856\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 857\u001b[0m \u001b[43m \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 858\u001b[0m \u001b[43m \u001b[49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 859\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 860\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 861\u001b[0m \u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 862\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 863\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 864\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[0;32m 865\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n", "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'C:/Users/vijay/OneDrive/Desktop/Data Analysis Project/BHV.csv'" ] } ], "source": [ "df1 = pd.read_csv(\"C:/Users/vijay/OneDrive/Desktop/Data Analysis Project/BHV.csv\")\n", "df1.head(5)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(13320, 9)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "area_type\n", "Built-up Area 2418\n", "Carpet Area 87\n", "Plot Area 2025\n", "Super built-up Area 8790\n", "Name: area_type, dtype: int64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.groupby('area_type')['area_type'].agg('count')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['area_type', 'availability', 'location', 'size', 'society',\n", " 'total_sqft', 'bath', 'balcony', 'price'],\n", " dtype='object')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1.columns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['Super built-up Area', 'Plot Area', 'Built-up Area',\n", " 'Carpet Area'], dtype=object)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1['area_type'].unique()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Super built-up Area 8790\n", "Built-up Area 2418\n", "Plot Area 2025\n", "Carpet Area 87\n", "Name: area_type, dtype: int64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df1['area_type'].value_counts()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(13320, 5)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = df1.drop(['area_type','society','balcony','availability'], axis = 'columns')\n", "df2.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2.Data Cleaning (Handling NA values)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "location 1\n", "size 16\n", "total_sqft 0\n", "bath 73\n", "price 0\n", "dtype: int64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.isnull().sum()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(13320, 5)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "location 0\n", "size 0\n", "total_sqft 0\n", "bath 0\n", "price 0\n", "dtype: int64" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df3 = df2.dropna()\n", "df3.isnull().sum()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(13246, 5)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df3.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3.Feature Engineering" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Adding new feature (in integer format) for bhk (Bedroom,Hall,Kitchen)\n", "2. Add new feature called price per square feet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Adding new feature (in integer format) for bhk (Bedroom,Hall,Kitchen)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vijay\\AppData\\Local\\Temp\\ipykernel_7480\\2716584372.py:1: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df3['bhk'] = df3['size'].apply(lambda x: int(x.split(' ')[0]))\n" ] }, { "data": { "text/plain": [ "array([ 2, 4, 3, 6, 1, 8, 7, 5, 11, 9, 27, 10, 19, 16, 43, 14, 12,\n", " 13, 18], dtype=int64)" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df3['bhk'] = df3['size'].apply(lambda x: int(x.split(' ')[0]))\n", "df3.bhk.unique()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "def is_float(x):\n", " try:\n", " float(x)\n", " except:\n", " return False\n", " return True" ] }, { "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", "
locationsizetotal_sqftbathpricebhk
30Yelahanka4 BHK2100 - 28504.0186.0004
122Hebbal4 BHK3067 - 81564.0477.0004
1378th Phase JP Nagar2 BHK1042 - 11052.054.0052
165Sarjapur2 BHK1145 - 13402.043.4902
188KR Puram2 BHK1015 - 15402.056.8002
410Kengeri1 BHK34.46Sq. Meter1.018.5001
549Hennur Road2 BHK1195 - 14402.063.7702
648Arekere9 Bedroom4125Perch9.0265.0009
661Yelahanka2 BHK1120 - 11452.048.1302
672Bettahalsoor4 Bedroom3090 - 50024.0445.0004
\n", "
" ], "text/plain": [ " location size total_sqft bath price bhk\n", "30 Yelahanka 4 BHK 2100 - 2850 4.0 186.000 4\n", "122 Hebbal 4 BHK 3067 - 8156 4.0 477.000 4\n", "137 8th Phase JP Nagar 2 BHK 1042 - 1105 2.0 54.005 2\n", "165 Sarjapur 2 BHK 1145 - 1340 2.0 43.490 2\n", "188 KR Puram 2 BHK 1015 - 1540 2.0 56.800 2\n", "410 Kengeri 1 BHK 34.46Sq. Meter 1.0 18.500 1\n", "549 Hennur Road 2 BHK 1195 - 1440 2.0 63.770 2\n", "648 Arekere 9 Bedroom 4125Perch 9.0 265.000 9\n", "661 Yelahanka 2 BHK 1120 - 1145 2.0 48.130 2\n", "672 Bettahalsoor 4 Bedroom 3090 - 5002 4.0 445.000 4" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df3[~df3['total_sqft'].apply(is_float)].head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Above shows that total_sqft can be a range (e.g. 2100-2850). For such case we can just take average of min and max value in the range. There are other cases such as 34.46Sq. Meter which one can convert to square ft using unit conversion. I am going to just drop such corner cases to keep things simple" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "def convert_sqft_to_num(x):\n", " tokens = x.split('-')\n", " if len(tokens) == 2:\n", " return (float(tokens[0])+float(tokens[1]))/2\n", " try:\n", " return float(x)\n", " except:\n", " return None " ] }, { "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", "
locationsizetotal_sqftbathpricebhk
0Electronic City Phase II2 BHK1056.02.039.072
1Chikka Tirupathi4 Bedroom2600.05.0120.004
\n", "
" ], "text/plain": [ " location size total_sqft bath price bhk\n", "0 Electronic City Phase II 2 BHK 1056.0 2.0 39.07 2\n", "1 Chikka Tirupathi 4 Bedroom 2600.0 5.0 120.00 4" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "df4 = df3.copy()\n", "df4.total_sqft = df4.total_sqft.apply(convert_sqft_to_num)\n", "df4 = df4[df4.total_sqft.notnull()]\n", "df4.head(2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "location Yelahanka\n", "size 4 BHK\n", "total_sqft 2475.0\n", "bath 4.0\n", "price 186.0\n", "bhk 4\n", "Name: 30, dtype: object" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "df4.loc[30]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Add new feature called price per square feet" ] }, { "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", "
locationsizetotal_sqftbathpricebhkprice_per_sqft
0Electronic City Phase II2 BHK1056.02.039.0723699.810606
1Chikka Tirupathi4 Bedroom2600.05.0120.0044615.384615
2Uttarahalli3 BHK1440.02.062.0034305.555556
3Lingadheeranahalli3 BHK1521.03.095.0036245.890861
4Kothanur2 BHK1200.02.051.0024250.000000
\n", "
" ], "text/plain": [ " location size total_sqft bath price bhk \\\n", "0 Electronic City Phase II 2 BHK 1056.0 2.0 39.07 2 \n", "1 Chikka Tirupathi 4 Bedroom 2600.0 5.0 120.00 4 \n", "2 Uttarahalli 3 BHK 1440.0 2.0 62.00 3 \n", "3 Lingadheeranahalli 3 BHK 1521.0 3.0 95.00 3 \n", "4 Kothanur 2 BHK 1200.0 2.0 51.00 2 \n", "\n", " price_per_sqft \n", "0 3699.810606 \n", "1 4615.384615 \n", "2 4305.555556 \n", "3 6245.890861 \n", "4 4250.000000 " ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df5 = df4.copy()\n", "df5['price_per_sqft'] = df5['price']*100000/df5['total_sqft']\n", "df5.head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 1.320000e+04\n", "mean 7.920759e+03\n", "std 1.067272e+05\n", "min 2.678298e+02\n", "25% 4.267701e+03\n", "50% 5.438331e+03\n", "75% 7.317073e+03\n", "max 1.200000e+07\n", "Name: price_per_sqft, dtype: float64" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df5_stats = df5['price_per_sqft'].describe()\n", "df5_stats" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df5.to_csv(\"BHV.csv\",index=False)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Examine locations which is a categorical variable. We need to apply dimensionality reduction technique here to reduce number of locations" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Whitefield 533\n", "Sarjapur Road 392\n", "Electronic City 304\n", "Kanakpura Road 264\n", "Thanisandra 235\n", " ... \n", "Rajanna Layout 1\n", "Subramanyanagar 1\n", "Lakshmipura Vidyaanyapura 1\n", "Malur Hosur Road 1\n", "Abshot Layout 1\n", "Name: location, Length: 1287, dtype: int64" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df5.location = df5.location.apply(lambda x: x.strip())\n", "location_stats = df5['location'].value_counts(ascending=False)\n", "location_stats" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "13200" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "location_stats.values.sum()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "240" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(location_stats[location_stats>10])\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1287" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(location_stats)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1047" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(location_stats[location_stats<=10])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. Dimensionality Reduction" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "BTM 1st Stage 10\n", "Gunjur Palya 10\n", "Nagappa Reddy Layout 10\n", "Sector 1 HSR Layout 10\n", "Thyagaraja Nagar 10\n", " ..\n", "Rajanna Layout 1\n", "Subramanyanagar 1\n", "Lakshmipura Vidyaanyapura 1\n", "Malur Hosur Road 1\n", "Abshot Layout 1\n", "Name: location, Length: 1047, dtype: int64" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "location_stats_less_than_10 = location_stats[location_stats<=10]\n", "location_stats_less_than_10" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1287" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "len(df5.location.unique())\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "241" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df5.location = df5.location.apply(lambda x: 'other' if x in location_stats_less_than_10 else x)\n", "len(df5.location.unique())" ] }, { "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", "
locationsizetotal_sqftbathpricebhkprice_per_sqft
0Electronic City Phase II2 BHK1056.02.039.0723699.810606
1Chikka Tirupathi4 Bedroom2600.05.0120.0044615.384615
2Uttarahalli3 BHK1440.02.062.0034305.555556
3Lingadheeranahalli3 BHK1521.03.095.0036245.890861
4Kothanur2 BHK1200.02.051.0024250.000000
5Whitefield2 BHK1170.02.038.0023247.863248
6Old Airport Road4 BHK2732.04.0204.0047467.057101
7Rajaji Nagar4 BHK3300.04.0600.00418181.818182
8Marathahalli3 BHK1310.03.063.2534828.244275
9other6 Bedroom1020.06.0370.00636274.509804
\n", "
" ], "text/plain": [ " location size total_sqft bath price bhk \\\n", "0 Electronic City Phase II 2 BHK 1056.0 2.0 39.07 2 \n", "1 Chikka Tirupathi 4 Bedroom 2600.0 5.0 120.00 4 \n", "2 Uttarahalli 3 BHK 1440.0 2.0 62.00 3 \n", "3 Lingadheeranahalli 3 BHK 1521.0 3.0 95.00 3 \n", "4 Kothanur 2 BHK 1200.0 2.0 51.00 2 \n", "5 Whitefield 2 BHK 1170.0 2.0 38.00 2 \n", "6 Old Airport Road 4 BHK 2732.0 4.0 204.00 4 \n", "7 Rajaji Nagar 4 BHK 3300.0 4.0 600.00 4 \n", "8 Marathahalli 3 BHK 1310.0 3.0 63.25 3 \n", "9 other 6 Bedroom 1020.0 6.0 370.00 6 \n", "\n", " price_per_sqft \n", "0 3699.810606 \n", "1 4615.384615 \n", "2 4305.555556 \n", "3 6245.890861 \n", "4 4250.000000 \n", "5 3247.863248 \n", "6 7467.057101 \n", "7 18181.818182 \n", "8 4828.244275 \n", "9 36274.509804 " ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df5.head(10)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 5. Outlier Removal Using Business Logic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Outlier Removal Using Standard Deviation and Mean\n", "2. Outlier Removal Using Bathroom Features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Outlier Removal Using Standard Deviation and Mean" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "As a data scientist when you have a conversation with your business manager (who has expertise in real estate), he will tell you that normally square ft per bedroom is 300 (i.e. 2 bhk apartment is minimum 600 sqft. If you have for example 400 sqft apartment with 2 bhk than that seems suspicious and can be removed as an outlier. We will remove such outliers by keeping our minimum thresold per bhk to be 300 sqft" ] }, { "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", "
locationsizetotal_sqftbathpricebhkprice_per_sqft
9other6 Bedroom1020.06.0370.0636274.509804
45HSR Layout8 Bedroom600.09.0200.0833333.333333
58Murugeshpalya6 Bedroom1407.04.0150.0610660.980810
68Devarachikkanahalli8 Bedroom1350.07.085.086296.296296
70other3 Bedroom500.03.0100.0320000.000000
\n", "
" ], "text/plain": [ " location size total_sqft bath price bhk \\\n", "9 other 6 Bedroom 1020.0 6.0 370.0 6 \n", "45 HSR Layout 8 Bedroom 600.0 9.0 200.0 8 \n", "58 Murugeshpalya 6 Bedroom 1407.0 4.0 150.0 6 \n", "68 Devarachikkanahalli 8 Bedroom 1350.0 7.0 85.0 8 \n", "70 other 3 Bedroom 500.0 3.0 100.0 3 \n", "\n", " price_per_sqft \n", "9 36274.509804 \n", "45 33333.333333 \n", "58 10660.980810 \n", "68 6296.296296 \n", "70 20000.000000 " ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df5[df5.total_sqft/df5.bhk<300].head()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(13200, 7)" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df5.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(12456, 7)" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df6 = df5[~(df5.total_sqft/df5.bhk<300)]\n", "df6.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Outlier removal using standard deviation and mean" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 12456.000000\n", "mean 6308.502826\n", "std 4168.127339\n", "min 267.829813\n", "25% 4210.526316\n", "50% 5294.117647\n", "75% 6916.666667\n", "max 176470.588235\n", "Name: price_per_sqft, dtype: float64" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df6.price_per_sqft.describe()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we find that min price per sqft is 267 rs/sqft whereas max is 12000000, this shows a wide variation in property prices. We should remove outliers per location using mean and one standard deviation" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10242, 7)" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def remove_pps_outliers(df):\n", " df_out = pd.DataFrame()\n", " for key, subdf in df.groupby('location'):\n", " m = np.mean(subdf.price_per_sqft)\n", " st = np.std(subdf.price_per_sqft)\n", " reduced_df = subdf[(subdf.price_per_sqft>(m-st)) & (subdf.price_per_sqft<=(m+st))]\n", " df_out = pd.concat([df_out,reduced_df],ignore_index=True)\n", " return df_out\n", "df7 = remove_pps_outliers(df6)\n", "df7.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's check if for a given location how does the 2 BHK and 3 BHK property prices look like\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABNYAAANXCAYAAAD5PtJMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB89klEQVR4nOzdeXidZZ0//vdJ03Q5ISlbU5DiAnzBIgiKM9YCbsgiSqHIjCOyjaMCRaEVBusPZVEsKsOiY4sz8gUVGB0QlGUEC0KhLIogioAoiFSBFpQvCTmEpknO749MQ0O35DR7Xq/rOlee537u85zP0x4KvHsvhXK5XA4AAAAA0CtVg10AAAAAAAxHgjUAAAAAqIBgDQAAAAAqIFgDAAAAgAoI1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAIAKCNYAAAAAoAKCNQCAIa5QKOSMM87o9ftuu+22FAqF3HbbbV1tRx99dF73utf1WW0AAKOZYA0AoI9ceumlKRQKXa/q6uq85jWvydFHH52nnnpqsMvrlXe9610pFAr54Ac/uMa1P/3pTykUCjn33HMHoTIAgKGjerALAAAYac4666y8/vWvz8svv5x77rknl156aZYsWZLf/va3GT9+fK/v19LSkurq3v9n2957752WlpbU1NR0tf3nf/5nOjo6enyP66+/Pvfdd1/e+ta39vrzAQBGOiPWAAD62AEHHJCPfvSj+Zd/+Zd8+9vfzsknn5zHH3881157bUX3Gz9+fEXBWlVVVcaPH5+qqlf+k2/s2LEZN25cj96/7bbbZtNNN82ZZ57Z688ebKVSabBLAABGAcEaAEA/22uvvZIkjz/+eFdba2trvvCFL+Stb31r6uvrUywWs9dee+XWW29d4/2vXmPtySefzPHHH58dd9wxEyZMyOabb57DDjssf/rTn7q9b2PXWNtkk00yZ86cXHfddbn//vvX2/f555/PySefnF122SW1tbWpq6vLAQcckF//+tdr9H3yySdz0EEHpVgsZvLkyZkzZ05uuummNWq94447cthhh2XbbbfNuHHjMnXq1MyZMyctLS3d7nf00UentrY2jz/+eN7//vdnk002yeGHH96jZwQA2BimggIA9LNVgdemm27a1dbU1JRvf/vb+ad/+qd8/OMfz4svvpiLL744++23X37xi19kt912W+f97r333tx111358Ic/nG222SZ/+tOfsnDhwrzrXe/Kww8/nIkTJ/ZZ7SeeeGLOP//8nHHGGesdcffHP/4xP/rRj3LYYYfl9a9/fZYvX55vfetbeec735mHH344W2+9dZLOkWTvec978swzz+TEE0/MlClTcsUVV6w1ULzyyivz0ksv5bjjjsvmm2+eX/ziF/nGN76Rv/zlL7nyyiu79W1ra8t+++2XPffcM+eee26f/hoAAKyLYA0AoI81Njbmr3/9a15++eX8/Oc/z5lnnplx48blAx/4QFefTTfdNH/605+6rX/28Y9/PDvttFO+8Y1v5OKLL17n/Q888MB86EMf6tb2wQ9+MNOnT88Pf/jDHHHEEX32LHV1dTnppJNy+umn5/77789b3vKWtfbbZZdd8vvf/77btNMjjjgiO+20Uy6++OJ8/vOfT5J861vf6grhZs6cmST55Cc/md13332Ne37lK1/JhAkTus4/8YlPZPvtt8/nPve5LF26NNtuu23XtRUrVuSwww7L/Pnz++S5AQB6wlRQAIA+ts8++2TLLbfM1KlT86EPfSjFYjHXXnttttlmm64+Y8aM6QrVOjo68vzzz6etrS177LHHBqddrh42rVy5Mn/729+y/fbbZ9KkSRt8byVOPPHEDa61Nm7cuK5Qrb29PX/7299SW1ubHXfcsVtNN954Y17zmtfkoIMO6mobP358Pv7xj69xz9Wfs1Qq5a9//Wve8Y53pFwu51e/+tUa/Y877riKng8AoFKCNQCAPvbNb34zixYtylVXXZX3v//9+etf/7rWDQO+853vZNddd8348eOz+eabZ8stt8wNN9yQxsbG9d6/paUlX/jCFzJ16tSMGzcuW2yxRbbccsu88MILG3xvJerr63PSSSfl2muvXWuglXSGg+eff3522GGHbjX95je/6VbTk08+me222y6FQqHb+7fffvs17rl06dIcffTR2WyzzVJbW5stt9wy73znO5Nkjeesrq7uFlwCAAwEwRoAQB/7u7/7u+yzzz459NBDc+211+ZNb3pTPvKRj6S5ubmrz2WXXZajjz462223XS6++OLceOONWbRoUd7znveko6Njvff/1Kc+lbPPPjv/8A//kP/+7//OT3/60yxatCibb775Bt9bqRNPPDGTJk1a56i1L3/5y5k7d2723nvvXHbZZbnpppuyaNGi7LzzzhXV1N7enve973254YYbcuqpp+ZHP/pRFi1alEsvvTRJ1rjn6iPmAAAGijXWAAD60ZgxYzJ//vy8+93vzr//+7/ns5/9bJLkqquuyhve8IZcffXV3UZvnX766Ru851VXXZWjjjoq//Zv/9bV9vLLL+eFF17o8/pXWTVq7YwzzshRRx211pre/e53r7E23AsvvJAtttii6/y1r31tHn744ZTL5W7P/dhjj3V734MPPpjf//73+c53vpMjjzyyq33RokV99UgAABvNX+sBAPSzd73rXfm7v/u7XHDBBXn55ZeTdAZuSVIul7v6/fznP8/dd9+9wfuNGTOm2/uS5Bvf+Eba29v7sOo1nXTSSZk0aVLOOuusHtV05ZVX5qmnnurWtt9+++Wpp57qtsPoyy+/nP/8z/9c435J91+fcrmcCy+8cKOfAwCgrxixBgAwAE455ZQcdthhufTSS3PsscfmAx/4QK6++uoccsghOfDAA/PEE0/koosuyrRp07pNGV2bD3zgA/ne976X+vr6TJs2LXfffXduvvnmbL755v36DPX19TnxxBPXOh30Ax/4QM4666wcc8wxecc73pEHH3wwl19+ed7whjd06/fJT34y//7v/55/+qd/yoknnpitttoql19+ecaPH58kXaPYdtppp2y33XY5+eST89RTT6Wuri4//OEP8//+3//r12cEAOgNI9YAAAbArFmzst122+Xcc89Ne3t7jj766Hz5y1/Or3/963z605/OTTfdlMsuuyx77LHHBu914YUX5sgjj8zll1+ez3zmM3nmmWdy8803p7a2tt+f46STTkp9ff0a7Z/73Ofymc98JjfddFNOPPHE3H///bnhhhsyderUbv1qa2vzs5/9LO95z3ty4YUX5ktf+lL22muvfP7zn0+SroBt7Nixue6667Lbbrtl/vz5OfPMM7PDDjvku9/9br8/IwBATxXKrx6zDwDAkNHe3p7q6up88YtfzGmnndar995yyy3ZZ599cscdd2TPPffspwr7xgUXXJA5c+bkL3/5S17zmtcMdjkAAD1ixBoAwBD2zDPPJEm3DQAG4r39qaWlpdv5yy+/nG9961vZYYcdhGoAwLBijTUAgCHqqquuyne/+90UCoW8+93v7vH7SqVSLr/88lx44YXZZptt8n/+z//pxyp7b9asWdl2222z2267pbGxMZdddll+97vf5fLLLx/s0gAAekWwBgAwRP3rv/5rCoVCLr744uy44449ft9zzz2XT33qU9lll11yySWXpKpqaE1S2G+//fLtb387l19+edrb2zNt2rR8//vfzz/+4z8OdmkAAL1ijTUAAAAAqMDQ+utLAAAAABgmBGsAAAAAUAFrrCXp6OjI008/nU022SSFQmGwywEAAABgkJTL5bz44ovZeuutN7hWrWAtydNPP52pU6cOdhkAAAAADBF//vOfs80226y3j2AtySabbJKk8xesrq5ukKsBAAAAYLA0NTVl6tSpXXnR+gjWkq7pn3V1dYI1AAAAAHq0XJjNCwAAAACgAoI1AAAAAKiAYA0AAAAAKmCNtR5qb2/PypUrB7uMEW3MmDGprq7u0RxmAAAAgMEmWOuB5ubm/OUvf0m5XB7sUka8iRMnZquttkpNTc1glwIAAACwXoK1DWhvb89f/vKXTJw4MVtuuaXRVP2kXC6ntbU1zz33XJ544onssMMOqaoyUxkAAAAYugRrG7By5cqUy+VsueWWmTBhwmCXM6JNmDAhY8eOzZNPPpnW1taMHz9+sEsCAAAAWCdDgnrISLWBYZQaAAAAMFxIMQAAAACgAoI1AAAAAKiAYA0AAAAAKiBYG0AtLcny5Z0/+9v8+fPztre9LZtsskkmT56cgw8+OI8++uh633PGGWekUCh0verr67PXXntl8eLF3fq97nWvywUXXLDW9++2227rPE+SO+64I5MmTcpJJ52Ucrlc6eMBAAAADDrB2gBYsiSZNSuprU2mTOn8OWtWcued/feZixcvzuzZs3PPPfdk0aJFWblyZfbdd9+USqX1vm/nnXfOM888k2eeeSZ33313dthhh3zgAx9IY2PjRtd0ww03ZL/99svcuXNzwQUX2BACAAAAGNYEa/1s4cJk772T665LOjo62zo6Os/32iu56KL++dwbb7wxRx99dHbeeee8+c1vzqWXXpqlS5fmvvvuW+/7qqurM2XKlEyZMiXTpk3LWWedlebm5vz+97/fqHquuOKKzJo1K1/96lfzhS98YaPuBQAAADAUCNb60ZIlyezZSbmctLV1v9bW1tl+/PH9O3JtlVUjzjbbbLMev2fFihW55JJLMmnSpOy4444Vf/Y3v/nNHHPMMfm///f/5oQTTqj4PgAAAABDSfVgFzCSnXdeMmbMmqHa6saMSc4/P5kxo//q6OjoyEknnZQZM2bkTW9603r7Pvjgg6mtrU2SvPTSS9lkk03ygx/8IHV1dd36nXrqqTnttNO6tbW2tmbatGnd2h555JGccMIJufjii3P44Yf3wdMAAAAADA2CtX7S0pL8+MevTP9cl7a25JprOvtPmNA/tcyePTu//e1vs2TJkg323XHHHXPttdcmSV588cX84Ac/yGGHHZZbb701e+yxR1e/U045JUcffXS3937961/P7bff3q1tm222yaRJk/K1r30tBxxwQLbaaquNfyAAAACAIcBU0H7S1LThUG2Vjo7O/v3hhBNOyPXXX59bb70122yzzQb719TUZPvtt8/222+f3XffPeecc05e85rXrLEL6BZbbNHVb9VrbdNMN9lkk9x8880pFot597vfnWeeeaavHg0AAABgUAnW+kldXVLVw1/dqqrO/n2pXC7nhBNOyDXXXJOf/exnef3rX1/xvcaMGZOWlpaK37/pppvm5ptvTl1dXd71rnfl6aefrvheAAAAAEOFYK2fTJiQzJyZVG9gsm11dXLIIX0/DXT27Nm57LLLcsUVV2STTTbJsmXLsmzZsg0GZG1tbV19//CHP+RLX/pSHn744cycOXOj6pk0aVIWLVqUTTfdVLgGAAAAjAiCtX40d27S3r7+Pu3tyZw5ff/ZCxcuTGNjY971rndlq6226nr94Ac/WO/7Hnrooa6+u+22W/77v/87CxcuzJFHHrnRNdXX1+enP/1ptthii7zzne/MU089tdH3BAAAABgshXK5XB7sIgZbU1NT6uvr09jYuMbuly+//HKeeOKJvP71r8/48eN7fe+LLkqOP37N3UGrqztDtQULkmOP3dgnGDk29tcbAAAAYGOsLyd6NSPW+tmxxyZ33NE5LXTVmmtVVZ3nd9whVAMAAAAYrjawAhh9YcaMzldLS+fun3V1fb+mGgAAAAADS7A2gCZMEKgBAAAAjBSmggIAAABABQRrAAAAAFABwRoAAADAKFFqLaVwZiGFMwsptZYGu5xhT7AGAAAAABUQrAEAAABABewKCgAAADCCrT7ls7Ry7cdJUqwpDlhNI4VgDQAAAGAEq51fu9b2hnMbup2XTy8PRDkjiqmgI9TChQuz6667pq6uLnV1dZk+fXp+8pOfrPc9Z5xxRgqFQtervr4+e+21VxYvXtyt3+te97pccMEFa33/brvtts7zJLnjjjsyadKknHTSSSmX/QMLAAAADF9GrA2QUmupKyFuntfc78Mrt9lmm5xzzjnZYYcdUi6X853vfCczZ87Mr371q+y8887rfN/OO++cm2++OUny/PPP59xzz80HPvCB/OUvf0l9ff1G1XTDDTfksMMOy2c/+9l84Qtf2Kh7AQAAAD3TPK+567i0stQ1Um35yctTHGv658YwYm2E+uAHP5j3v//92WGHHfJ//s//ydlnn53a2trcc889631fdXV1pkyZkilTpmTatGk566yz0tzcnN///vcbVc8VV1yRWbNm5atf/apQDQAAAAZQsab4ymu1IK04ttjtGr1nxNoo0N7eniuvvDKlUinTp0/v8ftWrFiRSy65JJMmTcqOO+5Y8ed/85vfzNy5c/N//+//zeGHH17xfQAAAACGEsFaPxrsXTcefPDBTJ8+PS+//HJqa2tzzTXXZNq0aRt8T21t55TVl156KZtsskl+8IMfpK6urlu/U089Naeddlq3ttbW1jXu/8gjj+SEE07IxRdfLFQDAAAARhTBWj8a7F03dtxxxzzwwANpbGzMVVddlaOOOiqLFy9eb7i244475tprr02SvPjii/nBD36Qww47LLfeemv22GOPrn6nnHJKjj766G7v/frXv57bb7+9W9s222yTSZMm5Wtf+1oOOOCAbLXVVn33gAAAAECvFGuKdv/sQ4K1Eaympibbb799kuStb31r7r333lx44YX51re+1aP3JMnuu++eH/3oR7ngggty2WWXdbVvscUW3folyWabbbbG/TbZZJPcfPPNed/73pd3v/vdufXWW4VrAAAAwIggWOtHQ23XjY6OjqxYsaLX7xszZkxaWloq/txNN900N998c/bdd9+8613vyq233pqtt9664vsBAAAADAWCtX60rrXTVu260Z/mzZuXAw44INtuu21efPHFXHHFFbntttty0003rfd9bW1tWbZsWZJXpoI+/PDDOfXUUzeqnkmTJmXRokXZb7/98q53vSu33XabcA0AAAAY1gRrI9Szzz6bI488Ms8880zq6+uz66675qabbsr73ve+9b7voYce6pqqOXHixGy33XZZuHBhjjzyyI2uqb6+Pj/96U+z//77553vfGduu+22vOY1r9no+wIAAAAMhkK5XB71K9Y1NTWlvr4+jY2Na+x++fLLL+eJJ57I61//+owfP77izyi1lro2M2ie19zvI9aGq7769QYAAACoxPpyolczYm2A2HUDAAAAYGSpGuwCAAAAAGA4EqwBAAAAQAUEawAAAABQAcFaD9njYWD4dQYAAACGC8HaBowZMyZJ0traOsiVjA4vvfRSkmTs2LGDXAkAAADA+tkVdAOqq6szceLEPPfccxk7dmyqqmSR/aFcLuell17Ks88+m0mTJnUFmgAAAABDlWBtAwqFQrbaaqs88cQTefLJJwe7nBFv0qRJmTJlymCXAQAAQA+VWkupnV+bJGme15xiTXGQK4KBI1jrgZqamuywww6mg/azsWPHGqkGAAAADBuCtR6qqqrK+PHjB7sMAAAAAIYIwRoAAADQK6XW0ivHK9d+nMS0UEY8wRoAAADQK6vWVHu1hnMbup2XTy8PRDkwaGxxCQAAAAAVMGINAAAA6JXmec1dx6WVpa6RastPXp7iWNM/GT0EawAAAECvrGvttOLYonXVGFVMBQUAAACACgjWAAAAAKACpoICAAAAFSvWFO3+yahlxBoAAAAAVECwBgAAAFSs1FpK4cxCCmcWUmotDXY5MKAEawAAAABQAcEaAAAAAFTA5gUAAABAr6w+5bO0cu3HSefGBjCSCdYAAACAXqmdX7vW9oZzG7qd2y2Ukc5UUAAAAACogBFrAAAAQK80z2vuOi6tLHWNVFt+8vIUx5r+yeghWAMAAAB6ZV1rpxXHFq2rxqhiKigAAAAAVECwBgAAAAAVMBUUAAAAqFixpmj3T0YtI9YAAAAAoAKCNQAAAACogGANAAAAACogWAMAAACACgjWAAAAAKACgjUAAAAAeq3UWkrhzEIKZxZSai0NdjmDQrAGAAAAABUQrAEAAABABaoHuwAAAAAAhofVp3yWVq79OEmKNcUBq2kwCdYAAAAA6JHa+bVrbW84t6Hbefn08kCUM+hMBQUAAACAChixBgAAAECPNM9r7jourSx1jVRbfvLyFMeOjumfqxOsAQAAAKNCqbXUNZWxeV7zqFkHrC+t69esOLY4Kn89TQUFAAAAgAoMmWDtnHPOSaFQyEknndTV9vLLL2f27NnZfPPNU1tbm0MPPTTLly/v9r6lS5fmwAMPzMSJEzN58uSccsopaWtrG+DqAQAAABhthsRU0HvvvTff+ta3suuuu3ZrnzNnTm644YZceeWVqa+vzwknnJBZs2blzjvvTJK0t7fnwAMPzJQpU3LXXXflmWeeyZFHHpmxY8fmy1/+8mA8CgAAAFCh/piqWWotvXK8cu3HybqnOLJuxZriqNn9c10GPVhrbm7O4Ycfnv/8z//Ml770pa72xsbGXHzxxbniiivynve8J0lyySWX5I1vfGPuueeevP3tb89Pf/rTPPzww7n55pvT0NCQ3XbbLV/84hdz6qmn5owzzkhNTc1aP3PFihVZsWJF13lTU1P/PiQAAAAwKFYFda+2atH9VUZ7QERlBn0q6OzZs3PggQdmn3326dZ+3333ZeXKld3ad9ppp2y77ba5++67kyR33313dtlllzQ0vPIPw3777ZempqY89NBD6/zM+fPnp76+vus1derUPn4qAAAAAEa6QR2x9v3vfz/3339/7r333jWuLVu2LDU1NZk0aVK39oaGhixbtqyrz+qh2qrrq66ty7x58zJ37tyu86amJuEaAAAADIL+nqrZPK+52z1XjVRbfvLyFMea/snGGbRg7c9//nNOPPHELFq0KOPHjx/Qzx43blzGjRs3oJ8JAAAArKm/p2quK5Arji1aV42NNmhTQe+77748++yzectb3pLq6upUV1dn8eLF+frXv57q6uo0NDSktbU1L7zwQrf3LV++PFOmTEmSTJkyZY1dQledr+oDAAAAAP1h0Easvfe9782DDz7Yre2YY47JTjvtlFNPPTVTp07N2LFjc8stt+TQQw9Nkjz66KNZunRppk+fniSZPn16zj777Dz77LOZPHlykmTRokWpq6vLtGnTBvaBAAAAgF4zVZPhbNCCtU022SRvetOburUVi8VsvvnmXe0f+9jHMnfu3Gy22Wapq6vLpz71qUyfPj1vf/vbkyT77rtvpk2bliOOOCJf/epXs2zZspx22mmZPXu2qZ4AAAAwDAzkVM1iTdHun/SpQd28YEPOP//8VFVV5dBDD82KFSuy3377ZcGCBV3Xx4wZk+uvvz7HHXdcpk+fnmKxmKOOOipnnXXWIFYNAAAAwGhQKJfLoz6qbWpqSn19fRobG1NXVzfY5QAAAMCIV2otdW1c0DyvOcWa4lrbYKD1Jica0iPWAAAAgNHDVE2Gm0HbFRQAAAAAhjMj1gAAAIABUWotvXK8cu3Hybo3NIChRrAGAAAADIhV66e9WsO5Dd3OTQdl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+v793/99kuSxxx7LdtttlylTpuQXv/hFtz7Lly9PknWuy5Yk48aNy7hx4/rqEQAAAAAqsq6104pji9ZVGwaqBruAV+vo6Oi2/tnqHnjggSTJVlttlSSZPn16HnzwwTz77LNdfRYtWpS6urqu6aQAAAAA0B8GdcTavHnzcsABB2TbbbfNiy++mCuuuCK33XZbbrrppjz++OO54oor8v73vz+bb755fvOb32TOnDnZe++9s+uuuyZJ9t1330ybNi1HHHFEvvrVr2bZsmU57bTTMnv2bCPSAAAAAOhXgxqsPfvssznyyCPzzDPPpL6+PrvuumtuuummvO9978uf//zn3HzzzbngggtSKpUyderUHHrooTnttNO63j9mzJhcf/31Oe644zJ9+vQUi8UcddRROeusswbxqQAAAAB6r1hTtPvnMFMol8uj/nesqakp9fX1aWxsTF1d3WCXAwAAAMAg6U1ONOTWWAMAAACA4UCwBgAAAAAVEKwBAAAAQAUEawAAAABQAcEaAAAAAFRAsAYAAAAAFRCsAQAAAEAFBGsAAAAAUAHBGgAAAABUQLAGAAAAABUQrAEAAABABQRrAAAAMAqVWkspnFlI4cxCSq2lwS6H+D0ZjgRrAAAAAFABwRoAAAAAVKB6sAsAAAAABsbq0wtLK9d+nCTFmuKA1TTa+T0Z3grlcrk82EUMtqamptTX16exsTF1dXWDXQ4AAAD0i8KZhR71K58+6qOCAeP3ZOjpTU5kKigAAAAAVMBUUAAAABglmuc1dx2XVpbScG5DkmT5yctTHGuq4WDwezK8CdYAAABglFjXOl3FsUVreA0SvyfDm6mgAAAAAFABwRoAAAAAVMBUUAAAABiFijVFO00OMX5Phh8j1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAHql1FpK4cxCCmcWUmotDXY5MGgEawAAAABQAcEaAAAAAFSgerALAAAAAIa+1ad8llau/ThJijXFAasJBptgDQAAANig2vm1a21vOLeh23n59PJAlANDgqmgAAAAAFABI9YAAACADWqe19x1XFpZ6hqptvzk5SmONf2T0UmwBgAAAGzQutZOK44tWleNUctUUAAAAACogGANAAAAACpgKigAAADQK8Wa4rDe/bPUWura5bR5XrOprFTMiDUAAAAAqIBgDQAAAAAqYCooAAAAMOKVWkuvHK9c+3Gy7t1PYW0EawAAAMCIt2pNtVdrOLeh2/lwXjuOgWcqKAAAAABUwIg1AAAAYMRrntfcdVxaWeoaqbb85OUpjjX9k8oI1gAAAIARb11rpxXHFq2rRsVMBQUAAACACgjWAAAAAKACpoICAAAAo0qxpmj3T/qEEWsAAAAAUAHBGgAAAABUQLAGAAAAABUQrAEAAABABQRrAAAAAFABwRoAAAAAVECwBgAAAAAVEKwBAAAAQAUEawAAAABQAcEaAAAAAFRAsAYAAAAAFRCsAQAAAEAFBGsAAAAwCpVaSymcWUjhzEJKraXBLgeGJcEaAAAAAFRAsAYAAAAAFage7AIAAACAgbH6lM/SyrUfJ0mxpjhgNcFwJlgDAACAUaJ2fu1a2xvObeh2Xj69PBDlwLBnKigAAAAAVMCINQAAABglmuc1dx2XVpa6RqotP3l5imNN/4TeEqwBAADAKLGutdOKY4vWVYMKmAoKAAAAABUQrAEAAABABUwFBQAAgFGoWFO0+ydsJCPWAAAAAKACgjUAAAAAqIBgDQAAAAAqIFgDAAAAgAoI1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAIAKVPf2DU888UTuuOOOPPnkk3nppZey5ZZbZvfdd8/06dMzfvz4/qgRAAAAAIacHgdrl19+eS688ML88pe/TENDQ7beeutMmDAhzz//fB5//PGMHz8+hx9+eE499dS89rWv7c+aAQAAAGDQ9ShY23333VNTU5Ojjz46P/zhDzN16tRu11esWJG777473//+97PHHntkwYIFOeyww/qlYAAAAAAYCgrlcrm8oU433XRT9ttvvx7d8G9/+1v+9Kc/5a1vfetGFzdQmpqaUl9fn8bGxtTV1Q12OQAAAAAMkt7kRD0asdbTUC1JNt9882y++eY97g8AAAAAw1GvdwW9//778+CDD3ad//jHP87BBx+cz33uc2ltbe3T4gAAAABgqOp1sPbJT34yv//975Mkf/zjH/PhD384EydOzJVXXpl//dd/7fMCAQAAAGAo6nWw9vvf/z677bZbkuTKK6/M3nvvnSuuuCKXXnppfvjDH/Z1fQAAAAAwJPU6WCuXy+no6EiS3HzzzXn/+9+fJJk6dWr++te/9m11AAAAADBE9TpY22OPPfKlL30p3/ve97J48eIceOCBSZInnngiDQ0NfV4gAAAAAAxFvQ7WLrjggtx///054YQT8v/9f/9ftt9++yTJVVddlXe84x19XiAAAAAADEWFcrlc7osbvfzyyxkzZkzGjh3bF7cbUE1NTamvr09jY2Pq6uoGuxwAAAAABklvcqJej1hLkhdeeCHf/va3M2/evDz//PNJkocffjjPPvtsJbcDAAAAgGGnurdv+M1vfpP3vve9mTRpUv70pz/l4x//eDbbbLNcffXVWbp0ab773e/2R50AAAAAMKT0esTa3Llzc8wxx+QPf/hDxo8f39X+/ve/P7fffnufFgcAAAAAQ1Wvg7V77703n/zkJ9dof81rXpNly5b1SVEAAAAAMNT1OlgbN25cmpqa1mj//e9/ny233LJPigIAAACAoa7XwdpBBx2Us846KytXrkySFAqFLF26NKeeemoOPfTQPi8QAAAAAIaiXgdr//Zv/5bm5uZMnjw5LS0teec735ntt98+m2yySc4+++z+qBEAAAAAhpxe7wpaX1+fRYsWZcmSJfnNb36T5ubmvOUtb8k+++zTH/UBAAAAwJDU62BtlT333DN77LFHxo0bl0Kh0Jc1AQAAAMCQ1+upoB0dHfniF7+Y17zmNamtrc0TTzyRJPn85z+fiy++uM8LBAAAAIChqNfB2pe+9KVceuml+epXv5qampqu9je96U359re/3afFAQAAAMBQ1etg7bvf/W7+4z/+I4cffnjGjBnT1f7mN785v/vd7/q0OAAAAAAYqnodrD311FPZfvvt12jv6OjIypUr+6QoAAAAABjqeh2sTZs2LXfcccca7VdddVV23333PikKAAAAAIa6Xu8K+oUvfCFHHXVUnnrqqXR0dOTqq6/Oo48+mu9+97u5/vrr+6NGAAAAABhyej1ibebMmbnuuuty8803p1gs5gtf+EIeeeSRXHfddXnf+97XHzUCAAAAwJBTKJfL5cEuYrA1NTWlvr4+jY2NqaurG+xyAAAAABgkvcmJej1ibZVf/vKX+d73vpfvfe97ue+++yq6x8KFC7Prrrumrq4udXV1mT59en7yk590XX/55Zcze/bsbL755qmtrc2hhx6a5cuXd7vH0qVLc+CBB2bixImZPHlyTjnllLS1tVX6WAAAAADQI71eY+0vf/lL/umf/il33nlnJk2alCR54YUX8o53vCPf//73s8022/T4Xttss03OOeec7LDDDimXy/nOd76TmTNn5le/+lV23nnnzJkzJzfccEOuvPLK1NfX54QTTsisWbNy5513Jkna29tz4IEHZsqUKbnrrrvyzDPP5Mgjj8zYsWPz5S9/ubePBgAAAAA91uupoPvvv39eeOGFfOc738mOO+6YJHn00UdzzDHHpK6uLjfeeONGFbTZZpvla1/7Wj70oQ9lyy23zBVXXJEPfehDSZLf/e53eeMb35i77747b3/72/OTn/wkH/jAB/L000+noaEhSXLRRRfl1FNPzXPPPZeampoefaapoAAAAAAk/TwVdPHixVm4cGFXqJYkO+64Y77xjW/k9ttv7321/6u9vT3f//73UyqVMn369Nx3331ZuXJl9tlnn64+O+20U7bddtvcfffdSZK77747u+yyS1eoliT77bdfmpqa8tBDD63zs1asWJGmpqZuLwAAAADojV4Ha1OnTs3KlSvXaG9vb8/WW2/d6wIefPDB1NbWZty4cTn22GNzzTXXZNq0aVm2bFlqamq6ppuu0tDQkGXLliVJli1b1i1UW3V91bV1mT9/furr67teU6dO7XXdAAAAAIxuvQ7Wvva1r+VTn/pUfvnLX3a1/fKXv8yJJ56Yc889t9cF7LjjjnnggQfy85//PMcdd1yOOuqoPPzww72+T2/MmzcvjY2NXa8///nP/fp5AAAAAIw8vd684Oijj85LL72Uv//7v091defb29raUl1dnX/+53/OP//zP3f1ff755zd4v5qammy//fZJkre+9a259957c+GFF+Yf//Ef09ramhdeeKHbqLXly5dnypQpSZIpU6bkF7/4Rbf7rdo1dFWftRk3blzGjRvXswcGAAAAgLXodbB2wQUX9EMZr+jo6MiKFSvy1re+NWPHjs0tt9ySQw89NEnnJglLly7N9OnTkyTTp0/P2WefnWeffTaTJ09OkixatCh1dXWZNm1av9YJAAAAwOjW62DtqKOO6rMPnzdvXg444IBsu+22efHFF3PFFVfktttuy0033ZT6+vp87GMfy9y5c7PZZpulrq4un/rUpzJ9+vS8/e1vT5Lsu+++mTZtWo444oh89atfzbJly3Laaadl9uzZRqQBAAAA0K96HawtXbp0vde33XbbHt/r2WefzZFHHplnnnkm9fX12XXXXXPTTTflfe97X5Lk/PPPT1VVVQ499NCsWLEi++23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NjamziIrADCi3Hlncv75nbt/dnR0rql2yCGdI9X6MlR79VTQda2jZyooAMDQ1pucqNdrrE2ZMiXPP/98Xvva12bbbbfNPffckze/+c154okn0suMDgCg382Y0flqaenc/bOurn92ALWOHgDA6NPrqaDvec97cu211yZJjjnmmMyZMyfve9/78o//+I855JBD+rxAAIC+MGFC0tDQP6EaAACjU69HrP3Hf/xHOv537/rZs2dn8803z1133ZWDDjooxx57bJ8XCAAAAABDUa/XWFuXF154If/zP/+Tj3zkI31xuwFljTUAAAAAkt7lRL2eCrouTz75ZI444oi+uh0AAAAADGl9FqwBAAAAwGgiWAMAAACACgjWAAAAAKACPd4V9Otf//p6rz/11FMbXQwAAAAADBc9DtbOP//8DfbZdtttN6oYAAAAABguehysPfHEE/1ZBwAAAAAMK9ZYAwAAAIAK9ChY+/73v9/jG/75z3/OnXfeWXFBAAAAADAc9ChYW7hwYd74xjfmq1/9ah555JE1rjc2NuZ//ud/8pGPfCRvectb8re//a3PCwUAAACAoaRHa6wtXrw41157bb7xjW9k3rx5KRaLaWhoyPjx4/P//t//y7Jly7LFFlvk6KOPzm9/+9s0NDT0d90AMGyVWkupnV+bJGme15xiTXGQKwIAACrR480LDjrooBx00EH561//miVLluTJJ59MS0tLtthii+y+++7ZfffdU1VlyTYAAAAARoceB2urbLHFFjn44IP7oRQAAAAAGD56HawBAL1Xai29crxy7cdJTAsdIUz3BQAYHQZ17ub8+fPztre9LZtsskkmT56cgw8+OI8++mi3Pu9617tSKBS6vY499thufZYuXZoDDzwwEydOzOTJk3PKKaekra1tIB8FANardn5t16vh3FfWIm04t6HbNQAAYPgY1BFrixcvzuzZs/O2t70tbW1t+dznPpd99903Dz/8cIrFV/5m9+Mf/3jOOuusrvOJEyd2Hbe3t+fAAw/MlClTctddd+WZZ57JkUcembFjx+bLX/7ygD4PAAAAAKPHoAZrN954Y7fzSy+9NJMnT859992Xvffeu6t94sSJmTJlylrv8dOf/jQPP/xwbr755jQ0NGS33XbLF7/4xZx66qk544wzUlNT06/PAAA90Tyvueu4tLLUNWpt+cnLUxxrmuBIYLovAMDoU3Gw1tramieeeCLbbbddqqv7Jp9rbGxMkmy22Wbd2i+//PJcdtllmTJlSj74wQ/m85//fNeotbvvvju77LJLGhpemVaz33775bjjjstDDz2U3XfffY3PWbFiRVasWNF13tTU1Cf1A8C6rCtMKY4tClpGiHVN5V196m+SlE8vD0Q5AAAMgF6vsfbSSy/lYx/7WCZOnJidd945S5cuTZJ86lOfyjnnnFNxIR0dHTnppJMyY8aMvOlNb+pq/8hHPpLLLrsst956a+bNm5fvfe97+ehHP9p1fdmyZd1CtSRd58uWLVvrZ82fPz/19fVdr6lTp1ZcNwAAAACjU6+Hms2bNy+//vWvc9ttt2X//ffvat9nn31yxhln5LOf/WxFhcyePTu//e1vs2TJkm7tn/jEJ7qOd9lll2y11VZ573vfm8cffzzbbbddRZ81b968zJ07t+u8qalJuAYAbBTTfQEARp9eB2s/+tGP8oMf/CBvf/vbUygUutp33nnnPP744xUVccIJJ+T666/P7bffnm222Wa9ff/+7/8+SfLYY49lu+22y5QpU/KLX/yiW5/ly5cnyTrXZRs3blzGjRtXUa0AsLGKNUXTAUcg030BAEafXk8Ffe655zJ58uQ12kulUregrSfK5XJOOOGEXHPNNfnZz36W17/+9Rt8zwMPPJAk2WqrrZIk06dPz4MPPphnn322q8+iRYtSV1eXadOm9aoeAAAAAOipXgdre+yxR2644Yau81Vh2re//e1Mnz69V/eaPXt2LrvsslxxxRXZZJNNsmzZsixbtiwtLS1Jkscffzxf/OIXc9999+VPf/pTrr322hx55JHZe++9s+uuuyZJ9t1330ybNi1HHHFEfv3rX+emm27KaaedltmzZxuVBgAAAEC/KZTL5V7NRVmyZEkOOOCAfPSjH82ll16aT37yk3n44Ydz1113ZfHixXnrW9/a8w9fxwi3Sy65JEcffXT+/Oc/56Mf/Wh++9vfplQqZerUqTnkkENy2mmnpa6urqv/k08+meOOOy633XZbisVijjrqqJxzzjk93q20qakp9fX1aWxs7HZfAAAAAEaX3uREvQ7Wks6RZOecc05+/etfp7m5OW95y1ty6qmnZpdddqm46MEkWAMAAAAgGYBgbaQRrAEwkEqtpdTOr03SuZOkhe0BAGDo6E1O1Os11v7n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r8zixYvz9NNPZ9asWV3X29vbc+CBB6a1tTV33XVXvvOd7+TSSy/NF77whcF4pFFnyZJk9uykXE5enWW2tXW2H3+8kWsAAADAyFMol8vlwS5ileeeey6TJ0/O4sWLs/fee6exsTFbbrllrrjiinzoQx9Kkvzud7/LG9/4xtx99915+9vfnp/85Cf5wAc+kKeffjoNDQ1JkosuuiinnnpqnnvuudTU1Gzwc5uamlJfX5/GxsbU1dX16zOONLNmdY5MW98AwerqZObM5KqrBq4uADbe6tM0SytLaTi389+zy09enuLYYte1Yk1xjff2570AAKA/9SYnqh6gmnqksbExSbLZZpslSe67776sXLky++yzT1efnXbaKdtuu21XsHb33Xdnl1126QrVkmS//fbLcccdl4ceeii77777Gp+zYsWKrFixouu8qampvx5pRGtpSX7841emf65LW1tyzTWd/SdMGJjaANh4tfNr19q+KhRbpXz6hv+Ori/vBQAAQ8WQ2bygo6MjJ510UmbMmJE3velNSZJly5alpqYmkyZN6ta3oaEhy5Yt6+qzeqi26vqqa2szf/781NfXd72mTp3ax08zOjQ1bThUW6Wjo7M/AAAAwEgxZEaszZ49O7/97W+zZMmSfv+sefPmZe7cuV3nTU1NwrUK1NUlVVU9C9eqqjr7AzB8NM9r7jpe3/TNgb4XAAAMFUMiWDvhhBNy/fXX5/bbb88222zT1T5lypS0trbmhRde6DZqbfny5ZkyZUpXn1/84hfd7rdq19BVfV5t3LhxGTduXB8/xegzYULn2mk9XWPNNFCA4WVd650VxxZ7vRZaX94LAACGikGdCloul3PCCSfkmmuuyc9+9rO8/vWv73b9rW99a8aOHZtbbrmlq+3RRx/N0qVLM3369CTJ9OnT8+CDD+bZZ5/t6rNo0aLU1dVl2rRpA/Mgo9jcuUl7+/r7tLcnc+YMTD0AAAAAA2VQg7XZs2fnsssuyxVXXJFNNtkky5Yty7Jly9LS0pIkqa+vz8c+9rHMnTs3t956a+67774cc8wxmT59et7+9rcnSfbdd99MmzYtRxxxRH7961/npptuymmnnZbZs2cblTYA9twzWbAgKRQ6R6atrrq6s33BgmTGjMGpDwAAAKC/FMrl8qBtv1UoFNbafskll+Too49Okrz88sv5zGc+k//6r//K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F98t+ovvFv3Fd4v+4rtFf+mv71a5XM6LL76YrbfeOlVV619FzYi1JFVVVdlmm20Gu4wRpa6uzh+Y9AvfLfqL7xb9xXeL/uK7RX/x3aK/+G7RX/rju7WhkWqr2LwAAAAAACogWAMAAACACgjW6FPjxo3L6aefnnHjxg12KYwwvlv0F98t+ovvFv3Fd4v+4rtFf/Hdor8Mhe+WzQsAAAAAoAJGrAEAAABABQRrAAAAAFABwRoAAAAAVECwBgAAAAAVEKyxhttvvz0f/OAHs/XWW6dQKORHP/pR17WVK1fm1FNPzS677JJisZitt946Rx55ZJ5++ulu93j++edz+OGHp66uLpMmTcrHPvaxNDc3d+vzm9/8JnvttVfGjx+fqVOn5qtf/epAPB6DaH3frVc79thjUygUcsEFF3Rr991ibXry3XrkkUdy0EEHpb6+PsViMW9729uydOnSrusvv/xyZs+enc033zy1tbU59NBDs3z58m73WLp0aQ488MBMnDgxkydPzimnnJK2trb+fjwG0Ya+W83NzTnhhBOyzTbbZMKECZk2bVouuuiibn18t1ib+fPn521ve1s22WSTTJ48OQcffHAeffTRbn366rtz22235S1veUvGjRuX7bffPpdeeml/Px6DaEPfreeffz6f+tSnsuOOO2bChAnZdttt8+lPfzqNjY3d7uO7xav15M+tVcrlcg444IC1/rvTd4tX6+l36+6778573vOeFIvF1NXVZe+9905LS0vX9cH6f0XBGmsolUp585vfnG9+85trXHvppZdy//335/Of/3zuv//+XH311Xn00Udz0EEHdet3+OGH56GHHsqiRYty/fXX5/bbb88nPvGJrutNTU3Zd99989rXvjb33Xdfvva1r+WMM87If/zHf/T78zF41vfdWt0111yTe+65J1tvvfUa13y3WJsNfbcef/zx7Lnnntlpp51y22235Te/+U0+//nPZ/z48V195syZk+uuuy5XXnllFi9enKeffjqzZs3qut7e3p4DDzwwra2tueuuu/Kd73wnl156ab7whS/0+/MxeDb03Zo7d25uvPHGXHbZZXnkkUdy0kkn5YQTTsi1117b1cd3i7VZvHhxZs+enXvuuSeLFi3KypUrs++++6ZUKnX16YvvzhNPPJEDDzww7373u/PAAw/kpJNOyr/8y7/kpptuGtDn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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_scatter_chart(df,location):\n", " bhk2 = df[(df.location==location) & (df.bhk==2)]\n", " bhk3 = df[(df.location==location) & (df.bhk==3)]\n", " matplotlib.rcParams['figure.figsize'] = (15,10)\n", " plt.scatter(bhk2.total_sqft,bhk2.price,color='blue',label='2 BHK', s=50)\n", " plt.scatter(bhk3.total_sqft,bhk3.price,marker='+', color='green',label='3 BHK', s=50)\n", " plt.xlabel(\"Total Square Feet Area\")\n", " plt.ylabel(\"Price (Lakh Indian Rupees)\")\n", " plt.title(location)\n", " plt.legend()\n", " \n", "plot_scatter_chart(df7,\"Rajaji Nagar\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABNYAAANXCAYAAAD5PtJMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9vElEQVR4nOzde3icZZ0//vekaUuZkpRTWypFWUEQBUVgtRaQVeQgrkBRV5evAusJKfqFimJdF6ziFhEBcW1Zd13R34oHkIPgIosIpQV0BeWrICJotQo0RVkSMhSaw/z+GJs29JSZJplJ8npd11x5nvu553k+k4YA796HQrlcLgcAAAAAqEpTvQsAAAAAgJFIsAYAAAAANRCsAQAAAEANBGsAAAAAUAPBGgAAAADUQLAGAAAAADUQrAEAAABADQRrAAAAAFADwRoAAAAA1ECwBgAwBh122GF56UtfusV+t912WwqFQq666qpBe/YnPvGJFAqFQbsfAEC9CNYAABrY5ZdfnkKhkLvvvnuj1wcakAEAMPgEawAAAABQA8EaAAAAANRAsAYAMMr853/+Zw444IBMmjQpO+ywQ972trflD3/4w0b73nPPPXn1q1+dSZMmZffdd89ll1220X49PT352Mc+lunTp6dYLOZNb3rTBvdcunRp3vKWt2S33XbLxIkTM3PmzJx55plZvXr1oH9GAIBG0FzvAgAA2LL29vb86U9/2qC9q6ur3/mnP/3p/NM//VPe+ta35t3vfncef/zxfOELX8ihhx6an/3sZ5kyZUpf3//93//NG97whrz1rW/N29/+9nz729/O+9///kyYMCH/8A//sMF9C4VCzj777KxatSqXXHJJDj/88Nx7772ZNGlSkuTKK6/M008/nfe///3Zcccd8z//8z/5whe+kD/+8Y+58sorB/+bAgBQZ4I1AIAR4PDDD9/ktZe85CVJkt///vc599xzc9555+VjH/tY3/U5c+Zk//33z6JFi/q1P/roo/nc5z6XefPmJUne97735ZWvfGXmz5+fd7zjHRk/fnxf3yeeeCIPPPBAtttuuyTJK17xirz1rW/Nv/3bv+WDH/xgkuQzn/lMX8iWJO9973uzxx575GMf+1hWrFiR3XbbbRC+EwAAjcNUUACAEeCLX/xibr755g1e++23X1+fq6++Or29vXnrW9+aP/3pT32v6dOnZ88998ytt97a757Nzc153/ve13c+YcKEvO9978uqVatyzz339Ov7zne+sy9US5I3v/nN2WWXXfJf//VffW3rh2qlUil/+tOf8upXvzrlcjk/+9nPBu17AQDQKIxYAwAYAf76r/86Bx544Abt22+/fd8U0Yceeijlcjl77rnnRu+x/gi0JJkxY0aKxWK/the96EVJkt/97nd51ate1df+3HsWCoXsscce+d3vftfXtmLFipxzzjn57ne/m//93//t17+9vX0LnxAAYOQRrAEAjBK9vb0pFAq58cYbM27cuA2uT548ecie3dPTk9e//vV54okncvbZZ2fvvfdOsVjMI488kpNPPjm9vb1D9mwAgHoRrAEAjBIvfOELUy6Xs/vuu/eNPNucRx99NKVSqd+otV//+tdJkhe84AX9+j700EP9zsvlch5++OG+qai/+MUv8utf/zpf/epX8853vrOv380331zrxwEAaHjWWAMAGCXmzJmTcePGZcGCBSmXy/2ulcvl/PnPf+7X1t3dnX/913/tO1+zZk3+9V//NTvvvHMOOOCAfn2/9rWv5amnnuo7v+qqq/LYY4/l6KOPTpK+EXLrP7dcLufzn//84Hw4AIAGZMQaAMAo8cIXvjDnnXde5s+fn9/97nc57rjjst1222X58uW55ppr8t73vjdnnXVWX/8ZM2bkM5/5TH73u9/lRS96Ub71rW/l3nvvzZe+9KUN1mPbYYcdcvDBB+eUU05JW1tbLrnkkuyxxx55z3vekyTZe++988IXvjBnnXVWHnnkkbS0tOQ73/nOBmutAQCMJoI1AIBR5KMf/Whe9KIX5eKLL86CBQuSJDNnzswRRxyRN73pTf36br/99vnqV7+aD3zgA/m3f/u3TJs2Lf/yL//SF5at72Mf+1h+/vOfZ+HChXnqqafyute9LosWLcq2226bpLIxwvXXX58PfvCDWbhwYbbZZpscf/zxOf300/Oyl71s6D84AEAdFMrPnScAAAAAAGyRNdYAAAAAoAaCNQAAAACogWANAAAAAGogWAMAAACAGgjWAAAAAKAGgjUAAAAAqEFzvQtoBL29vXn00Uez3XbbpVAo1LscAAAAAOqkXC7nqaeeyowZM9LUtPkxaYK1JI8++mhmzpxZ7zIAAAAAaBB/+MMfsuuuu262j2AtyXbbbZek8g1raWmpczUAAAAA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TJ8+PdOnT88+++yTT37yk+ns7Myvf/3rrarniiuuyJw5c3LBBRcI1QAAAGCEKk4ornutF6QVxxf7XRsrjFgbA3p6enLllVemVCpl1qxZA37fs88+m6985SuZMmVK9tprr5qf/8UvfjHz5s3Lf/zHf+TEE0+s+T4AAAAAjUSwNoTqvVPGL37xi8yaNSvPPPNMJk+enGuuuSb77LPPFt8zeXJlyurTTz+d7bbbLt/61rfS0tLSr9/ZZ5+dj3/84/3a1qxZs8H9H3jggZx++un58pe/LFQDAAAARhXB2hCq904Ze+21V+699960t7fnqquuykknnZQlS5ZsNlzba6+98t3vfjdJ8tRTT+Vb3/pW3vKWt+TWW2/NgQce2Nfvwx/+cE4++eR+77300ktz++2392vbddddM2XKlHz2s5/N0UcfnV122WXwPiAAAABQN8UJxTGz++emCNZGsQkTJmSPPfZIkhxwwAH5yU9+ks9//vP513/91wG9J0n233//XHvttbnkkkvyn//5n33tO+20U79+SbLDDjtscL/tttsuP/jBD/L6178+f/M3f5Nbb71VuAYAAACMCoK1IdRoO2X09vbm2Wefrfp948aNy+rVq2t+7vbbb58f/OAHOeKII3LYYYfl1ltvzYwZM2q+HwAAAEAjEKwNoU2tnbZ2p4yhNH/+/Bx99NHZbbfd8tRTT+WKK67Ibbfdlptuummz7+vu7s7KlSuTrJsK+stf/jJnn332VtUzZcqU3HzzzTnyyCNz2GGH5bbbbhOuAQAAACOaYG2UWrVqVd75znfmscceS2tra/bbb7/cdNNNef3rX7/Z991///19UzW33XbbvPCFL8zixYvzzne+c6tram1tzX//93/nqKOOymte85rcdttted7znrfV9wUAAACoh0K5XB7bq8wl6ejoSGtra9rb2zfY/fKZZ57J8uXLs/vuu2ebbbap+RmlNaW+zQw653cO+Yi1kWqwvt8AAAAAtdhcTvRcRqwNEztlAAAAAIwuTfUuAAAAAABGIsEaAAAAANRAsAYAAAAANRCsDZA9HoaH7zMAAAAwUgjWtmDcuHFJkjVr1tS5krHh6aefTpKMHz++zpUAAAAAbJ5dQbegubk52267bR5//PGMHz8+TU2yyKFQLpfz9NNPZ9WqVZkyZUpfoAkAAADQqARrW1AoFLLLLrtk+fLl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LVvWr/29731v3/G+++6bXXbZJa973evym9/8Ji984QtretbEiRMzceLEraoXAACozqbWTiuOL1pXDYARqSGmgp5++um54YYbcuutt2bXXXfdbN9XvvKVSZKHH344STJ9+vS0tbX167P2fPr06UNQLQAAAADUOVgrl8s5/fTTc8011+SHP/xhdt999y2+5957702S7LLLLkmSWbNm5Re/+EVWrVrV1+fmm29OS0tL9tlnnyGpGwAAAADquivoaaedliuuuCLXXXdd9tprr7721tbWTJo0Kb/5zW9yxRVX5A1veEN23HHH/PznP8+ZZ56ZXXfdNUuWLEmS9PT05OUvf3lmzJiRCy64ICtXrsw73vGOvPvd784///M/D6iOanZ7AAAAAGD0qiYnqmuwVihsfLvtr3zlKzn55JPzhz/8If/n//yf3HfffSmVSpk5c2aOP/74fPzjH+/3wX7/+9/n/e9/f2677bYUi8WcdNJJOf/889PcPLAl5ARrAAAAACQjKFhrFII1AAAAAJLqcqKG2LwAAAAAAEYawRoAAAAA1ECwBgAAAAA1EKwBAAAAQA0EawAAAABQA8EaAAAAANRAsAYAAAAANRCsAQAAAEANBGsAAAAAUAPBGgAAAADUQLAGAAAAADUQrAEAAABADQRrAAAAAFADwRoAAAAAVSutKaWwoJDCgkJKa0r1LqcuBGsAAAAAUAPBGgAAAADUoLneBQAAAAAwMqw/5bPUtfHjJClOKA5bTfUkWAMAAABgQCYvnLzR9mkXTut3Xj63PBzl1J2poAAAAABQAyPWAAAAABiQzvmdfcelrlLfSLW2s9pSHD82pn+uT7AGAAAAwIBsau204vjimFlXbX2mggIAAABADQRrAAAAAFADU0EBAAAAqFpxQnHM7P65KUasAQAAAEANBGsAAAAAUAPBGgAAAADUQLAGAAAAADUQrAEAAABADQRrAAAAAFADwRoAAAAA1ECwBgAAAAA1EKwBAAAAQA0EawAAAABQA8EaAAAAANRAsAYAAAAANRCsAQAAAEANBGsAAAAAUAPBGgAAAADUQLAGAAAAADUQrAEAAABADQRrAAAAAFADwRoAAAAA1ECwBgAAAAA1EKwBAAAAQA0EawAAAABQA8EaAAAAANRAsAYAAAAANRCsAQAAAEANBGsAAAAAUAPBGgAAAADUQLAGAAAAADUQrAEAAABADQRrAAAAAFADwRoAAAAA1ECwBgAAAAA1EKwBAAAAQA0EawAAAABQA8EaAAAAANRAsAYAAAAANRCsAQAAAEANBGsAAAAAUAPBGgAAAADUQLAGAAAAADUQrAEAAABADQRrAAAAAFADwRoAAKNWaU0phQWFFBYUUlpTqnc5AMAoI1gDAAAAgBoI1gAAAACgBs31LgAAAAbT+lM+S10bP06S4oTisNUEAIxOgjUAAEaVyQsnb7R92oXT+p2Xzy0PRzkAwChmKigAAAAA1MCINQAARpXO+Z19x6WuUt9Itbaz2lIcb/onADB4BGsAAIwqm1o7rTi+aF01AGBQmQoKAAAAADUQrAEAAABADaqeCrp8+fIsXbo0v//97/P0009n5513zv77759Zs2Zlm222GYoaAQCgJsUJRbt/AgBDZsDB2te//vV8/vOfz913351p06ZlxowZmTRpUp544on85je/yTbbbJMTTzwxZ599dp7//OcPZc0AAAAAUHcDCtb233//TJgwISeffHK+853vZObMmf2uP/vss7nrrrvyzW9+MwceeGAWLVqUt7zlLUNSMAAAAAA0gkK5XN7i2PibbropRx555IBu+Oc//zm/+93vcsABB2x1ccOlo6Mjra2taW9vT0tLS73LAQAAAKBOqsmJBjRibaChWpLsuOOO2XHHHQfcHwAAAABGoqp3Bf3pT3+aX/ziF33n1113XY477rh87GMfy5o1awa1OAAAAABoVFUHa+973/vy61//Okny29/+Nm9729uy7bbb5sorr8xHPvKRQS8QAAAAABpR1cHar3/967z85S9Pklx55ZU59NBDc8UVV+Tyyy/Pd77zncGuDwAAAAAaUtXBWrlcTm9vb5LkBz/4Qd7whjckSWbOnJk//elPg1sdAAAAADSoqoO1Aw88MOedd17+v//v/8uSJUtyzDHHJEmWL1+eadOmDXqBAAAAANCIqg7WLrnkkvz0pz/N6aefnn/8x3/MHnvskSS56qqr8upXv3rQCwQAAACARlQol8vlwbjRM888k3HjxmX8+PGDcbth1dHRkdbW1rS3t6elpaXe5QAAAABQJ9XkRFWPWEuSJ598Mv/+7/+e+fPn54knnkiS/PKXv8yqVatquR0AAAAAjDjN1b7h5z//eV73utdlypQp+d3vfpf3vOc92WGHHXL11VdnxYoV+drXvjYUdQIAAABAQ6l6xNq8efNyyimn5KGHHso222zT1/6GN7wht99++6AWBwAAAACNqupg7Sc/+Une9773bdD+vOc9LytXrhyUogAAAACg0VUdrE2cODEdHR0btP/617/OzjvvPChFAQAAAECjqzpYe9Ob3pRPfvKT6erqSpIUCoWsWLEiZ599dk444YRBLxAAAAAAGlHVwdrnPve5dHZ2ZurUqVm9enVe85rXZI899sh2222XT3/600NRIwAAAAA0nKp3BW1tbc3NN9+cZcuW5ec//3k6Ozvzile8IocffvhQ1AcAAAAADanqYG2tgw8+OAceeGAmTpyYQqEwmDUBAAAAQMOreipob29vPvWpT+V5z3teJk+enOXLlydJ/umf/ilf/vKXB71AAAAAAGhEVQdr5513Xi6//PJccMEFmTBhQl/7S1/60vz7v//7oBYHAAAAAI2q6mDta1/7Wr70pS/lxBNPzLhx4/raX/ayl+VXv/rVoBYHAAAAAI2q6mDtkUceyR577LFBe29vb7q6ugalKAAAAABodFUHa/vss0+WLl26QftVV12V/ffff1CKAgAAAIBGV/WuoOecc05OOumkPPLII+nt7c3VV1+dBx98MF/72tdyww03DEWNAAAAANBwqh6xduyxx+b666/PD37wgxSLxZxzzjl54IEHcv311+f1r3/9UNQIAAAAAA2nUC6Xy/Uuot46OjrS2tqa9vb2tLS01LscAAAAAOqkmpyo6qmga91999154IEHklTWXTvggANqvRUAAAAAjDhVB2t//OMf8/a3vz133HFHpkyZkiR58skn8+pXvzrf/OY3s+uuuw52jQAAAADQcKpeY+3d7353urq68sADD+SJJ57IE088kQceeCC9vb1597vfPRQ1AgAAAEDDqXqNtUmTJuXOO+/M/vvv36/9nnvuySGHHJKnn356UAscDtZYAwAAACCpLieqesTazJkz09XVtUF7T09PZsyYUe3tAAAAAGBEqjpY++xnP5sPfOADufvuu/va7r777vzf//t/c+GFFw5qcQAAAADQqKqeCrr99tvn6aefTnd3d5qbK3sfrD0uFov9+j7xxBODV+kQMhUUAAAAgKS6nKjqXUEvueSSWusCAAAAgFGj6mDtpJNOGoo6AAAAAGBEqTpYW7FixWav77bbbjUXAwAAAAAjRdWbF7zgBS/I7rvvvslXNRYuXJiDDjoo2223XaZOnZrjjjsuDz74YL8+zzzzTObOnZsdd9wxkydPzgknnJC2trZ+fVasWJFjjjkm2267baZOnZoPf/jD6e7urvajAQAAAMCAVR2s/exnP8tPf/rTvtePf/zjXHbZZXnRi16UK6+8sqp7LVmyJHPnzs2PfvSj3Hzzzenq6soRRxyRUqnU1+fMM8/M9ddfnyuvvDJLlizJo48+mjlz5vRd7+npyTHHHJM1a9bkzjvvzFe/+tVcfvnlOeecc6r9aAAAwChVWlNKYUEhhQWFlNaUtvyGYboXACNb1buCbsr3vve9fPazn81tt91W8z0ef/zxTJ06NUuWLMmhhx6a9vb27Lzzzrniiivy5je/OUnyq1/9Ki9+8Ytz11135VWvelVuvPHGvPGNb8yjjz6aadOmJUkuu+yynH322Xn88cczYcKELT7XrqAAADC6ldaUMnnh5CRJ5/zOFCcUG+JeADSeanKiqkesbcpee+2Vn/zkJ1t1j/b29iTJDjvskCS555570tXVlcMPP7yvz957753ddtstd911V5Lkrrvuyr777tsXqiXJkUcemY6Ojtx///0bfc6zzz6bjo6Ofi8AAAAAqEbVmxc8N4Qql8t57LHH8olPfCJ77rlnzYX09vbmjDPOyOzZs/PSl740SbJy5cpMmDAhU6ZM6dd32rRpWblyZV+f9UO1tdfXXtuYhQsXZsGCBTXXCgAANL71p2mWujZ+nGRAI84G814AjB5VB2tTpkxJoVDo11YulzNz5sx84xvfqLmQuXPn5r777suyZctqvsdAzZ8/P/Pmzes77+joyMyZM4f8uQAAwPBZO13zuaZd2P8v5svnbnl1nMG8FwCjR9XB2q233trvvKmpKTvvvHP22GOPNDdXfbskyemnn54bbrght99+e3bddde+9unTp2fNmjV58skn+41aa2try/Tp0/v6/M///E+/+63dNXRtn+eaOHFiJk6cWFOtAAAAAJDUEKy95jWv2Wj7Y489lk9/+tP5l3/5lwHfq1wu5wMf+ECuueaa3Hbbbdl99937XT/ggAMyfvz43HLLLTnhhBOSJA8++GBWrFiRWbNmJUlmzZqVT3/601m1alWmTp2aJLn55pvT0tKSffbZp9qPBwAAjBKd8zv7jktdpb7RZW1ntaU4vropm4N5LwBGj6qCtfvvvz+33nprJkyYkLe+9a2ZMmVK/vSnP+XTn/50LrvssvzVX/1VVQ+fO3durrjiilx33XXZbrvt+tZEa21tzaRJk9La2pp3vetdmTdvXnbYYYe0tLTkAx/4QGbNmpVXvepVSZIjjjgi++yzT97xjnfkggsuyMqVK/Pxj388c+fONSoNAADGsE2td1YcX6x6LbTBvBcAo8eAg7Xvfve7efOb35zu7u4kyQUXXJB/+7d/y1vf+tYccMABueaaa3LUUUdV9fDFixcnSQ477LB+7V/5yldy8sknJ0kuvvjiNDU15YQTTsizzz6bI488MosWLerrO27cuNxwww15//vfn1mzZqVYLOakk07KJz/5yapqAQAAAIBqFMrl8oBW1/zrv/7rzJ49O5/61Kfy7//+75k3b15e8pKX5D/+4z9y0EEHDXWdQ6qjoyOtra1pb29PS0tLvcsBAAAGWWlNqW8Dgs75nVs1ymww7wVA46kmJxpwsNba2pp77rkne+yxR3p6ejJx4sR8//vfz+GHHz4oRdeTYA0AgJFAoFO7VZ2rMu1zf1kX7UNtmTp5ap0rAqBRVZMTNQ30pk899VTfzcaNG5dJkyZVvaYaAAAAAIwWVW1ecNNNN6W1tTVJ0tvbm1tuuSX33Xdfvz5vetObBq86AAAAAGhQVQVrJ510Ur/z973vff3OC4VCenp6tr4qAAAgSWX6Z99x18aPk03vWjmWrepc1Xf8+NOPb/Q4iWmhANRswGusjWbWWAMAoFEVFhQG1K987pj/z/oN+N4BUIshWWMNAAAAAFinqqmgAADA8Oqc39l3XOoqZdqFf9nZ8qy2FMeb/rk5bR9q6zt+/OnH89LFL02S3Pf++7LztjvXqywARhHBGgAANLBNrZ1WHF+0rtoWbGrttJ233dm6agAMClNBAQAAAKAGgjUAAAAAqEHNU0HXrFmTVatWpbe3t1/7brvtttVFAQAAGypOKNrBskZTJ0/1vQNg0FUdrD300EP5h3/4h9x555392svlcgqFQnp6egatOAAAAABoVFUHayeffHKam5tzww03ZJdddkmhUBiKugAAAACgoVUdrN1777255557svfeew9FPQAAAAAwIlS9ecE+++yTP/3pT0NRCwAAAACMGFUHa5/5zGfykY98JLfddlv+/Oc/p6Ojo98LAICktKaUwoJCCgsKKa0p1bscAACGQNVTQQ8//PAkyete97p+7TYvAAAAAGAsqTpYu/XWW4eiDgAAAAAYUaoO1l7zmtcMRR0AACPe+lM+S10bP06S4oTisNUEAMDQqTpYW+vpp5/OihUrsmbNmn7t++2331YXBQAwEk1eOHmj7dMunNbvvHxueTjKAQBgiFUdrD3++OM55ZRTcuONN270ujXWAAAAABgLqg7WzjjjjDz55JP58Y9/nMMOOyzXXHNN2tract555+Vzn/vcUNQIADAidM7v7DsudZX6Rqq1ndWW4njTPwEARpuqg7Uf/vCHue6663LggQemqakpz3/+8/P6178+LS0tWbhwYY455pihqBMAoOFtau204viiddUAAEahpmrfUCqVMnXq1CTJ9ttvn8cffzxJsu++++anP/3p4FYHAAAAAA2q6mBtr732yoMPPpgkednLXpZ//dd/zSOPPJLLLrssu+yyy6AXCAAAAACNqOqpoP/3//7fPPbYY0mSc889N0cddVS+/vWvZ8KECbn88ssHuz4AgBGpOKFo908AgFGuUC6Xt+q/+J5++un86le/ym677ZaddtppsOoaVh0dHWltbU17e3taWlrqXQ4AAAAAdVJNTlT1iLXn2nbbbfOKV7xia28DAAAAACPKgIK1efPm5VOf+lSKxWLmzZu32b4XXXTRoBQGAAAAAI1sQMHaz372s3R1dfUdb0qhUBicqgAAAACgwW31GmujgTXWAAAAAEiqy4mahqkmAAAAABhVBjQVdM6cOQO+4dVXX11zMQAAAAAwUgxoxFpra2vfq6WlJbfcckvuvvvuvuv33HNPbrnllrS2tg5ZoQAAAADQSAY0Yu0rX/lK3/HZZ5+dt771rbnssssybty4JElPT09OO+0065MBAAAAMGZUvXnBzjvvnGXLlmWvvfbq1/7ggw/m1a9+df785z8PaoHDweYFAAAAACRDvHlBd3d3fvWrX23Q/qtf/Sq9vb3V3g4AAAAARqQBTQVd3ymnnJJ3vetd+c1vfpO//uu/TpL8+Mc/zvnnn59TTjll0AsEAAAAgEZUdbB24YUXZvr06fnc5z6Xxx57LEmyyy675MMf/nA+9KEPDXqBAADAxpXWlDJ54eQkSef8zhQnFOtcEQCMLVWvsba+jo6OJBnx65JZYw0AgJFIsAYAg6+anKjqEWvrE0IBAAAAMFZVvXlBW1tb3vGO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sx4AAAAAGBGqDtaefvrpvOtd78q2226bl7zkJVmxYkWS5AMf+EDOP//8QS8QAEaj0ppSCgsKKSwopLSmVO9yAACAGlQdrM2fPz//7//9v9x2223ZZptt+toPP/zwfOtb3xrU4gAAAACgUTVX+4Zrr7023/rWt/KqV70qhUKhr/0lL3lJfvOb3wxqcQAAAADQqKoO1h5//PFMnTp1g/ZSqdQvaAMA+lt/ymepa+PHSVKcUBy2mgAAgNpVHawdeOCB+d73vpcPfOADSdIXpv37v/97Zs2aNbjVAcAoMnnh5I22T7twWr/z8rnl4SgHAADYSlUHa//8z/+co48+Or/85S/T3d2dz3/+8/nlL3+ZO++8M0uWLBmKGgEAAACg4VQdrB188MG59957c/7552fffffNf//3f+cVr3hF7rrrruy7775DUSMAjAqd8zv7jktdpb6Ram1ntaU43vRPAAAYaaoO1pLkhS98Yf7t3/5tsGsBgFFtU2unFccXrasGAAAjUFO1b/iv//qv3HTTTRu033TTTbnxxhsHpSgAAAAAaHRVB2sf/ehH09PTs0F7uVzORz/60UEpCgAAAAAaXdVTQR966KHss88+G7TvvffeefjhhwelKAAY7YoTinb/BACAEa7qEWutra357W9/u0H7ww8/nGLR+jAAAAAAjA1VB2vHHntszjjjjPzmN7/pa3v44YfzoQ99KG9605sGtTgAAAAAaFRVB2sXXHBBisVi9t577+y+++7Zfffd8+IXvzg77rhjLrzwwqGoEQBgUJXWlFJYUEhhQSGlNaV6lwMAwAhV01TQO++8M9/73vdy2mmn5UMf+lBuueWW/PCHP8yUKVOqutftt9+ev/3bv82MGTNSKBRy7bXX9rt+8sknp1Ao9HsdddRR/fo88cQTOfHEE9PS0pIpU6bkXe96Vzo7O6v9WAAAAABQlao3L0iSQqGQI444IkccccRWPbxUKuVlL3tZ/uEf/iFz5szZaJ+jjjoqX/nKV/rOJ06c2O/6iSeemMceeyw333xzurq6csopp+S9731vrrjiiq2qDQAAAAA2Z0DB2qWXXpr3vve92WabbXLppZdutu8HP/jBAT/86KOPztFHH73ZPhMnTsz06dM3eu2BBx7I97///fzkJz/JgQcemCT5whe+kDe84Q258MILM2PGjAHXAgCMbutP+Sx1bfw4qezYCgAAAzGgYO3iiy/OiSeemG222SYXX3zxJvsVCoWqgrWBuO222zJ16tRsv/32ee1rX5vzzjsvO+64Y5LkrrvuypQpU/pCtSQ5/PDD09TUlB//+Mc5/vjjN3rPZ599Ns8++2zfeUdHx6DWDAA0nskLJ2+0fdqF0/qdl88tD0c5AACMAgMK1pYvX77R46F21FFHZc6cOdl9993zm9/8Jh/72Mdy9NFH56677sq4ceOycuXKTJ06td97mpubs8MOO2TlypWbvO/ChQuzYMGCoS4fAAAAgFGsqjXWurq6svfee+eGG27Ii1/84qGqqc/b3va2vuN99903++23X174whfmtttuy+te97qa7zt//vzMmzev77yjoyMzZ87cqloBgMbWOX/d5kalrlLfSLW2s9pSHG/6JwAA1asqWBs/fnyeeeaZoapli/7qr/4qO+20Ux5++OG87nWvy/Tp07Nq1ap+fbq7u/PEE09scl22pLJu23M3QQAARrdNrZ1WHF+0rhoAADVpqvYNc+fOzWc+85l0d3cPRT2b9cc//jF//vOfs8suuyRJZs2alSeffDL33HNPX58f/vCH6e3tzStf+cphrw8AAACAsaOqEWtJ8pOf/CS33HJL/vu//zv77rtvisX+f8N79dVXD/henZ2defjhh/vOly9fnnvvvTc77LBDdthhhyxYsCAnnHBCpk+fnt/85jf5yEc+kj322CNHHnlkkuTFL35xjjrqqLznPe/JZZddlq6urpx++ul529veZkdQAAAAAIZU1cHalClTcsIJJwzKw+++++78zd/8Td/52nXPTjrppCxevDg///nP89WvfjVPPvlkZsyYkSOOOCKf+tSn+k3j/PrXv57TTz89r3vd69LU1JQTTjghl1566aDUBwCMTsUJRbt/AgCw1QrlcnnM/1dlR0dHWltb097enpaWlnqXAwAAAECdVJMTDXiNtd7e3nzmM5/J7Nmzc9BBB+WjH/1oVq9evdXFAgAAAMBINOBg7dOf/nQ+9rGPZfLkyXne856Xz3/+85k7d+5Q1gYAAAAADWvAwdrXvva1LFq0KDfddFOuvfbaXH/99fn617+e3t7eoawPAAAAABrSgIO1FStW5A1veEPf+eGHH55CoZBHH310SAoDAAAAgEY24GCtu7s722yzTb+28ePHp6ura9CLAgAAAIBG1zzQjuVy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388b3vCG/PGPf8yMGTMG9OyOjo60tramvb09LS0tQ/L5gLFjzpzKyLTnhmTra26u7AZ61VXV9x8qz39+smLFpq/vtlvy+98P3fMBAAAaQTU5UcOusbZ8+fKsXLkyhx9+eF9ba2trXvnKV+auu+5Kktx1112ZMmVKX6iWJIcffniampry4x//eJP3fvbZZ9PR0dHvBTAYVq9Orrtu8yFZUrl+zTXJE08MvP/VVyc33ZQ88sjg1bvW3/3d5kO1pHLdyDUAAIB1GjZYW7lyZZJk2rRp/dqnTZvWd23lypWZ+pyVvpubm7PDDjv09dmYhQsXprW1te81c+bMQa4eGKs6OtatqbYlvb3Jo48OvH+5nBx1VLLrrsk22yR/Gcw7KK68cmD9vv3twXsmAADASNewwdpQmj9/ftrb2/tef/jDH+pdEjBKtLRU1iQbiKamZMaMgfdf37PPJp/7XHLQQdW/97kefrgS2g1Eb68NDQAAANZq2GBt+vTpSZK2trZ+7W1tbX3Xpk+fnlXP2UKvu7s7TzzxRF+fjZk4cWJaWlr6vQAGw6RJlbXQmps336+5OTn++GSHHQbWf1PuvnvrR679/OdD2x8AAGC0athgbffdd8/06dNzyy239LV1dHTkxz/+cWbNmpUkmTVrVp588sncc889fX1++MMfpre3N6985SuHvWaAJJk3L+np2Xyfnp7kzDMH3n9zLr209vcmyX77DW1/AACA0aquwVpnZ2fuvffe3HvvvUkqGxbce++9WbFiRQqFQs4444ycd955+e53v5tf/OIXeec735kZM2b07Rz64he/OEcddVTe85735H/+539yxx135PTTT8/b3va2Ae8ICjDYDj64shnA5rztbcns2ev6L1qUFAq1jVzr6tq6DQ322KPy7IFoaqr0BwAAoM7B2t133539998/+++/f5Jk3rx52X///XPOOeckST7ykY/kAx/4QN773vfmoIMOSmdnZ77//e9nm2226bvH17/+9ey999553etelze84Q05+OCD86UvfakunwcgSZYtS771rc33+eY3kzvuWHd+6qnJ0qWVaaG1rLl2333Vv2d9b3nLwPq99a1b95xGV1pTSmFBIYUFhZTWlOpdDgAA0OAK5fJAl6wevTo6OtLa2pr29nbrrQFbbc6c5Prrk+7uTfdpbq6EaFddteG11auT17++f/C2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6uT1r0+uv37dYvq9vZXzQw5JLrusvjWONFvaGODRR6u731e/OvCRcAAAADCaNXSw9olPfCKFQqHfa++99+67/swzz2Tu3LnZcccdM3ny5Jxwwglpa2urY8VsrWXLkrlzk3K5/4iopHJeLiennZbccUd96huNZsyorv8b31hZj62zM1m5svL1qquMJAQAAGDsaehgLUle8pKX5LHHHut7LVu2rO/amWeemeuvvz5XXnlllixZkkcffTRz5sypY7VsrYsuSsaN23yfceOSiy8ennqea/XqpK1tdK35tsMOyS67DKzvjBmV/smWR8IBAADAaNfwwVpzc3OmT5/e99ppp52SJO3t7fnyl7+ciy66KK997WtzwAEH5Ctf+UruvPPO/OhHP6pz1dRi9erKmmrPHan2XN3dyTXXDG+4tWxZMmdOMnlyMn165eucOaNn5NzHPz64/QAAAGAsaPhg7aGHHsqMGTPyV3/1VznxxBOzYsWKJMk999yTrq6uHH744X1999577+y222656667NnvPZ599Nh0dHf1e1F9Hx7o11bakt7fSfzgsXpwceujoXvPttNOSt799833e/vbk/e8fnnoAAABgJGjoYO2Vr3xlLr/88nz/+9/P4sWLs3z58hxyyCF56qmnsnLlykyYMCFTpkzp955p06Zl5cqVm73vwoUL09ra2veaOXPmEH4KBqqlZd2C+FvS1FTpP9TG0ppvV1xR2dXzuWuuzZhRab/iivrUBQAAAI2qud4FbM7RRx/dd7zffvvlla98ZZ7//Ofn29/+diZtxcJO8+fPz7x58/rOOzo6hGsNYNKkyu6S11+/+emgzc2VfsOxttfaNd82V8/aNd9Gw+L9739/5fXEE5XdQtdfUw0AAADor6FHrD3XlClT8qIXvSgPP/xwpk+fnjVr1uTJJ5/s16etrS3Tp0/f7H0mTpyYlpaWfi8aw7x5SU/P5vv09CRnnjn0tTTymm9DbYcdkpe+VKgGAAAAmzOigrXOzs785je/yS677JIDDjgg48ePzy233NJ3/cEHH8yKFSsya9asOlbJ1jj44Mq0w0KhMjJtfc3NlfZFi4ZndFijrvkGAAAANIaGDtbOOuusLFmyJL/73e9y55135vjjj8+4cePy9re/Pa2trXnXu96VefPm5dZbb80999yTU045JbNmzcqrXvWqepfOVjj11GTp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Plxlf4iIiKju46OgRERE9NKZOHEi5s2bh82bN0Ov12Py5MlITU3F2LFjAdz/uqWVlZXyAvvr168DALy8vLB+/XpkZmYiMTERAwcOhJWVVY2Pm5eXh86dO+Pnn39Geno6srOzsWXLFnz77bcICwsDAHTp0gWvvPIKIiIikJaWhri4OHz55ZcG7Xh6eqJZs2aYMWMGTp48iV27dmHBggUGMV5eXti7dy+OHDmCzMxMfPzxx8jNza22j6NGjcLVq1cRHh6OY8eOISsrC7t378aQIUOqLWxVZODAgXB0dERYWBji4uKQnZ2N2NhYjBkzBufPnwcA/O9//8OcOXOwZMkSnDhxAhkZGYiMjMTChQsBVH49HrZ69Wq8++678PPzM/gNHToUV65cMfjy66OO297eHg0bNsRPP/2EU6dO4cCBAxg/fvwjnw8iIiKqW1hYIyIiopfOmDFjMH78eEyYMAEajQbR0dHYuXMnvLy8AABmZmZYsmQJVqxYAVdXV6XotXr1aly7dg0BAQEYPHgwxowZA2dn5xofV61Wo3379li0aBGCgoLg5+eHadOmYfjw4fjhhx8A3H/MMyoqCoWFhWjXrh2GDRtm8AgjAJibm2Pjxo34559/0Lp1a8ybNw+zZs0yiJk6dSoCAgKg0+nQqVMnuLi44J133qm2j2V385WUlCA0NBQajQbjxo2DnZ2d8gjqo7C2tsahQ4fQvHlz9O3bF61atcLQoUNRVFSk3ME2bNgwrFq1CpGRkdBoNAgODsbatWvh7u4OoPLr8aDk5GSkpaWhX79+5bbZ2toiJCQEq1evNnrcJiYm2LRpE5KTk+Hn54dPP/0U8+fPf+TzQURERHWLSh58OQcRERERvZBUKhWioqJqVBwjIiIiomeDd6wREREREREREREZgYU1IiIiIiIiIiIiI/CroERERES1AN/eQURERPTi4R1rRERERERERERERmBhjYiIiIiIiIiIyAgsrBERERERERERERmBhTUiIiIiIiIiIiIjsLBGRERERERERERkBBbWiIiIiIiIiIiIjMDCGhERERERERERkRFYWCMiIiIiIiIiIjLC/wHBE3UZqHGbagAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_scatter_chart(df7,\"Hebbal\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We should also remove properties where for same location, the price of (for example) 3 bedroom apartment is less than 2 bedroom apartment (with same square ft area). What we will do is for a given location, we will build a dictionary of stats per bhk, i.e.\n", "\n", "{\n", " '1' : {\n", "\n", " \n", " 'mean': 4000,\n", " 'std: 2000,\n", " 'count': 34\n", " },\n", " '2' : {\n", " 'mean': 4300,\n", " 'std: 2300,\n", " 'count': 22\n", " }, \n", "}\n", "Now we can remove those 2 BHK apartments whose price_per_sqft is less than mean price_per_sqft of 1 BHK apartment" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7317, 7)" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def remove_bhk_outliers(df):\n", " exclude_indices = np.array([])\n", " for location, location_df in df.groupby('location'):\n", " bhk_stats = {}\n", " for bhk, bhk_df in location_df.groupby('bhk'):\n", " bhk_stats[bhk] = {\n", " 'mean': np.mean(bhk_df.price_per_sqft),\n", " 'std': np.std(bhk_df.price_per_sqft),\n", " 'count': bhk_df.shape[0]\n", " }\n", " for bhk, bhk_df in location_df.groupby('bhk'):\n", " stats = bhk_stats.get(bhk-1)\n", " if stats and stats['count']>5:\n", " exclude_indices = np.append(exclude_indices, bhk_df[bhk_df.price_per_sqft<(stats['mean'])].index.values)\n", " return df.drop(exclude_indices,axis='index')\n", "df8 = remove_bhk_outliers(df7)\n", "# df8 = df7.copy()\n", "df8.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot same scatter chart again to visualize price_per_sqft for 2 BHK and 3 BHK properties\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABNYAAANXCAYAAAD5PtJMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB5jUlEQVR4nOzdeXxddZ038M9N0zUhqSxtWYo6wIDFIgiO1gJuSEGUSpHREdmGUYGi0ApifZBNsag8LDq26MgDKDA6IMgmYEEoLRRFFmUTFZEKtAVlSGhIt+Q+f8QGQrfkNHve79frvnLP7/zuud/Tnhb48FtK5XK5HAAAAACgQyp6ugAAAAAA6IsEawAAAABQgGANAAAAAAoQrAEAAABAAYI1AAAAAChAsAYAAAAABQjWAAAAAKAAwRoAAAAAFCBYAwAAAIACBGsAAL1cqVTKGWec0eHP3XnnnSmVSrnzzjtb24488si86U1v6rTaAAAGMsEaAEAnufTSS1MqlVpflZWV2XrrrXPkkUfm2Wef7enyOuS9731vSqVSPvKRj6xx7i9/+UtKpVLOPffcHqgMAKD3qOzpAgAA+puzzjorb37zm7Ns2bLce++9ufTSSzN//vw88sgjGTZsWIev19jYmMrKjv9r2957753GxsYMGTKkte2//uu/0tzc3O5r3Hjjjbn//vuz++67d/j7AQD6OyPWAAA62f77759PfepT+Y//+I/84Ac/yEknnZQnn3wy119/faHrDRs2rFCwVlFRkWHDhqWi4tV/5Rs8eHCGDh3ars9vu+22ecMb3pAzzzyzw9/d0xoaGnq6BABgABCsAQB0sb322itJ8uSTT7a2rVixIqeddlp233331NbWpqqqKnvttVfuuOOONT7/+jXWnn766Rx33HHZcccdM3z48Gy22WY55JBD8pe//KXN5zZ2jbVNNtkk06ZNyw033JAHHnhgvX1ffPHFnHTSSRk/fnyqq6tTU1OT/fffP7/97W/X6Pv000/nwAMPTFVVVUaNGpVp06bl1ltvXaPWefPm5ZBDDsm2226boUOHZuzYsZk2bVoaGxvbXO/II49MdXV1nnzyyXzoQx/KJptskkMPPbRd9wgAsDFMBQUA6GKrA683vOENrW319fX5wQ9+kH/7t3/Lpz/96bz88su5+OKLM2nSpPz617/Orrvuus7r3XfffbnnnnvyiU98Ittss03+8pe/ZPbs2Xnve9+bxx57LCNGjOi02k844YScf/75OeOMM9Y74u7Pf/5zfvazn+WQQw7Jm9/85ixZsiTf+9738p73vCePPfZYttpqqyQtI8ne//73Z9GiRTnhhBMyZsyYXHnllWsNFK+66qq88sorOfbYY7PZZpvl17/+db7zne/kmWeeyVVXXdWm76pVqzJp0qTsueeeOffcczv11wAAYF0EawAAnayuri5/+9vfsmzZsvzqV7/KmWeemaFDh+bDH/5wa583vOEN+ctf/tJm/bNPf/rT2WmnnfKd73wnF1988Tqvf8ABB+RjH/tYm7aPfOQjmTBhQn7605/msMMO67R7qampyYknnpjTTz89DzzwQN7+9revtd/48ePzhz/8oc2008MOOyw77bRTLr744nzlK19Jknzve99rDeEmT56cJPnsZz+b3XbbbY1rfuMb38jw4cNbjz/zmc9k++23z5e//OUsXLgw2267beu55cuX55BDDsnMmTM75b4BANrDVFAAgE62zz77ZIsttsjYsWPzsY99LFVVVbn++uuzzTbbtPYZNGhQa6jW3NycF198MatWrcoee+yxwWmXrw2bVq5cmb///e/ZfvvtM3LkyA1+togTTjhhg2utDR06tDVUa2pqyt///vdUV1dnxx13bFPTLbfckq233joHHnhga9uwYcPy6U9/eo1rvvY+Gxoa8re//S3vfve7Uy6X8+CDD67R/9hjjy10fwAARQnWAAA62Xe/+93MmTMnV199dT70oQ/lb3/721o3DLjsssuyyy67ZNiwYdlss82yxRZb5KabbkpdXd16r9/Y2JjTTjstY8eOzdChQ7P55ptniy22yEsvvbTBzxZRW1ubE088Mddff/1aA62kJRw8//zzs8MOO7Sp6Xe/+12bmp5++ulst912KZVKbT6//fbbr3HNhQsX5sgjj8ymm26a6urqbLHFFnnPe96TJGvcZ2VlZZvgEgCgOwjWAAA62b/8y79kn332ycEHH5zrr78+b33rW/PJT34yS5cube1z+eWX58gjj8x2222Xiy++OLfcckvmzJmT97///Wlubl7v9T/3uc/l7LPPzr/+67/mf/7nf/KLX/wic+bMyWabbbbBzxZ1wgknZOTIkesctfb1r38906dPz957753LL788t956a+bMmZOdd965UE1NTU354Ac/mJtuuimnnHJKfvazn2XOnDm59NJLk2SNa752xBwAQHexxhoAQBcaNGhQZs6cmfe97335z//8z3zpS19Kklx99dX5p3/6p1xzzTVtRm+dfvrpG7zm1VdfnSOOOCL/9//+39a2ZcuW5aWXXur0+ldbPWrtjDPOyBFHHLHWmt73vvetsTbcSy+9lM0337z1+I1vfGMee+yxlMvlNvf9pz/9qc3nHn744fzhD3/IZZddlsMPP7y1fc6cOZ11SwAAG83/1gMA6GLvfe978y//8i+54IILsmzZsiQtgVuSlMvl1n6/+tWvsmDBgg1eb9CgQW0+lyTf+c530tTU1IlVr+nEE0/MyJEjc9ZZZ7WrpquuuirPPvtsm7ZJkybl2WefbbPD6LJly/Jf//Vfa1wvafvrUy6Xc+GFF270fQAAdBYj1gAAusHJJ5+cQw45JJdeemmOOeaYfPjDH84111yTgw46KAcccECeeuqpXHTRRRk3blybKaNr8+EPfzg/+tGPUltbm3HjxmXBggW57bbbstlmm3XpPdTW1uaEE05Y63TQD3/4wznrrLNy1FFH5d3vfncefvjhXHHFFfmnf/qnNv0++9nP5j//8z/zb//2bznhhBOy5ZZb5oorrsiwYcOSpHUU20477ZTtttsuJ510Up599tnU1NTkpz/9af73f/+3S+8RAKAjjFgDAOgGU6ZMyXbbbZdzzz03TU1NOfLII/P1r389v/3tb/P5z38+t956ay6//PLsscceG7zWhRdemMMPPzxXXHFFvvCFL2TRokW57bbbUl1d3eX3ceKJJ6a2tnaN9i9/+cv5whe+kFtvvTUnnHBCHnjggdx0000ZO3Zsm37V1dX55S9/mfe///258MIL87WvfS177bVXvvKVryRJa8A2ePDg3HDDDdl1110zc+bMnHnmmdlhhx3ywx/+sMvvEQCgvUrl14/ZBwCg12hqakplZWW++tWv5tRTT+3QZ2+//fbss88+mTdvXvbcc88uqrBzXHDBBZk2bVqeeeaZbL311j1dDgBAuxixBgDQiy1atChJ2mwA0B2f7UqNjY1tjpctW5bvfe972WGHHYRqAECfYo01AIBe6uqrr84Pf/jDlEqlvO9972v35xoaGnLFFVfkwgsvzDbbbJN//ud/7sIqO27KlCnZdttts+uuu6auri6XX355fv/73+eKK67o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Oo+TZN68eRk5cmROPPHElMv+wAIAAAB9lxFr3aRhRUNrQrx0xtIuH165zTbb5JxzzskOO+yQcrmcyy67LJMnT86DDz6YnXfeeZ2f23nnnXPbbbclSV588cWce+65+fCHP5xnnnkmtbW1G1XTTTfdlEMOOSRf+tKXctppp23UtQAAAID2WTpjaev7hpUNrSPVlpy0JFWDTf/cGEas9VMf+chH8qEPfSg77LBD/vmf/zlnn312qqurc++99673c5WVlRkzZkzGjBmTcePG5ayzzsrSpUvzhz/8YaPqufLKKzNlypR885vfFKoBAABAN6oaUvXq6zVBWtXgqjbn6Dgj1gaApqamXHXVVWloaMiECRPa/bnly5fnkksuyciRI7PjjjsW/v7vfve7mT59ev7f//t/OfTQQwtfBwAAAKA3Eax1oZ7edePhhx/OhAkTsmzZslRXV+faa6/NuHHjNviZ6uqWKauvvPJKNtlkk/zkJz9JTU1Nm36nnHJKTj311DZtK1asWOP6jz/+eI4//vhcfPHFQjUAAACgXxGsdaGe3nVjxx13zEMPPZS6urpcffXVOeKIIzJ37tz1hms77rhjrr/++iTJyy+/nJ/85Cc55JBDcscdd2SPPfZo7XfyySfnyCOPbPPZb3/727nrrrvatG2zzTYZOXJkvvWtb2X//ffPlltu2Xk3CAAAAHRI1ZAqu392IsFaPzZkyJBsv/32SZLdd9899913Xy688MJ873vfa9dnkmS33XbLz372s1xwwQW5/PLLW9s333zzNv2SZNNNN13jeptsskluu+22fPCDH8z73ve+3HHHHcI1AAAAoF8QrHWh3rbrRnNzc5YvX97hzw0aNCiNjY2Fv/cNb3hDbrvttuy7775573vfmzvuuCNbbbVV4esBAAAA9AaCtS60rrXTVu+60ZVmzJiR/fffP9tuu21efvnlXHnllbnzzjtz6623rvdzq1atyuLFi5O8OhX0scceyymnnLJR9YwcOTJz5szJpEmT8t73vjd33nmncA0AAADo0wRr/dTzzz+fww8/PIsWLUptbW122WWX3HrrrfngBz+43s89+uijrVM1R4wYke222y6zZ8/O4YcfvtE11dbW5he/+EX222+/vOc978mdd96ZrbfeeqOvCwAAANATSuVyecCvWFdfX5/a2trU1dWtsfvlsmXL8tRTT+XNb35zhg0bVvg7GlY0tG5msHTG0i4fsdZXddavNwAAAEAR68uJXs+ItW5i1w0AAACA/qWipwsAAAAAgL5IsAYAAAAABQjWAAAAAKAAwVo72eOhe/h1BgAAAPoKwdoGDBo0KEmyYsWKHq5kYHjllVeSJIMHD+7hSgAAAADWz66gG1BZWZkRI0bkhRdeyODBg1NRIYvsCuVyOa+88kqef/75jBw5sjXQBAAAAOitBGsbUCqVsuWWW+app57K008/3dPl9HsjR47MmDFjeroMAAAA2qlhRUOqZ1YnSZbOWJqqIVU9XBF0H8FaOwwZMiQ77LCD6aBdbPDgwUaqAQAAAH2GYK2dKioqMmzYsJ4uAwAAAIBeQrAGAAAAdEjDioZX369c+/skpoXS7wnWAAAAgA5Zvaba640+d3Sb4/Lp5e4oB3qMLS4BAAAAoAAj1gAAAIAOWTpjaev7hpUNrSPVlpy0JFWDTf9k4BCsAQAAAB2yrrXTqgZXWVeNAcVUUAAAAAAoQLAGAAAAAAWYCgoAAAAUVjWkyu6fDFhGrAEAAABAAYI1AAAAoLCGFQ0pnVlK6cxSGlY09HQ50K0EawAAAABQgGANAAAAAAqweQEAAADQIa+d8tmwcu3vk5aNDaA/E6wBAAAAHVI9s3qt7aPPHd3m2G6h9HemggIAAABAAUasAQAAAB2ydMbS1vcNKxtaR6otOWlJqgab/snAIVgDAAAAOmRda6dVDa6yrhoDiqmgAAAAAFCAYA0AAAAACjAVFAAAACisakiV3T8ZsIxYAwAAAIACBGsAAAAAUIBgDQAAAAAKEKwBAAAAQAGCNQAAAAAoQLAGAAAAQIc1rGhI6cxSSmeW0rCioafL6RGCNQAAAAAoQLAGAAAAAAVU9nQBAAAAAPQNr53y2bBy7e+TpGpIVbfV1JMEawAAAAC0S/XM6rW2jz53dJvj8unl7iinx5kKCgAAAAAFGLEGAAAAQLssnbG09X3DyobWkWpLTlqSqsEDY/rnawnWAAAAgAGhYUVD61TGpTOWDph1wDrTun7NqgZXDchfT1NBAQAAAKCAXhOsnXPOOSmVSjnxxBNb25YtW5apU6dms802S3V1dQ4++OAsWbKkzecWLlyYAw44ICNGjMioUaNy8sknZ9WqVd1cPQAAAAADTa+YCnrffffle9/7XnbZZZc27dOmTctNN92Uq666KrW1tTn++OMzZcqU3H333UmSpqamHHDAARkzZkzuueeeLFq0KIcffngGDx6cr3/96z1xKwAAAEBBXTFVs2FFw6vvV679fbLuKY6sW9WQqgGz++e69HiwtnTp0hx66KH5r//6r3zta19rba+rq8vFF1+cK6+8Mu9///uTJJdcckne8pa35N5778273vWu/OIXv8hjjz2W2267LaNHj86uu+6ar371qznllFNyxhlnZMiQIWv9zuXLl2f58uWtx/X19V17kwAAAECPWB3Uvd7qRfdXG+gBEcX0+FTQqVOn5oADDsg+++zTpv3+++/PypUr27TvtNNO2XbbbbNgwYIkyYIFCzJ+/PiMHv3qH4ZJkyalvr4+jz766Dq/c+bMmamtrW19jR07tpPvCgAAAID+rkdHrP34xz/OAw88kPvuu2+Nc4sXL86QIUMycuTINu2jR4/O4sWLW/u8NlRbfX71uXWZMWNGpk+f3npcX18vXAMAAIAe0NVTNZfOWNrmmqtHqi05aUmqBpv+ycbpsWDtr3/9a0444YTMmTMnw4YN69bvHjp0aIYOHdqt3wkAAACsqaunaq4rkKsaXGVdNTZaj00Fvf/++/P888/n7W9/eyorK1NZWZm5c+fm29/+diorKzN69OisWLEiL730UpvPLVmyJGPGjEmSjBkzZo1dQlcfr+4DAAAAAF2hx0asfeADH8jDDz/cpu2oo47KTjvtlFNOOSVjx47N4MGDc/vtt+fggw9OkjzxxBNZuHBhJkyYkCSZMGFCzj777Dz//PMZNWpUkmTOnDmpqanJuHHjuveGAAAAgA4zVZO+rMeCtU022SRvfetb27RVVVVls802a20/+uijM3369Gy66aapqanJ5z73uUyYMCHvete7kiT77rtvxo0bl8MOOyzf/OY3s3jx4px66qmZOnWqqZ4AAADQB3TnVM2qIVV2/6RT9ejmBRty/vnnp6KiIgcffHCWL1+eSZMmZdasWa3nBw0alBtvvDHHHntsJkyYkKqqqhxxxBE566yzerBqAAAAAAaCUrlcHvBRbX19fWpra1NXV5eampqeLgcAAAD6vYYVDa0bFyydsTRVQ6rW2gbdrSM5Ua8esQYAAAAMHKZq0tf02K6gAAAAANCXGbEGAAAAdIuGFQ2vvl+59vfJujc0gN5GsAYAAAB0i9Xrp73e6HNHtzk2HZS+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LlyYH/7wh11RJwAAAAD0Kh0esTZ9+vQcddRR+eMf/5hhw4a1tn/oQx/KXXfd1anFAQAAAEBv1eFg7b777stnP/vZNdq33nrrLF68uFOKAgAAAIDersPB2tChQ1NfX79G+x/+8IdsscUWnVIUAAAAAPR2HQ7WDjzwwJx11llZuXJlkqRUKmXhwoU55ZRTcvDBB3d6gQAAAADQG3U4WPu///f/ZunSpRk1alQaGxvznve8J9tvv3022WSTnH322V1RIwAAAAD0Oh3eFbS2tjZz5szJ/Pnz87vf/S5Lly7N29/+9uyzzz5dUR8AAAAA9EodDtZW23PPPbPHHntk6NChKZVKnVkTAAAAAPR6HZ4K2tzcnK9+9avZeuutU11dnaeeeipJ8pWvfCUXX3xxpxcIAAAAAL1Rh4O1r33ta7n00kvzzW9+M0OGDGltf+tb35of/OAHnVocAAAAAPRWHQ7WfvjDH+b73/9+Dj300AwaNKi1/W1ve1t+//vfd2pxAAAAANBbdThYe/bZZ7P99tuv0d7c3JyVK1d2SlEAAAAA0Nt1OFgbN25c5s2bt0b71Vdfnd12261TigIAAACA3q7Du4KedtppOeKII/Lss8+mubk511xzTZ544on88Ic/zI033tgVNQIAAABAr9PhEWuTJ0/ODTfckNtuuy1VVVU57bTT8vjjj+eGG27IBz/4wa6oEQAAAAB6nVK5XC73dBE9rb6+PrW1tamrq0tNTU1PlwMAAABAD+lITtThEWur/eY3v8mPfvSj/OhHP8r9999f6BqzZ8/OLrvskpqamtTU1GTChAm5+eabW88vW7YsU6dOzWabbZbq6uocfPDBWbJkSZtrLFy4MAcccEBGjBiRUaNG5eSTT86qVauK3hYAAAAAtEuH11h75pln8m//9m+5++67M3LkyCTJSy+9lHe/+9358Y9/nG222abd19pmm21yzjnnZIcddki5XM5ll12WyZMn58EHH8zOO++cadOm5aabbspVV12V2traHH/88ZkyZUruvvvuJElTU1MOOOCAjBkzJvfcc08WLVqUww8/PIMHD87Xv/71jt4aAAAAALRbh6eC7rfffnnppZdy2WWXZccdd0ySPPHEEznqqKNSU1OTW265ZaMK2nTTTfOtb30rH/vYx7LFFlvkyiuvzMc+9rEkye9///u85S1vyYIFC/Kud70rN998cz784Q/nueeey+jRo5MkF110UU455ZS88MILGTJkSLu+01RQAAAAAJIungo6d+7czJ49uzVUS5Idd9wx3/nOd3LXXXd1vNp/aGpqyo9//OM0NDRkwoQJuf/++7Ny5crss88+rX122mmnbLvttlmwYEGSZMGCBRk/fnxrqJYkkyZNSn19fR599NF1ftfy5ctTX1/f5gUAAAAAHdHhYG3s2LFZuXLlGu1NTU3ZaqutOlzAww8/nOrq6gwdOjTHHHNMrr322owbNy6LFy/OkCFDWqebrjZ69OgsXrw4SbJ48eI2odrq86vPrcvMmTNTW1vb+ho7dmyH6wYAAABgYOtwsPatb30rn/vc5/Kb3/ymte03v/lNTjjhhJx77rkdLmDHHXfMQw89lF/96lc59thjc8QRR+Sxxx7r8HU6YsaMGamrq2t9/fWvf+3S7wMAAACg/+nw5gVHHnlkXnnllbzzne9MZWXLx1etWpXKysr8+7//e/793/+9te+LL764wesNGTIk22+/fZJk9913z3333ZcLL7wwH//4x7NixYq89NJLbUatLVmyJGPGjEmSjBkzJr/+9a/bXG/1rqGr+6zN0KFDM3To0PbdMAAAAACsRYeDtQsuuKALynhVc3Nzli9fnt133z2DBw/O7bffnoMPPjhJyyYJCxcuzIQJE5IkEyZMyNlnn53nn38+o0aNSpLMmTMnNTU1GTduXJfWCQAAAMDA1uFg7Ygjjui0L58xY0b233//bLvttnn55Zdz5ZVX5s4778ytt96a2traHH300Zk+fXo23XTT1NTU5HOf+1wmTJiQd73rXUmSfffdN+PGjcthhx2Wb37zm1m8eHFOPfXUTJ061Yg0AAAAALpUh4O1hQsXrvf8tttu2+5rPf/88zn88MOzaNGi1NbWZpdddsmtt96aD37wg0mS888/PxUVFTn44IOzfPnyTJo0KbNmzWr9/KBBg3LjjTfm2GOPzYQJE1JVVZUjjjgiZ511VkdvCwAAAAA6pFQul8sd+UBFRUVKpdI6zzc1NW10Ud2tvr4+tbW1qaurS01NTU+XAwAAAEAP6UhO1OERaw8++GCb45UrV+bBBx/Meeedl7PPPrujlwMAAACAPqnDwdrb3va2Ndr22GOPbLXVVvnWt76VKVOmdEphAAAAANCbVXTWhXbcccfcd999nXU5AAAAAOjV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55xTuJDm5uaceOKJmThxYt761re2tn/yk5/M5ZdfnjvuuCMzZszIj370o3zqU59qPb948eI2oVqS1uPFixev9btmzpyZ2tra1tfYsWML1w0AAADAwNThoWYzZszIb3/729x5553Zb7/9Wtv32WefnHHGGfnSl75UqJCpU6fmkUceyfz589u0f+Yzn2l9P378+Gy55Zb5wAc+kCeffDLbbbddoe+aMWNGpk+f3npcX18vXAMANorpvgAAA0+Hg7Wf/exn+clPfpJ3vetdKZVKre0777xznnzyyUJFHH/88bnxxhtz1113ZZtttllv33e+851Jkj/96U/ZbrvtMmbMmPz6179u02fJkiVJss512YYOHZqhQ4cWqhUANlbVkCrTAfsh030BAAaeDk8FfeGFFzJq1Kg12hsaGtoEbe1RLpdz/PHH59prr80vf/nLvPnNb97gZx566KEkyZZbbpkkmTBhQh5++OE8//zzrX3mzJmTmpqajBs3rkP1AAAAAEB7dThY22OPPXLTTTe1Hq8O037wgx9kwoQJHbrW1KlTc/nll+fKK6/MJptsksWLF2fx4sVpbGxMkjz55JP56le/mvvvvz9/+ctfcv311+fwww/P3nvvnV122SVJsu+++2bcuHE57LDD8tvf/ja33nprTj311EydOtWoNAAAAAC6TKlcLndoLsr8+fOz//7751Of+lQuvfTSfPazn81jjz2We+65J3Pnzs3uu+/e/i9fxwi3Sy65JEceeWT++te/5lOf+lQeeeSRNDQ0ZOzYsTnooINy6qmnpqamprX/008/nWOPPTZ33nlnqqqqcsQRR+Scc85p926l9fX1qa2tTV1dXZvrAgAAADCwdCQn6nCwlrSMJDvnnHPy29/+NkuXLs3b3/72nHLKKRk/fnzhonuSYA0AAACApBuCtf5GsAZAd2pY0ZDqmdVJWnaStLA9AAD0Hh3JiTq8xtrPf/7z3HrrrWu033rrrbn55ps7ejkAAAAA6JM6HKx96UtfSlNT0xrt5XI5X/rSlzqlKAAAAADo7dq3uv9r/PGPf8y4cePWaN9pp53ypz/9qVOKAoD+pmFFw6vvV679fRLTQgEAoA/pcLBWW1ubP//5z3nTm97Upv1Pf/pTqqr8xwAArM3qNdVeb/S5o9scl08f8EufAgBAn9HhqaCTJ0/OiSeemCeffLK17U9/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AACAAgRrAAAAAFCAYA0AAAAAChCsAQAAAEABgjUAAAAAKECwBgAAAAAFCNYAAAAAoADBGgAAAAAUIFgDAAAAgAIEawAAAABQgGANAAAAAAoQrAEAAABAAYI1AAAAAChAsAYAAAAABQjWAAAAAKAAwRoAAAAAFCBYAwAAAIACBGsAAAAAUIBgDQAAAAAKEKwBAAAAQAGCNQAAAAAoQLAGAAAAAAUI1gAAAACgAMEaAAAAABQgWAMAAACAAgRrAAAAAFCAYA0AAAAAChCsAQAAAEABgjUAAAAAKECwBgAAAAAFCNYAAAAAoADBGgAAAAAUIFgDAAAAgAIEawAAAABQgGANAAAAAAoQrAEAAABAAYI1AAAAAChAsAYAAAAABQjW6FSNjcmSJS0/AQAAAPozwRqdYv78ZMqUpLo6GTOm5eeUKcndd/d0ZQAAAABdo0eDtZkzZ+Yd73hHNtlkk4waNSof/ehH88QTT7Tps2zZskydOjWbbbZZqqurc/DBB2fJkiVt+ixcuDAHHHBARowYkVGjRuXkk0/OqlWruvNWBrTZs5O9905uuCFpbm5pa25uOd5rr+Sii3q2PgAAAICu0KPB2ty5czN16tTce++9mTNnTlauXJl99903DQ0NrX2mTZuWG264IVdddVXmzp2b5557LlOmTGk939TUlAMOOCArVqzIPffck8suuyyXXnppTjvttJ64pQFn/vxk6tSkXE5en2WuWtXSftxxRq4BAAAA/U+pXC6Xe7qI1V544YWMGjUqc+fOzd577526urpsscUWufLKK/Oxj30sSfL73/8+b3nLW7JgwYK8613vys0335wPf/jDee655zJ69OgkyUUXXZRTTjklL7zwQoYMGbLB762vr09tbW3q6upSU1PTpffY30yZ0jIybX0DBCsrk8mTk6uv7r66AAAAAIroSE7Uq9ZYq6urS5JsuummSZL7778/K1euzD777NPaZ6eddsq2226bBQsWJEkWLFiQ8ePHt4ZqSTJp0qTU19fn0UcfXev3LF++PPX19W1edFxjY3LddesP1ZKW89dea0MDAAAAoH/pNcFac3NzTjzxxEycODFvfetbkySLFy/OkCFDMnLkyDZ9R48encWLF7f2eW2otvr86nNrM3PmzNTW1ra+xo4d28l3MzDU17+6ptqGNDe39AcAAADoL3pNsDZ16tQ88sgj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5bz88svZaqutUlGx/lXUjFhLUlFRkW222aany+hXampq/IVJl/Bs0VU8W3QVzxZdxbNFV/Fs0VU8W3SVrni2NjRSbTWbFwAAAABAAYI1AAAAAChAsEanGjp0aE4//fQMHTq0p0uhn/Fs0VU8W3QVzxZdxbNFV/Fs0VU8W3SV3vBs2bwAAAAAAAowYg0AAAAAChCsAQAAAEABgjUAAAAAKECwBgAAAAAFCNZYw1133ZWPfOQj2WqrrVIqlfKzn/2s9dzKlStzyimnZPz48amqqspWW22Vww8/PM8991yba7z44os59NBDU1NTk5EjR+boo4/O0qVL2/T53e9+l7322ivDhg3L2LFj881vfrM7bo8etL5n6/WOOeaYlEqlXHDBBW3aPVusTXuerccffzwHHnhgamtrU1VVlXe84x1ZuHBh6/lly5Zl6tSp2WyzzVJdXZ2DDz44S5YsaXONhQsX5oADDsiIESMyatSonHzyyVm1alVX3x49aEPP1tKlS3P88cdnm222yfDhwzNu3LhcdNFFbfp4tlibmTNn5h3veEc22WSTjBo1Kh/96EfzxBNPtOnTWc/OnXfembe//e0ZOnRott9++1x66aVdfXv0oA09Wy+++GI+97nPZccdd8zw4cOz7bbb5vOf/3zq6uraXMezxeu15++t1crlcvbff/+1/rPTs8XrtffZWrBgQd7//venqqoqNTU12XvvvdPY2Nh6vqf+W1GwxhoaGhrytre9Ld/97nfXOPfKK6/kgQceyFe+8pU88MADueaaa/LEE0/kwAMPbNPv0EMPzaOPPpo5c+bkxhtvzF133ZXPfOYzrefr6+uz77775o1vfGPuv//+fOtb38oZZ5yR73//+11+f/Sc9T1br3Xttdfm3nvvzVZbbbXGOc8Wa7OhZ+vJJ5/MnnvumZ122il33nlnfve73+UrX/lKhg0b1tpn2rRpueGGG3LVVVdl7ty5ee655zJlypTW801NTTnggAOyYsWK3HPPPbnsssty6aWX5rTTTuvy+6PnbOjZmj59em655ZZcfvnlefzxx3PiiSfm+OOPz/XXX9/ax7PF2sydOzdTp07Nvffemzlz5mTlypXZd99909DQ0NqnM56dp556KgcccEDe97735aGHHsqJJ56Y//iP/8itt97arfdL99nQs/Xcc8/lueeey7nnnptHHnkkl156aW655ZYcffTRrdfwbLE27fl7a7ULLrggpVJpjXbPFmvTnmdrwYIF2W+//bLvvvvm17/+de67774cf/zxqah4Ndbqsf9WLMN6JClfe+216+3z61//upyk/PTTT5fL5XL5scceKycp33fffa19br755nKpVCo/++yz5XK5XJ41a1b5DW94Q3n58uWtfU455ZTyjjvu2Pk3Qa+0rmfrmWeeKW+99dblRx55pPzGN76xfP7557ee82zRHmt7tj7+8Y+XP/WpT63zMy+99FJ58ODB5auuuqq17fHHHy8nKS9YsKBcLpfLP//5z8sVFRXlxYsXt/aZPXt2uaamps3zRv+1tmdr5513Lp911llt2t7+9reX/8//+T/lctmzRfs9//zz5STluXPnlsvlznt2vvjFL5Z33nnnNt/18Y9/vDxp0qSuviV6idc/W2vzP//zP+UhQ4aUV65cWS6XPVu0z7qerQcffLC89dZblxctWrTGPzs9W7TH2p6td77zneVTTz11nZ/pyf9WNGKNjVZXV5dSqZSRI0cmaUmSR44cmT322KO1zz777JOKior86le/au2z9957Z8iQIa19Jk2alCeeeCL/+7//263103s0NzfnsMMOy8knn5ydd955jfOeLYpobm7OTTfdlH/+53/OpEmTMmrUqLzzne9sMy3h/vvvz8qVK7PPPvu0tu20007Zdttts2DBgiQtz9b48eMzevTo1j6TJk1KfX19Hn300W67H3qXd7/73bn++uvz7LPPplwu54477sgf/vCH7Lvvvkk8W7Tf6ml4m266aZLOe3YWLFjQ5hqr+6y+Bv3f65+tdfWpqalJZWVlEs8W7bO2Z+uVV17JJz/5yXz3u9/NmDFj1viMZ4v2eP2z9fzzz+dXv/pVRo0alXe/+90ZPXp03vOe92T+/Pmtn+nJ/1YUrLFRli1bllNOOSX/9m//lpqamiTJ4sWLM2rUqDb9Kisrs+mmm2bx4sWtfV77l2mS1uPVfRh4vvGNb6SysjKf//zn13res0URzz//fJYuXZpzzjkn++23X37xi1/koIMOypQpUzJ37twkLc/GkCFDWv8HwWqjR4/2bP3/9u49Joqr/QP4F7ktuNwUEFfkYqUKBSsQJatWaK2CV6o0GqIEjVqrEosSU23V0qr1pQoUrXdhNdaq0YqhNQWRS0SMVhFQEorLxUsrQUFR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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_scatter_chart(df8,\"Rajaji Nagar\")\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABNYAAANXCAYAAAD5PtJMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB6PElEQVR4nOzde3icZZ0//vekaUtJSUqBnqQoCwpyUgRWazm4ghzEFSjqqnwVWBWBogsVxfp1QTxsEREQ17br6op+VzyAFARFFhFKC5UVlJ+AiIDVItAURRKahrZJ5vfH2NDQNs1Mk8wkfb2ua648z/3c8zyfiWPWffc+FIrFYjEAAAAAQFnqql0AAAAAAAxFgjUAAAAAqIBgDQAAAAAqIFgDAAAAgAoI1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAIAKCNYAAAAAoAKCNQCArdAb3vCG7LPPPpvtd/vtt6dQKOSaa67pt2d/6lOfSqFQ6Lf7AQBUi2ANAKCGXXnllSkUCrnnnns2er2vARkAAP1PsAYAAAAAFRCsAQAAAEAFBGsAAMPMf//3f+eAAw7ImDFjMn78+Lzzne/M448/vtG+9957b17/+tdnzJgx2XXXXTN//vyN9uvs7MwnPvGJTJo0KQ0NDXnrW9+6wT0XLVqUt7/97dlll10yevToTJ06Neecc07a29v7/TMCANSC+moXAADA5rW0tOTPf/7zBu1r167tcf65z30u//qv/5p3vOMdef/735+nn346X/7yl3PooYfmV7/6VcaNG9fd969//Wve/OY35x3veEfe9a535fvf/37OOOOMjBo1Kv/8z/+8wX0LhULOO++8rFixIpdffnmOOOKI3HfffRkzZkyS5Oqrr86qVatyxhlnZIcddsj//u//5stf/nL+9Kc/5eqrr+7/XwoAQJUJ1gAAhoAjjjhik9f23nvvJMkf//jHXHDBBfnsZz+bT3ziE93XZ8yYkf333z9z587t0f7kk0/mi1/8YmbNmpUk+eAHP5jXvva1mT17dt7znvdk5MiR3X2feeaZPPTQQ9luu+2SJK95zWvyjne8I//5n/+ZD3/4w0mSz3/+890hW5Kcdtpp2X333fOJT3wiy5Ytyy677NIPvwkAgNphKigAwBDwla98JbfccssGr/3226+7z7XXXpuurq684x3vyJ///Ofu16RJk/Lyl788t912W4971tfX54Mf/GD3+ahRo/LBD34wK1asyL333tuj73vf+97uUC1J3va2t2Xy5Mn58Y9/3N22fqjW1taWP//5z3n961+fYrGYX/3qV/32uwAAqBVGrAEADAF///d/nwMPPHCD9u233757iugjjzySYrGYl7/85Ru9x/oj0JJkypQpaWho6NH2ile8Iknyhz/8Ia973eu62198z0KhkN133z1/+MMfutuWLVuW888/Pz/84Q/z17/+tUf/lpaWzXxCAIChR7AGADBMdHV1pVAo5KabbsqIESM2uD527NgBe3ZnZ2fe9KY35Zlnnsl5552XPffcMw0NDXniiSdyyimnpKura8CeDQBQLYI1AIBhYrfddkuxWMyuu+7aPfKsN08++WTa2tp6jFr73e9+lyR52cte1qPvI4880uO8WCzm0Ucf7Z6Kev/99+d3v/tdvvnNb+a9731vd79bbrml0o8DAFDzrLEGADBMzJgxIyNGjMiFF16YYrHY41qxWMxf/vKXHm0dHR35j//4j+7zNWvW5D/+4z+y00475YADDujR91vf+laee+657vNrrrkmTz31VI455pgk6R4ht/5zi8VivvSlL/XPhwMAqEFGrAEADBO77bZbPvvZz2b27Nn5wx/+kOOPPz7bbbddli5dmgULFuS0007Lueee291/ypQp+fznP58//OEPecUrXpHvfe97ue+++/LVr351g/XYxo8fn4MPPjinnnpqmpubc/nll2f33XfPBz7wgSTJnnvumd122y3nnntunnjiiTQ2NuYHP/jBBmutAQAMJ4I1AIBh5OMf/3he8YpX5LLLLsuFF16YJJk6dWqOPPLIvPWtb+3Rd/vtt883v/nNfOhDH8p//ud/ZuLEifn3f//37rBsfZ/4xCfy61//OnPmzMlzzz2Xww8/PHPnzs22226bpLQxwg033JAPf/jDmTNnTrbZZpuccMIJOeuss/KqV71q4D84AEAVFIovnicAAAAAAGyWNdYAAAAAoAKCNQAAAACogGANAAAAACogWAMAAACACgjWAAAAAKACgjUAAAAAqEB9tQuoBV1dXXnyySez3XbbpVAoVLscAAAAAKqkWCzmueeey5QpU1JX1/uYNMFakieffDJTp06tdhkAAAAA1IjHH388O++8c699BGtJtttuuySlX1hjY2OVqwEAAACgWlpbWzN16tTuvKg3grWke/pnY2OjYA0AAACAPi0XZvMCAAAAAKiAYA0AAAAAKiBYAwAAAIAKWGOtjzo7O7N27dpqlzGsjRgxIvX19X2awwwAAABQbYK1Pli5cmX+9Kc/pVgsVruUYW/bbbfN5MmTM2rUqGqXAgAAANArwdpmdHZ25k9/+lO23Xbb7LTTTkZTDZBisZg1a9bk6aefztKlS/Pyl788dXVmKgMAAAC1S7C2GWvXrk2xWMxOO+2UMWPGVLucYW3MmDEZOXJk/vjHP2bNmjXZZpttql0SAAAAwCYZEtRHRqoNDqPUAAAAgKFCigEAAAAAFRCsAQAAAEAFBGsAAAAAUAHB2iBqb0+am0s/B9qcOXNy0EEHZbvttsuECRNy/PHH5+GHH+71PZ/61KdSKBS6X01NTTnkkEOycOHCHv1e9rKX5fLLL9/o+1/96ldv8jxJFi1alHHjxuXss89OsVis9OMBAAAAVJ1gbRAsXpzMmJGMHZtMmlT6OWNGcuedA/fMhQsXZubMmfn5z3+eW265JWvXrs2RRx6Ztra2Xt+3995756mnnspTTz2VJUuW5OUvf3ne8pa3pKWlZYtr+tGPfpSjjjoqs2bNyuWXX25DCAAAAGBIE6wNsHnzkkMPTW64IenqKrV1dZXODzkkmT9/YJ77k5/8JKecckr23nvvvOpVr8qVV16ZZcuW5d577+31ffX19Zk0aVImTZqUvfbaK5/+9KezcuXK/O53v9uieq666qrMmDEjF198cc4///wtuhcAAABALRCsDaDFi5OZM5NiMeno6Hmto6PUfuaZAztybZ11I87Gjx/f5/esXr063/jGNzJu3LjsscceFT/7K1/5Sk499dT813/9V84666yK7wMAAABQS+qrXcBwdumlyYgRG4Zq6xsxIrnssmT69IGro6urK2effXamT5+effbZp9e+999/f8aOHZskWbVqVbbbbrt873vfS2NjY49+5513Xj75yU/2aFuzZk322muvHm0PPfRQzjrrrHz961/PSSed1A+fBgAAAKA2CNYGSHt7cv31L0z/3JSOjmTBglL/MWMGppaZM2fmgQceyOLFizfbd4899sgPf/jDJMlzzz2X733ve3n729+e2267LQceeGB3v49+9KM55ZRTerz3iiuuyB133NGjbeedd864cePyhS98Icccc0wmT5685R8IAAAAoAaYCjpAWls3H6qt09VV6j8QzjrrrNx444257bbbsvPOO2+2/6hRo7L77rtn9913z/7775+LLrooL3nJSzbYBXTHHXfs7rfutbFpptttt11++tOfpqGhIf/wD/+Qp556qr8+GgAAAEBVCdYGSGNjUtfH325dXal/fyoWiznrrLOyYMGC/OxnP8uuu+5a8b1GjBiR9vb2it+//fbb56c//WkaGxvzhje8IU8++WTF9wIAAACoFYK1ATJmTHLccUn9Zibb1tcnJ5zQ/9NAZ86cmf/+7//OVVddle222y7Lly/P8uXLNxuQdXR0dPd95JFH8tnPfja/+c1vctxxx21RPePGjcstt9yS7bffXrgGAAAADAuCtQE0a1bS2dl7n87O5Jxz+v/Z8+bNS0tLS97whjdk8uTJ3a/vfe97vb7vwQcf7O776le/Ot///vczb968vPe9793impqamvI///M/2XHHHXPYYYfliSee2OJ7AgAAAFRLoVgsFqtdRLW1tramqakpLS0tG+x++fzzz2fp0qXZdddds80225R97/nzkzPP3HB30Pr6Uqg2d25y+ulb+gmGjy39fQMAAABsid5yohczYm2AnX56smhRaVroujXX6upK54sWCdUAAAAAhqrNrABGf5g+vfRqby/t/tnY2P9rqgEAAAAwuARrg2jMGIEaAAAAwHBhKigAAAAAVECwBgAAAAAVEKwBAAAAULa2NW0pXFhI4cJC2ta0VbucqhCsAQAAAEAFBGsAAAAAUAG7ggIAAADQJ+tP+Wxbu/HjJGkY1TBoNVWTYA0AAACAPhk7Z+xG2ydeMrHHefGC4mCUU3Wmgg5T8+bNy3777ZfGxsY0NjZm2rRpuemmm3p9z6c+9akUCoXuV1NTUw455JAsXLiwR7+Xvexlufzyyzf6/le/+tWbPE+SRYsWZdy4cTn77LNTLG4d/yUDAAAAhicj1gZJ25q27lR35eyVAz4kcuedd85FF12Ul7/85SkWi/nmN7+Z4447Lr/61a+y9957b/J9e++9d376058mSZ555plccsklectb3pI//elPaWpq2qKafvSjH+Xtb397Pv7xj+f888/fonsBAAAAg2/l7JXdx21r27pHqjWf25yGkVvH9M/1GbE2TP3jP/5j3vzmN+flL395XvGKV+Rzn/tcxo4dm5///Oe9vq++vj6TJk3KpEmTstdee+XTn/50Vq5cmd/97ndbVM9VV12VGTNm5OKLLxaqAQAAwBDVMKrhhdd6QVrDyIYe17YWRqxtBTo7O3P11Venra0t06ZN6/P7Vq9enW984xsZN25c9thjj4qf/5WvfCWzZs3Kf/3Xf+Wkk06q+D4AAAAAtUSwNoCqvVPG/fffn2nTpuX555/P2LFjs2DBguy1116bfc/YsaUpq6tWrcp2222X733ve2lsbOzR77zzzssnP/nJHm1r1qzZ4P4PPfRQzjrrrHz9618XqgEAAADDimBtAFV7p4w99tgj9913X1paWnLNNdfk5JNPzsKFC3sN1/bYY4/88Ic/TJI899xz+d73vpe3v/3tue2223LggQd29/voRz+aU045pcd7r7jiitxxxx092nbeeeeMGzcuX/jCF3LMMcdk8uTJ/fcBAQAAgKppGNWw1ez+uSmCtWFs1KhR2X333ZMkBxxwQH7xi1/kS1/6Uv7jP/6jT+9Jkv333z/XXXddLr/88vz3f/93d/uOO+7Yo1+SjB8/foP7bbfddvnpT3+aN73pTfmHf/iH3HbbbcI1AAAAYFgQrA2gWtspo6urK6tXry77fSNGjEh7e3vFz91+++3z05/+NEceeWTe8IY35LbbbsuUKVMqvh8AAABALRCsDaBNrZ22bqeMgTR79uwcc8wx2WWXXfLcc8/lqquuyu23356bb7651/d1dHRk+fLlSV6YCvqb3/wm55133hbVM27cuNxyyy056qij8oY3vCG33367cA0AAAAY0gRrw9SKFSvy3ve+N0899VSampqy33775eabb86b3vSmXt/34IMPdk/V3HbbbbPbbrtl3rx5ee9737vFNTU1NeV//ud/cvTRR+ewww7L7bffnpe85CVbfF8AAACAaigUi8Wte5W5JK2trWlqakpLS8sGu18+//zzWbp0aXbddddss802FT+jbU1b92YGK2evHPARa0NVf/2+AQAAACrRW070YkasDRI7ZQAAAAAML3XVLgAAAAAAhiLBGgAAAABUQLAGAAAAABUQrPWRPR4Gh98zAAAAMFQI1jZjxIgRSZI1a9ZUuZKtw6pVq5IkI0eOrHIlAAAAAL2zK+hm1NfXZ9ttt83TTz+dkSNHpq5OFjkQisViVq1alRUrVmTcuHHdgSYAAABArRKsbUahUMjkyZOzdOnS/PGPf6x2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yVc55syZk4MOOijbbbddJkyYkOOPPz4PP/xwjz7PP/98Zs6cmR122CFjx47NiSeemObm5h59li1blmOPPTbbbrttJkyYkI9+9KPp6Ogo96MBAAAAQJ+VHaz96le/yi9/+cvu191335358+fnFa94Ra6++uqy7rVw4cLMnDkzP//5z3PLLbdk7dq1OfLII9PW1tbd55xzzskNN9yQq6++OgsXLsyTTz6ZGTNmdF/v7OzMsccemzVr1uSuu+7KN7/5zVx55ZU5//zzy/1oAADAMNW2pi2FCwspXFhI25q2zb9hkO4FwNBW9q6gm/KjH/0oX/jCF3L77bdXfI+nn346EyZMyMKFC3PooYempaUlO+20U6666qq87W1vS5L89re/zStf+cosWbIkr3vd63LTTTflLW95S5588slMnDgxSTJ//vycd955efrppzNq1KjNPteuoAAAMLy1rWnL2DljkyQrZ69Mw6iGmrgXALWnnJyo7BFrm7LHHnvkF7/4xRbdo6WlJUkyfvz4JMm9996btWvX5ogjjujus+eee2aXXXbJkiVLkiRLlizJvvvu2x2qJclRRx2V1tbWPPjggxt9zurVq9Pa2trjBQAAAADlKHvzgheHUMViMU899VQ+9alP5eUvf3nFhXR1deXss8/O9OnTs88++yRJli9fnlGjRmXcuHE9+k6cODHLly/v7rN+qLbu+rprGzNnzpxceOGFFdcKAADUvvWnabat3fhxkj6NOOvPewEwfJQdrI0bNy6FQqFHW7FYzNSpU/Od73yn4kJmzpyZBx54IIsXL674Hn01e/bszJo1q/u8tbU1U6dOHfDnAgAAg2fddM0Xm3hJz3+YL16w+dVx+vNeAAwfZQdrt912W4/zurq67LTTTtl9991TX1/27ZIkZ511Vm688cbccccd2XnnnbvbJ02alDVr1uTZZ5/tMWqtubk5kyZN6u7zv//7vz3ut27X0HV9Xmz06NEZPXp0RbUCAAAAQFJBsHbYYYdttP2pp57K5z73ufz7v/97n+9VLBbzoQ99KAsWLMjtt9+eXXfdtcf1Aw44ICNHjsytt96aE088MUny8MMPZ9myZZk2bVqSZNq0afnc5z6XFStWZMKECUmSW265JY2Njdlrr73K/XgAAMAwsXL2yu7jtrVt3aPLms9tTsPI8qZs9ue9ABg+ygrWHnzwwdx2220ZNWpU3vGOd2TcuHH585//nM997nOZP39+/u7v/q6sh8+cOTNXXXVVrr/++my33Xbda6I1NTVlzJgxaWpqyvve977MmjUr48ePT2NjYz70oQ9l2rRped3rXpckOfLII7PXXnvlPe95Ty6++OIsX748n/zkJzNz5kyj0gAAYCu2qfXOGkY2lL0WWn/eC4Dho8/B2g9/+MO87W1vS0dHR5Lk4osvzn/+53/mHe94Rw444IAsWLAgRx99dFkPnzdvXpLkDW94Q4/2b3zjGznllFOSJJdddlnq6upy4oknZvXq1TnqqKMyd+7c7r4jRozIjTfemDPOOCPTpk1LQ0NDTj755Hz6058uqxYAAAAAKEehWCz2aXXNv//7v8/06dPzmc98Jl/72tcya9as7L333vmv//qvHHTQQQNd54BqbW1NU1NTWlpa0tjYWO1yAACAfta2pq17A4KVs1du0Siz/rwXALWnnJyoz8FaU1NT7r333uy+++7p7OzM6NGj85Of/CRHHHFEvxRdTYI1AACGAoFO5VasXJGJX/zbumgfac6EsROqXBEAtaqcnKiurzd97rnnum82YsSIjBkzpuw11QAAAABguChr84Kbb745TU1NSZKurq7ceuuteeCBB3r0eetb39p/1QEAAABAjSorWDv55JN7nH/wgx/scV4oFNLZ2bnlVQEAAElK0z+7j9du/DjZ9K6VW7MVK1d0Hz+96umNHicxLRSAivV5jbXhzBprAADUqsKFhT71K16w1f/P+g343QFQiQFZYw0AAAAAeEFZU0EBAIDBtXL2yu7jtrVtmXjJ33a2PLc5DSNN/+xN80eau4+fXvV09pm3T5LkgTMeyE7b7lStsgAYRgRrAABQwza1dlrDyAbrqm3GptZO22nbnayrBkC/MBUUAAAAACogWAMAAACAClQ8FXTNmjVZsWJFurq6erTvsssuW1wUAACwoYZRDXawrNCEsRP87gDod2UHa4888kj++Z//OXfddVeP9mKxmEKhkM7Ozn4rDgAAAABqVdnB2imnnJL6+vrceOONmTx5cgqFwkDUBQAAAAA1rexg7b777su9996bPffccyDqAQAAAIAhoezNC/baa6/8+c9/HohaAAAAAGDIKDtY+/znP5+Pfexjuf322/OXv/wlra2tPV4AACRta9pSuLCQwoWFtK1pq3Y5AAAMgLKngh5xxBFJksMPP7xHu80LAAAAANialB2s3XbbbQNRBwAAAAAMKWUHa4cddthA1AEAMOStP+Wzbe3Gj5OkYVTDoNUEAMDAKTtYW2fVqlVZtmxZ1qxZ06N9v/322+KiAACGorFzxm60feIlE3ucFy8oDkY5AAAMsLKDtaeffjqnnnpqbrrppo1et8YaAAAAAFuDsoO1s88+O88++2zuvvvuvOENb8iCBQvS3Nycz372s/niF784EDUCAAwJK2ev7D5uW9vWPVKt+dzmNIw0/RMAYLgpO1j72c9+luuvvz4HHnhg6urq8tKXvjRvetOb0tjYmDlz5uTYY48diDoBAGreptZOaxjZYF01AIBhqK7cN7S1tWXChAlJku233z5PP/10kmTffffNL3/5y/6tDgAAAABqVNnB2h577JGHH344SfKqV70q//Ef/5Ennngi8+fPz+TJk/u9QAAAAACoRWVPBf2Xf/mXPPXUU0mSCy64IEcffXS+/e1vZ9SoUbnyyiv7uz4AgCGpYVSD3T8BAIa5QrFY3KL/xbdq1ar89re/zS677JIdd9yxv+oaVK2trWlqakpLS0saGxurXQ4AAAAAVVJOTlT2iLUX23bbbfOa17xmS28DAAAAAENKn4K1WbNm5TOf+UwaGhoya9asXvteeuml/VIYAAAAANSyPgVrv/rVr7J27dru400pFAr9UxUAAAAA1LgtXmNtOLDGGgAAAABJeTlR3SDVBAAAAADDSp+mgs6YMaPPN7z22msrLgYAAAAAhoo+jVhramrqfjU2NubWW2/NPffc03393nvvza233pqmpqYBKxQAAAAAakmfRqx94xvf6D4+77zz8o53vCPz58/PiBEjkiSdnZ0588wzrU8GAAAAwFaj7M0LdtpppyxevDh77LFHj/aHH344r3/96/OXv/ylXwscDDYvAAAAACAZ4M0LOjo68tvf/naD9t/+9rfp6uoq93YAAAAAMCT1aSro+k499dS8733vy2OPPZa///u/T5Lcfffdueiii3Lqqaf2e4EAAAAAUIvKDtYuueSSTJo0KV/84hfz1FNPJUkmT56cj370o/nIRz7S7wUCAAAb17amLWPnjE2SrJy9Mg2jGqpcEQBsXcpeY219ra2tSTLk1yWzxhoAAEORYA0A+l85OVHZI9bWJ4QCAAAAYGtV9uYFzc3Nec973pMpU6akvr4+I0aM6PECAAAGTtuathdea9teaF/b1uMaADDwyh6xdsopp2TZsmX513/910yePDmFQmEg6gIAADZi3dTPF5t4ycQe58ULKl7xBQDoo7KDtcWLF2fRokV59atfPQDlAAAAAMDQUHawNnXq1GzBfgcAAMAWWDl7Zfdx29q27pFqzec2p2GkzQsAYDCVvcba5Zdfno9//OP5wx/+MADlAAAAvWkY1fDCa70grWFkQ49rAMDAK3vE2j/90z9l1apV2W233bLttttm5MiRPa4/88wz/VYcAAAAANSqsoO1yy+/fADKAAAAAIChpVC0YFpaW1vT1NSUlpaWNDY2VrscAAAAAKqknJyozyPWWltb+9RPMAUAAADA1qDPwdq4ceNSKBQ2eb1YLKZQKKSzs7NfCgMAAACAWtbnYO22224byDoAABggbWvaMnbO2CTJytkr7RgJANBP+hysHXbYYQNZBwAAAAAMKXXVLgAAAAAAhqI+j1gDAGDoaFvT9sLx2o0fJzEtFABgCwjWAACGoXVrqr3YxEsm9jgvXlAcjHIAAIYlU0EBAAAAoAJGrAEADEMrZ6/sPm5b29Y9Uq353OY0jDT9EwCgP5QdrLW1teWiiy7KrbfemhUrVqSrq6vH9d///vf9VhwAAJXZ1NppDSMbrKsGANBPyg7W3v/+92fhwoV5z3vek8mTJ6dQKAxEXQAAAABQ08oO1m666ab86Ec/yvTp0weiHgAAAAAYEsoO1rbffvuMHz9+IGoBAGAANIxqsPsnAMAAKHtX0M985jM5//zzs2rVqoGoBwAAAACGhD6NWNt///17rKX26KOPZuLEiXnZy16WkSNH9uj7y1/+sn8rBAAAAIAa1Kdg7fjjjx/gMgAAAABgaCkUi8V+W3CjWCwOyV1CW1tb09TUlJaWljQ2Nla7HAAAAACqpJycqOw11r7whS9stL2zszPvfve7y70dAAAAAAxJFQVrX//613u0dXZ25p3vfGfuu+++/qoLAAAAAGpan9ZYW9+PfvSjHHnkkWlqasrb3va2dHR05B3veEd++9vf5rbbbhuIGgEAAACg5pQdrB100EH5wQ9+kOOPPz6jRo3K17/+9Tz66KO57bbbMnHixIGoEQAAAABqTtlTQZPkjW98Y771rW/lxBNPzNKlS7Nw4UKhGgAAAABblT6NWJsxY8ZG23faaaeMGzcup512Wnfbtdde2z+VAQAAAEAN61Ow1tTUtNH2o446ql+LAQAAAIChok/B2je+8Y2BrgMAAAAAhpSK1lgDAAAAgK1d2buCJsk111yT73//+1m2bFnWrFnT49ovf/nLfikMAAAAAGpZ2SPWrrjiipx66qmZOHFifvWrX+Xv//7vs8MOO+T3v/99jjnmmIGoEQBgyGlb05bChYUULiykbU1btcsBAGAAlB2szZ07N1/96lfz5S9/OaNGjcrHPvax3HLLLfnwhz+clpaWgagRAAAAAGpO2cHasmXL8vrXvz5JMmbMmDz33HNJkve85z35zne+07/VAQAAAECNKjtYmzRpUp555pkkyS677JKf//znSZKlS5emWCz2b3UAAENI25q2F15rX5j+2ba2rcc1AACGh7I3L3jjG9+YH/7wh9l///1z6qmn5pxzzsk111yTe+65JzNmzBiIGgEAhoSxc8ZutH3iJRN7nBcv8I+RAADDQdnB2le/+tV0dXUlSWbOnJkddtghd911V9761rfm9NNP7/cCAQAAAKAWFYr9NH/z2WefzY9//OO8+93v7o/bDarW1tY0NTWlpaUljY2N1S4HABii1p/m2ba2rXukWvO5zWkY2dB9rWFUwwbvBQCgNpSTE5W9xtqm/PGPf8x73vOe/rodAMCQ0zCq4YXX+kHayIYe1wAAGB76LVgDAAAAgK2JYA0AAAAAKlD25gUAAGxew6gGu38CAAxzfQ7Wrrjiil6vP/HEE1tcDAAAAAAMFX0O1i677LLN9tlll122qBgAAAAAGCr6HKwtXbp0IOsAAAAAgCHF5gUAAAAAUIE+BWvf/e53+3zDxx9/PHfeeWfFBQEAAADAUNCnYG3evHl55StfmYsvvjgPPfTQBtdbWlry4x//OO9+97vzmte8Jn/5y1/6vVAAAAAAqCV9WmNt4cKF+eEPf5gvf/nLmT17dhoaGjJx4sRss802+etf/5rly5dnxx13zCmnnJIHHnggEydOHOi6AQAAAKCqCsVisVjOG/785z9n8eLF+eMf/5j29vbsuOOO2X///bP//vunrm5oLtnW2tqapqamtLS0pLGxsdrlAAAAAFAl5eREfd4VdJ0dd9wxxx9/fKW1AQAAAMCwMDSHmAEAAABAlQnWAAAAAKACgjUAAAAAqIBgDQAAAAAqUHGwtmbNmjz88MPp6Ojoz3oAAAAAYEgoO1hbtWpV3ve+92XbbbfN3nvvnWXLliVJPvShD+Wiiy7q9wIBYDhqW9OWwoWFFC4spG1NW7XLAQAAKlB2sDZ79uz8f//f/5fbb78922yzTXf7EUccke9973v9WhwAAAAA1Kr6ct9w3XXX5Xvf+15e97rXpVAodLfvvffeeeyxx/q1OAAAAACoVWUHa08//XQmTJiwQXtbW1uPoA0A6Gn9KZ9tazd+nCQNoxoGrSYAAKByZQdrBx54YH70ox/lQx/6UJJ0h2lf+9rXMm3atP6tDgCGkbFzxm60feIlE3ucFy8oDkY5AADAFio7WPu3f/u3HHPMMfnNb36Tjo6OfOlLX8pvfvOb3HXXXVm4cOFA1AgAAAAANafsYO3ggw/Offfdl4suuij77rtv/ud//ievec1rsmTJkuy7774DUSMADAsrZ6/sPm5b29Y9Uq353OY0jDT9EwAAhpqyg7Uk2W233fKf//mf/V0LAAxrm1o7rWFkg3XVAABgCKor9w0//vGPc/PNN2/QfvPNN+emm27ql6IAAAAAoNaVHax9/OMfT2dn5wbtxWIxH//4x/ulKAAAAACodWVPBX3kkUey1157bdC+55575tFHH+2XogBguGsY1WD3TwAAGOLKHrHW1NSU3//+9xu0P/roo2losD4MAAAAAFuHsoO14447LmeffXYee+yx7rZHH300H/nIR/LWt761X4sDAAAAgFpVdrB28cUXp6GhIXvuuWd23XXX7LrrrnnlK1+ZHXbYIZdccslA1AgA0K/a1rSlcGEhhQsLaVvTVu1yAAAYoiqaCnrXXXflRz/6Uc4888x85CMfya233pqf/exnGTduXFn3uuOOO/KP//iPmTJlSgqFQq677roe10855ZQUCoUer6OPPrpHn2eeeSYnnXRSGhsbM27cuLzvfe/LypUry/1YAAAAAFCWsjcvSJJCoZAjjzwyRx555BY9vK2tLa961avyz//8z5kxY8ZG+xx99NH5xje+0X0+evToHtdPOumkPPXUU7nllluydu3anHrqqTnttNNy1VVXbVFtAAAAANCbPgVrV1xxRU477bRss802ueKKK3rt++EPf7jPDz/mmGNyzDHH9Npn9OjRmTRp0kavPfTQQ/nJT36SX/ziFznwwAOTJF/+8pfz5je/OZdcckmmTJnS51oAgOFt/SmfbWs3fpyU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DfSaa8rvP1Be+tJk2bJNX99ll+SPfxy45wMAANSCcnKiml1jbenSpVm+fHmOOOKI7rampqa89rWvzZIlS5IkS5Ysybhx47pDtSQ54ogjUldXl7vvvnuT9169enVaW1t7vAD6Q3t7cv31vYdkSen6ggXJM8/0vf+11yY335w88UT/1bvOP/1T76FaUrpu5BoAAMALajZYW758eZJk4sSJPdonTpzYfW358uWZ8KKVvuvr6zN+/PjuPhszZ86cNDU1db+mTp3az9UDW6vW1hfWVNucrq7kySf73r9YTI4+Otl552SbbZK/DebtF1df3bd+3/9+/z0TAABgqKvZYG0gzZ49Oy0tLd2vxx9/vNolAcNEY2NpTbK+qKtLpkzpe//1rV6dfPGLyUEHlf/eF3v00VJo1xddXTY0AAAAWKdmg7VJkyYlSZqbm3u0Nzc3d1+bNGlSVrxoC72Ojo4888wz3X02ZvTo0WlsbOzxAugPY8aU1kKrr++9X319csIJyfjxfeu/Kffcs+Uj137964HtDwAAMFzVbLC26667ZtKkSbn11lu721pbW3P33Xdn2rRpSZJp06bl2Wefzb333tvd52c/+1m6urry2te+dtBrBkiSWbOSzs7e+3R2Juec0/f+vbniisrfmyT77Tew/QEAAIarqgZrK1euzH333Zf77rsvSWnDgvvuuy/Lli1LoVDI2Wefnc9+9rP54Q9/mPvvvz/vfe97M2XKlO6dQ1/5ylfm6KOPzgc+8IH87//+b+68886cddZZeec739nnHUEB+tvBB5c2A+jNO9+ZTJ/+Qv+5c5NCobKRa2vXbtmGBrvvXnp2X9TVlfoDAABQ5WDtnnvuyf7775/9998/STJr1qzsv//+Of/885MkH/vYx/KhD30op512Wg466KCsXLkyP/nJT7LNNtt03+Pb3/529txzzxx++OF585vfnIMPPjhf/epXq/J5AJJk8eLke9/rvc93v5vceecL56efnixaVJoWWsmaaw88UP571vf2t/et3zvesWXPAQAAGE4KxWJfl6wevlpbW9PU1JSWlhbrrQFbbMaM5IYbko6OTfepry+FaNdcs+G19vbkTW/qGbxtzq9+lbz61WWX2sNLX5osW7bp67vskvzxj1v2DAAAgFpXTk5Us2usAQxF7e3J9df3HqolpesLFpT6b8xdd5X33F126Vtt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oVDo8dpzzz27rz///POZOXNmdthhh4wdOzYnnnhimpubq1gxW2rx4mTmzKRY7DkiKimdF4vJmWcmd95ZnfqGoylTyuv/lreU1mNbuTJZvrz085prjCQEAABg61PTwVqS7L333nnqqae6X4sXL+6+ds455+SGG27I1VdfnYULF+bJJ5/MjBkzqlgtW+rSS5MRI3rvM2JEctllg1PPi7W3J83Nw2vNt/Hjk8mT+9Z3ypRS/2TzI+EAAABguKv5YK2+vj6TJk3qfu24445JkpaWlnz961/PpZdemje+8Y054IAD8o1vfCN33XVXfv7zn1e5airR3l5aU+3FI9VerKMjWbBgcMOtxYuTGTOSsWOTSZNKP2fMGD4j5z75yf7tBwAAAFuDmg/WHnnkkUyZMiV/93d/l5NOOinLli1Lktx7771Zu3ZtjjjiiO6+e+65Z3bZZZcsWbKk13uuXr06ra2tPV5UX2vrC2uqbU5XV6n/YJg3Lzn00OG95tuZZybvelfvfd71ruSMMwanHgAAABgKajpYe+1rX5srr7wyP/nJTzJv3rwsXbo0hxxySJ577rksX748o0aNyrhx43q8Z+LEiVm+fHmv950zZ06ampq6X1OnTh3AT0FfNTa+sCD+5tTVlfoPtK1pzberrirt6vniNdemTCm1X3VVdeoCAACAWlVf7QJ6c8wxx3Qf77fffnnta1+bl770pfn+97+fMVuwsNPs2bMza9as7vPW1lbhWg0YM6a0u+QNN/Q+HbS+vtRvMNb2WrfmW2/1rFvzbTgs3n/GGaXXM8+Udgtdf001AAAAoKeaHrH2YuPGjcsrXvGKPProo5k0aVLWrFmTZ599tkef5ubmTJo0qdf7jB49Oo2NjT1e1IZZs5LOzt77dHYm55wz8LXU8ppvA238+GSffYRqAAAA0JshFaytXLkyjz32WCZPnpwDDjggI0eOzK233tp9/eGHH86yZcsybdq0KlbJljj44NK0w0KhNDJtffX1pfa5cwdndFitrvkGAAAA1IaaDtbOPffcLFy4MH/4wx9y11135YQTTsiIESPyrne9K01NTXnf+96XWbNm5bbbbsu9996bU089NdOmTcvrXve6apfOFjj99GTRotJ0z3VrrtXVlc4XLSpdHwy1uOYbAAAAUDtqeo21P/3pT3nXu96Vv/zlL9lpp51y8MEH5+c//3l22mmnJMlll12Wurq6nHjiiVm9enWOOuqozJ07t8pV0x+mTy+92ttLI8EaGwdnTbX11eKabwAAAEDtKBSLxWK1i6i21tbWNDU1paWlxXpr9LB4cXLooaXdPzelUCiNpBsOmxcAAADA1q6cnKimp4JCtdXSmm8AAABAbRGswWbUyppvAAAAQG2p6TXWoFbUwppvAAAAQG0RrEEZxowRqAEAAAAlpoICAAAAQAUEawAAAABQAcHaMNTenjQ3l34CAAAAMDAEa8PI4sXJjBnJ2LHJpEmlnzNmJHfeWe3KAAAAAIYfwdowMW9ecuihyQ03JF1dpbaurtL5IYck8+dXtz4AAACA4UawNgwsXpzMnJkUi0lHR89rHR2l9jPPNHINAAAAoD8J1oaBSy9NRozovc+IEclllw1OPQAAAABbA8HaENfenlx//YYj1V6soyNZsMCGBgAAAAD9RbA2xLW2vrCm2uZ0dZX6AwAAALDlBGtDXGNjUtfH/xTr6kr9AQAAANhygrUhbsyY5Ljjkvr63vvV1ycnnFDqDwAAAMCWE6wNA7NmJZ2dvffp7EzOOWdw6gEAAADYGgjWhoGDD07mzk0KhQ1HrtXXl9rnzk2mT69OfQAAAADDkWBtmDj99GTRotK00HVrrtXVlc4XLSpdBwAAAKD/bGZlLoaS6dNLr/b20u6fjY3WVAMAAAAYKIK1YWjMGIEaAAAAwEAzFRQAAAAAKiBYAwAAAIAKCNYAAAAAoAKCNQAAAACogGANAAAAACogWAMAAACACgjWAAAAAKACgjUAAAAAqIBgDQAAAAAqIFgDAAAAgAoI1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAIAKCNYAAAAAoAKCNQAAAACogGANAAAAACogWAMAAACACgjWAAAAAKACgjUAAAAAqIBgDQAAAAAqIFgDAAAAgAoI1gAAAACgAoI1AAAAAKiAYA0AAAAAKiBYAwAAAIAK1Fe7gFpQLBaTJK2trVWuBAAAAIBqWpcPrcuLeiNYS/Lcc88lSaZOnVrlSgAAAACoBc8991yampp67VMo9iV+G+a6urry5JNPZrvttkuhUKh2ObCB1tbWTJ06NY8//ngaGxurXQ4MGN91tga+52wtfNfZGvies7XY2r7rxWIxzz33XKZMmZK6ut5XUTNiLUldXV123nnnapcBm9XY2LhV/BED33W2Br7nbC1819ka+J6ztdiavuubG6m2js0LAAAAAKACgjUAAAAAqIBgDYaA0aNH54ILLsjo0aOrXQoMKN91tga+52wtfNfZGvies7XwXd80mxcAAAAAQAWMWAMAAACACgjWAAAAAKACgjUAAAAAqIBgDQAAAAAqIFiDQXLHHXfkH//xHzNlypQUCoVcd911Pa4Xi8Wcf/75mTx5csaMGZMjjjgijzzySI8+zzzzTE466aQ0NjZm3Lhxed/73peVK1f26PPrX/86hxxySLbZZptMnTo1F1988UB/NOhhc9/1U045JYVCocfr6KOP7tHHd51aN2fOnBx00EHZbrvtMmHChBx//PF5+OGHe/R5/vnnM3PmzOywww4ZO3ZsTjzxxDQ3N/fos2zZshx77LHZdtttM2HChHz0ox9NR0dHjz633357XvOa12T06NHZfffdc+WVVw70x4Mkffuev+ENb9jgb/rpp5/eo4/vObVu3rx52W+//dLY2JjGxsZMmzYtN910U/d1f88ZDjb3Pff3vHKCNRgkbW1tedWrXpWvfOUrG71+8cUX54orrsj8+fNz9913p6GhIUcddVSef/757j4nnXRSHnzwwdxyyy258cYbc8cdd+S0007rvt7a2pojjzwyL33pS3PvvffmC1/4Qj71qU/lq1/96oB/Plhnc9/1JDn66KPz1FNPdb++853v9Ljuu06tW7hwYWbOnJmf//znueWWW7J27doceeSRaWtr6+5zzjnn5IYbbsjVV1+dhQsX5sknn8yMGTO6r3d2dubYY4/NmjVrctddd+Wb3/xmrrzyypx//vndfZYuXZpjjz02//AP/5D77rsvZ599dt7//vfn5ptvHtTPy9apL9/zJPnABz7Q42/6+v/Q4XvOULDzzjvnoosuyr333pt77rknb3zjG3PcccflwQcfTOLvOcPD5r7nib/nFSsCgy5JccGCBd3nXV1dxUmTJhW/8IUvdLc9++yzxdGjRxe/853vFIvFYvE3v/lNMUnxF7/4RXefm266qVgoFIpPPPFEsVgsFufOnVvcfvvti6tXr+7uc9555xX32GOPAf5EsHEv/q4Xi8XiySefXDzuuOM2+R7fdYaiFStWFJMUFy5cWCwWS3/DR44cWbz66qu7+zz00EPFJMUlS5YUi8Vi8cc//nGxrq6uuHz58u4+8+bNKzY2NnZ/tz/2sY8V99577x7P+qd/+qfiUUcdNdAfCTbw4u95sVgsHnbYYcV/+Zd/2eR7fM8Zqrbffvvi1772NX/PGdbWfc+LRX/Pt4QRa1ADli5dmuXLl+eII47obmtqasprX/vaLFmyJEmyZMmSjBs3LgceeGB3nyOOOCJ1dXW5++67u/sceuihGTVqVHefo446Kg8//HD++te/DtKngc27/fbbM2HChOyxxx4544wz8pe//KX7mu86Q1FLS0uSZPz48UmSe++9N2vXru3xd33PPffMLrvs0uPv+r777puJEyd29znqqKPS2tra/a/HS5Ys6XGPdX3W3QMG04u/5+t8+9vfzo477ph99tkns2fPzqpVq7qv+Z4z1HR2dua73/1u2traMm3aNH/PGZZe/D1fx9/zytRXuwAgWb58eZL0+CO17nzdteXLl2fChAk9rtfX12f8+PE9+uy6664b3GPdte23335A6odyHH300ZkxY0Z23XXXPPbYY/nEJz6RY445JkuWLMmIESN81xlyurq6cvbZZ2f69OnZZ599kpS+h6NGjcq4ceN69H3x3/WN/d1fd623Pq2trWlvb8+YMWMG4iPBBjb2PU+Sd7/73XnpS1+aKVOm5Ne//nXOO++8PPzww7n22muT+J4zdNx///2ZNm1ann/++YwdOzYLFizIXnvtlfvuu8/fc4aNTX3PE3/Pt4RgDYBB9c53vrP7eN99981+++2X3XbbLbfffnsOP/zwKlYGlZk5c2YeeOCBLF68uNqlwIDZ1Pd8/fUv991330yePDmHH354Hnvssey2227/f3t3HxRV9cYB/Lu+8Oa6CwiI+IIQm8pACYw6mwamCWoqqY0NowyZWmmMmeakk5j5kpKp4ZRpvqBjpk4WajmBKKC4JomxoDO0Aq6hyZCuoqggCM/vD3/eaePV1XzB72fmzrD3Pvfcc+49c/54uOeeh11NIpv16NEDRqMRV69exa5duxATE4NDhw496moRPVAN9XN/f3+O5/eBU0GJHgOenp4AUGd1odLSUuWYp6cn/v77b6vjt2/fxuXLl61i6ivjn9cgetz4+vrCzc0NhYWFANjX6ckSGxuLn3/+Genp6ejSpYuy39PTE1VVVSgrK7OK//e43lQ/bihGo9G02P/60uOnoX5en379+gGA1ZjOfk5PAjs7O/j5+SEkJARLly7F888/j4SE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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_scatter_chart(df8,\"Hebbal\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Based on above charts we can see that data points highlighted in red below are outliers and they are being removed due to remove_bhk_outliers function" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Count')" ] }, "execution_count": 108, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABmIAAANBCAYAAADzwKFIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTMElEQVR4nOz9e5zWdb3v/z+HwwygziAqDCQCnlAUPBbOWmmaxIDYyqW1M01Z5iHdYCnlgbXNU6twaZpWpqvtTlp76VLbOzuAQgihqXiiEPDATsONLR1wazAeOV6/P9aP6+skaihvhsP9frtdt+a6Pu/rc70+zNw+zfToc101lUqlEgAAAAAAADa4Du09AAAAAAAAwJZKiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAACikU3sPsDlYs2ZNXnjhhWy33Xapqalp73EAAAAAAIB2VKlU8uqrr6ZPnz7p0OG9r3kRYv4KL7zwQvr27dveYwAAAAAAAJuQ559/PjvvvPN7rhFi/grbbbddkv/8B62vr2/naQAAAAAAgPbU2tqavn37VvvBexFi/gpr346svr5eiAEAAAAAAJLkr/o4k/d+4zIAAAAAAAA+MCEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgkE7tPQCwdet/4eT2HoEN5LkrRrX3CAAAAACwyXFFDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCHtGmJuuOGGDBkyJPX19amvr09TU1Puvvvu6vbDDz88NTU1bW5nnnlmm30sWrQoo0aNSrdu3dKzZ8+cd955WbVqVZs1M2fOzIEHHpi6urrsvvvumThx4sY4PAAAAAAAYCvXqT1ffOedd84VV1yRPfbYI5VKJT/5yU/ymc98Jr///e+zzz77JElOP/30XH755dXndOvWrfr16tWrM2rUqDQ2NubBBx/Miy++mJNPPjmdO3fOt7/97STJwoULM2rUqJx55pm55ZZbMn369Jx22mnp3bt3mpubN+4BAwAAAAAAW5WaSqVSae8h3q5Hjx656qqrcuqpp+bwww/P/vvvn2uvvXada+++++4cffTReeGFF9KrV68kyY033pgLLrggL730Umpra3PBBRdk8uTJmT9/fvV5xx9/fJYuXZopU6b8VTO1tramoaEhy5YtS319/Yc+RuD/0//Cye09AhvIc1eMau8RAAAAAGCjWJ9usMl8Rszq1atz22235fXXX09TU1P18VtuuSU77rhj9t1334wfPz5vvPFGddusWbMyePDgaoRJkubm5rS2tuaJJ56orhk2bFib12pubs6sWbPedZbly5entbW1zQ0AAAAAAGB9tetbkyXJvHnz0tTUlLfeeivbbrtt7rzzzgwaNChJcsIJJ6Rfv37p06dP5s6dmwsuuCALFizIz372syRJS0tLmwiTpHq/paXlPde0trbmzTffTNeuXd8x04QJE3LZZZdt8GMFAAAAAAC2Lu0eYgYOHJg5c+Zk2bJl+V//639l9OjRuffeezNo0KCcccYZ1XWDBw9O7969c+SRR+bZZ5/NbrvtVmym8ePHZ9y4cdX7ra2t6du3b7HXAwAAAAAAtkzt/tZktbW12X333XPQQQdlwoQJ2W+//XLdddetc+3QoUOTJM8880ySpLGxMYsXL26zZu39xsbG91xTX1+/zqthkqSuri719fVtbgAAAAAAAOur3UPMX1qzZk2WL1++zm1z5sxJkvTu3TtJ0tTUlHnz5mXJkiXVNdOmTUt9fX317c2ampoyffr0NvuZNm1am8+hAQAAAAAAKKFd35ps/PjxGTlyZHbZZZe8+uqrufXWWzNz5sxMnTo1zz77bG699dYcddRR2WGHHTJ37tyce+65OeywwzJkyJAkyfDhwzNo0KCcdNJJufLKK9PS0pKLLrooY8aMSV1dXZLkzDPPzA9+8IOcf/75+dKXvpQZM2bkjjvuyOTJk9vz0AEAAAAAgK1Au4aYJUuW5OSTT86LL76YhoaGDBkyJFOnTs2nPvWpPP/887nnnnty7bXX5vXXX0/fvn1z3HHH5aKLLqo+v2PHjpk0aVLOOuusNDU1ZZtttsno0aNz+eWXV9cMGDAgkydPzrnnnpvrrrsuO++8c2666aY0Nze3xyEDAAAAAABbkZpKpVJp7yE2da2trWloaMiyZct8XgxsYP0vdHXaluK5K0a19wgAAAAAsFGsTzfY5D4jBgAAAAAAYEshxAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABQixAAAAAAAABTSriHmhhtuyJAhQ1JfX5/6+vo0NTXl7rvvrm5/6623MmbMmOywww7Zdtttc9xxx2Xx4sVt9rFo0aKMGjUq3bp1S8+ePXPeeedl1apVbdbMnDkzBx54YOrq6rL77rtn4sSJG+PwAAAAAACArVy7hpidd945V1xxRWbPnp3HHnssn/zkJ/OZz3wmTzzxRJLk3HPPza9+9av89Kc/zb333psXXnghxx57bPX5q1evzqhRo7JixYo8+OCD+clPfpKJEyfm4osvrq5ZuHBhRo0alSOOOCJz5szJOeeck9NOOy1Tp07d6McLAAAAAABsXWoqlUqlvYd4ux49euSqq67KZz/72ey000659dZb89nPfjZJ8vTTT2fvvffOrFmzcsghh+Tuu+/O0UcfnRdeeCG9evVKktx444254IIL8tJLL6W2tjYXXHBBJk+enPnz51df4/jjj8/SpUszZcqUv2qm1tbWNDQ0ZNmyZamvr9/wBw1bsf4XTm7vEdhAnrtiVHuPAAAAAAAbxfp0g03mM2JWr16d2267La+//nqampoye/bsrFy5MsOGDauu2WuvvbLLLrtk1qxZSZJZs2Zl8ODB1QiTJM3NzWltba1eVTNr1qw2+1i7Zu0+1mX58uVpbW1tcwMAAAAAAFhf7R5i5s2bl2233TZ1dXU588wzc+edd2bQoEFpaWlJbW1tunfv3mZ9r1690tLSkiRpaWlpE2HWbl+77b3WtLa25s0331znTBMmTEhDQ0P11rdv3w1xqAAAAAAAwFam3UPMwIEDM2fOnDz88MM566yzMnr06Dz55JPtOtP48eOzbNmy6u35559v13kAAAAAAIDNU6f2HqC2tja77757kuSggw7Ko48+muuuuy6f//zns2LFiixdurTNVTGLFy9OY2NjkqSxsTGPPPJIm/0tXry4um3tf6597O1r6uvr07Vr13XOVFdXl7q6ug1yfAAAAAAAwNar3a+I+Utr1qzJ8uXLc9BBB6Vz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iAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAAChEiAEAAAAAACikXUPMhAkT8tGPfjTbbbddevbsmWOOOSYLFixos+att97KmDFjssMOO2TbbbfNcccdl8WLF7dZs2jRoowaNSrdunVLz549c95552XVqlVt1sycOTMHHnhg6urqsvvuu2fixImlDw8AAAAAANjKtWuIuffeezNmzJg89NBDmTZtWlauXJnhw4fn9ddfr64599xz86tf/So//elPc++99+aFF17IscceW92+evXqjBo1KitWrMiDDz6Yn/zkJ5k4cWIuvvji6pqFCxdm1KhROeKIIzJnzpycc845Oe200zJ16tSNerwAAAAAAMDWpaZSqVTae4i1XnrppfTs2TP33ntvDjvssCxbtiw77bRTbr311nz2s59Nkjz99NPZe++9M2vWrBxyyCG5++67c/TRR+eFF15Ir169kiQ33nhjLrjggrz00kupra3NBRdckMmTJ2f+/PnV1zr++OOzdOnSTJky5X3nam1tTUNDQ5YtW5b6+voyBw9bqf4XTm7vEdhAnrti1EZ9PT87W46N/bMDAAAA8GGtTzfYpD4jZtmyZUmSHj16JElmz56dlStXZtiwYdU1e+21V3bZZZfMmjUrSTJr1qwMHjy4GmGSpLm5Oa2trXniiSeqa96+j7Vr1u7jLy1fvjytra1tbgAAAAAAAOtrkwkxa9asyTnnnJO//du/zb777pskaWlpSW1tbbp3795mba9evdLS0lJd8/YIs3b72m3vtaa1tTVvvvnmO2aZMGFCGhoaqre+fftukGMEAAAAAAC2LptMiBkzZkzmz5+f2267rb1Hyfjx47Ns2bLq7fnnn2/vkQAAAAAAgM1Qp/YeIEnGjh2bSZMm5b777svOO+9cfbyxsTErVqzI0qVL21wVs3jx4jQ2NlbXPPLII232t3jx4uq2tf+59rG3r6mvr0/Xrl3fMU9dXV3q6uo2yLEBAAAAAABbr3a9IqZSqWTs2LG58847M2PGjAwYMKDN9oMOOiidO3fO9OnTq48tWLAgixYtSlNTU5Kkqakp8+bNy5IlS6prpk2blvr6+gwaNKi65u37WLtm7T4AAAAAAABKaNcrYsaMGZNbb701v/jFL7LddttVP9OloaEhXbt2TUNDQ0499dSMGzcuPXr0SH19fc4+++w0NTXlkEMOSZIMHz48gwYNykknnZQrr7wyLS0tueiiizJmzJjqVS1nnnlmfvCDH+T888/Pl770pcyYMSN33HFHJk+e3G7HDgAAAAAAbPna9YqYG264IcuWLcvhhx+e3r17V2+33357dc13v/vdHH300TnuuONy2GGHpbGxMT/72c+q2zt27JhJkyalY8eOaWpqyhe/+MWcfPLJufzyy6trBgwYkMmTJ2fatGnZb7/9cvXVV+emm25Kc3PzRj1eAAAAAABg61JTqVQq7T3Epq61tTUNDQ1ZtmxZ6uvr23sc2KL0v9CVaVuK564YtVFfz8/OlmNj/+wAAAAAfFjr0w0+0BUxu+66a15++eV3PL506dLsuuuuH2SXAAAAAAAAW5wPFGKee+65rF69+h2PL1++PP/xH//xoYcCAAAAAADYEnRan8W//OUvq19PnTo1DQ0N1furV6/O9OnT079//w02HAAAAAAAwOZsvULMMccckySpqanJ6NGj22zr3Llz+vfvn6uvvnqDDQcAAAAAALA5W68Qs2bNmiTJgAED8uijj2bHHXcsMhQAAAAAAMCWYL1CzFoLFy7c0HMAAAAAAABscT5QiEmS6dOnZ/r06VmyZEn1Spm1fvzjH3/owQAAAAAAADZ3HyjEXHbZZbn88stz8MEHp3fv3qmpqdnQcwEAAAAAAGz2PlCIufHGGzNx4sScdNJJG3oeAAAAAACALUaHD/KkFStW5G/+5m829CwAAAAAAABblA8UYk477bTceuutG3oWAAAAAACALcoHemuyt956Kz/60Y9yzz33ZMiQIencuXOb7ddcc80GGQ4AAAAAAGBz9oFCzNy5c7P//vsnSebPn99mW01NzYceCgAAAAAAYEvwgULMb37zmw09BwAAAAAAwBbnA31GDAAAAAAAAO/vA10Rc8QRR7znW5DNmDHjAw8EAAAAAACwpfhAIWbt58OstXLlysyZMyfz58/P6NGjN8RcAAAAAAAAm70PFGK++93vrvPxSy+9NK+99tqHGggAAAAAAGBLsUE/I+aLX/xifvzjH2/IXQIAAAAAAGy2NmiImTVrVrp06bIhdwkAAAAAALDZ+kBvTXbssce2uV+pVPLiiy/mscceyze+8Y0NMhgAAAAAAMDm7gOFmIaGhjb3O3TokIEDB+byyy/P8OHDN8hgAAAAAAAAm7sPFGJuvvnmDT0HAAAAAADAFucDhZi1Zs+enaeeeipJss8+++SAAw7YIEMBAAAAAABsCT5QiFmyZEmOP/74zJw5M927d0+SLF26NEcccURuu+227LTTThtyRgAAAAAAgM1Shw/ypLPPPjuvvvpqnnjiibzyyit55ZVXMn/+/LS2tuYrX/nKhp4RAAAAAABgs/SBroiZMmVK7rnnnuy9997VxwYNGpTrr78+w4cP32DDAQAAAAAAbM4+0BUxa9asSefOnd/xeOfOnbNmzZoPPRQAAAAAAMCW4AOFmE9+8pP56le/mhdeeKH62H/8x3/k3HPPzZFHHrnBhgMAAAAAANicfaAQ84Mf/CCtra3p379/dtttt+y2224ZMGBAWltb8/3vf39DzwgAAAAAALBZ+kCfEdO3b9/87ne/yz333JOnn346SbL33ntn2LBhG3Q4AAAAAACAzdl6XREzY8aMDBo0KK2trampqcmnPvWpnH322Tn77LPz0Y9+NPvss09++9vflpoVAAAAAABgs7JeIebaa6/N6aefnvr6+ndsa2hoyJe//OVcc801G2w4AAAAAACAzdl6hZjHH388I0aMeNftw4cPz+zZsz/0UAAAAAAAAFuC9QoxixcvTufOnd91e6dOnfLSSy996KEAAAAAAAC2BOsVYj7ykY9k/vz577p97ty56d2794ceCgAAAAAAYEuwXiHmqKOOyje+8Y289dZb79j25ptv5pJLLsnRRx+9wYYDAAAAAADYnHVan8UXXXRRfvazn2XPPffM2LFjM3DgwCTJ008/neuvvz6rV6/Of/tv/63IoAAAAAAAAJub9QoxvXr1yoMPPpizzjor48ePT6VSSZLU1NSkubk5119/fXr16lVkUAAAAAAAgM3NeoWYJOnXr1/uuuuu/PnPf84zzzyTSqWSPfbYI9tvv32J+QAAAAAAADZb6x1i1tp+++3z0Y9+dEPOAgAAAAAAsEXp0N4DAAAAAAAAbKmEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgEKEGAAAAAAAgELaNcTcd999+fSnP50+ffqkpqYmP//5z9ts/4d/+IfU1NS0uY0YMaLNmldeeSUnnnhi6uvr071795x66ql57bXX2qyZO3duDj300HTp0iV9+/bNlVdeWfrQAAAAAAAA2jfEvP7669lvv/1y/fXXv+uaESNG5MUXX6ze/v3f/73N9hNPPDFPPPFEpk2blkmTJuW+++7LGWecUd3e2tqa4cOHp1+/fpk9e3auuuqqXHrppfnRj35U7LgAAAAAAACSpFN7vvjIkSMzcuTI91xTV1eXxsbGdW576qmnMmXKlDz66KM5+OCDkyTf//73c9RRR+U73/lO+vTpk1tuuSUrVqzIj3/849TW1mafffbJnDlzcs0117QJNgAAAAAAABvaJv8ZMTNnzkzPnj0zcODAnHXWWXn55Zer22bNmpXu3btXI0ySDBs2LB06dMjDDz9cXXPYYYeltra2uqa5uTkLFizIn//853W+5vLly9Pa2trmBgAAAAAAsL426RAzYsSI/Ou//mumT5+ef/7nf869996bkSNHZvXq1UmSlpaW9OzZs81zOnXqlB49eqSlpaW6plevXm3WrL2/ds1fmjBhQhoaGqq3vn37buhDAwAAAAAAtgLt+tZk7+f444+vfj148OAMGTIku+22W2bOnJkjjzyy2OuOHz8+48aNq95vbW0VYwAAAAAAgPW2SV8R85d23XXX7LjjjnnmmWeSJI2NjVmyZEmbNatWrcorr7xS/VyZxsbGLF68uM2atfff7bNn6urqUl9f3+YGAAAAAACwvjarEPOnP/0pL7/8cnr37p0kaWpqytKlSzN79uzqmhkzZmTNmjUZOnRodc19992XlStXVtdMmzYtAwcOzPbbb79xDwAAAAAAANiqtGuIee211zJnzpzMmTMnSbJw4cLMmTMnixYtymuvvZbzzjsvDz30UJ577rlMnz49n/nMZ7L77runubk5SbL33ntnxIgROf300/PII4/kgQceyNixY3P88cenT58+SZITTjghtbW1OfXUU/PEE0/k9ttvz3XXXdfmrccAAAAAAABKaNcQ89hjj+WAAw7IAQcckCQZN25cDjjggFx88cXp2LFj5s6dm7/7u7/LnnvumVNPPTUHHXRQfvvb36aurq66j1tuuSV77bVXjjzyyBx11FH5+Mc/nh/96EfV7Q0NDfn1r3+dhQsX5qCDDsrXvva1XHzxxTnjjDM2+vECAAAAAABbl07t+eKHH354KpXKu26fOnXq++6jR48eufXWW99zzZAhQ/Lb3/52vecDAAAAAAD4MDarz4gBAAAAAADYnAgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhQgxAAAAAAAAhbRriLnvvvvy6U9/On369ElNTU1+/vOft9leqVRy8cUXp3fv3unatWuGDRuWP/zhD23WvPLKKznxxBNTX1+f7t2759RTT81rr73WZs3cuXNz6KGHpkuXLunbt2+uvPLK0ocGAAAAAADQviHm9ddfz3777Zfrr79+nduvvPLKfO9738uNN96Yhx9+ONtss02am5vz1ltvVdeceOKJeeKJJzJt2rRMmjQp9913X84444zq9tbW1gwfPjz9+vXL7Nmzc9VVV+XSSy/Nj370o+LHBwAAAAAAbN06teeLjxw5MiNHjlzntkqlkmuvvTYXXXRRPvOZzyRJ/vVf/zW9evXKz3/+8xx//PF56qmnMmXKlDz66KM5+OCDkyTf//73c9RRR+U73/lO+vTpk1tuuSUrVqzIj3/849TW1mafffbJnDlzcs0117QJNgAAAAAAABvaJvsZMQsXLkxLS0uGDRtWfayhoSFDhw7NrFmzkiSzZs1K9+7dqxEmSYYNG5YOHTrk4Ycfrq457LDDUltbW13T3NycBQsW5M9//vM6X3v58uVpbW1tcwMAAAAAAFhfm2yIaWlpSZL06tWrzeO9evWqbmtpaUnPnj3bbO/UqVN69OjRZs269vH21/hLEyZMSENDQ/XWt2/fD39AAAAAAADAVmeTDTHtafz48Vm2bFn19vzzz7f3SAAAAAAAwGZokw0xjY2NSZLFixe3eXzx4sXVbY2NjVmyZEmb7atWrcorr7zSZs269vH21/hLdXV1qa+vb3MDAAAAAABYX5tsiBkwYEAaGxszffr06mOtra15+OGH09TUlCRpamrK0qVLM3v27OqaGTNmZM2aNRk6dGh1zX333ZeVK1dW10ybNi0DBw7M9ttvv5GOBgAAAAAA2Bq1a4h57bXXMmfOnMyZMydJsnDhwsyZMyeLFi1KTU1NzjnnnPzTP/1TfvnLX2bevHk5+eST06dPnxxzzDFJkr333jsjRozI6aefnkceeSQPPPBAxo4dm+OPPz59+vRJkpxwwgmpra3NqaeemieeeCK33357rrvuuowbN66djhoAAAAAANhadGrPF3/sscdyxBFHVO+vjSOjR4/OxIkTc/755+f111/PGWeckaVLl+bjH/94pkyZki5dulSfc8stt2Ts2LE58sgj06FDhxx33HH53ve+V93e0NCQX//61xkzZkwOOuig7Ljjjrn44otzxhlnbLwDBQAAAAAAtko1lUql0t5DbOpaW1vT0NCQZcuW+bwY2MD6Xzi5vUdgA3nuilEb9fX87Gw5NvbPDgAAAMCHtT7dYJP9jBgAAAAAAIDNnRADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQSKf2HoDNX/8LJ7f3CGwgz10xqr1HAAAAAADYorgiBgAAAAAAoBAhBgAAAAAAoBAhBgAAAAAAoBAhBgAAAAAAoBAhBgAAAAAAoJBNOsRceumlqampaXPba6+9qtvfeuutjBkzJjvssEO23XbbHHfccVm8eHGbfSxatCijRo1Kt27d0rNnz5x33nlZtWrVxj4UAAAAAABgK9SpvQd4P/vss0/uueee6v1Onf6/kc8999xMnjw5P/3pT9PQ0JCxY8fm2GOPzQMPPJAkWb16dUaNGpXGxsY8+OCDefHFF3PyySenc+fO+fa3v73RjwUAAAAAANi6bPIhplOnTmlsbHzH48uWLcv/+B//I7feems++clPJkluvvnm7L333nnooYdyyCGH5Ne//nWefPLJ3HPPPenVq1f233//fPOb38wFF1yQSy+9NLW1tRv7cAAAAAAAgK3IJv3WZEnyhz/8IX369Mmuu+6aE088MYsWLUqSzJ49OytXrsywYcOqa/faa6/ssssumTVrVpJk1qxZGTx4cHr16lVd09zcnNbW1jzxxBPv+prLly9Pa2trmxsAAAAAAMD62qRDzNChQzNx4sRMmTIlN9xwQxYuXJhDDz00r776alpaWlJbW5vu3bu3eU6vXr3S0tKSJGlpaWkTYdZuX7vt3UyYMCENDQ3VW9++fTfsgQEAAAAAAFuFTfqtyUaOHFn9esiQIRk6dGj69euXO+64I127di32uuPHj8+4ceOq91tbW8UYAAAAAABgvW3SV8T8pe7du2fPPffMM888k8bGxqxYsSJLly5ts2bx4sXVz5RpbGzM4sWL37F97bZ3U1dXl/r6+jY3AAAAAACA9bVZhZjXXnstzz77bHr37p2DDjoonTt3zvTp06vbFyxYkEWLFqWpqSlJ0tTUlHnz5mXJkiXVNdOmTUt9fX0GDRq00ecHAAAAAAC2Lpv0W5N9/etfz6c//en069cvL7zwQi655JJ07NgxX/jCF9LQ0JBTTz0148aNS48ePVJfX5+zzz47TU1NOeSQQ5Ikw4cPz6BBg3LSSSflyiuvTEtLSy666KKMGTMmdXV17Xx0AAAAAADAlm6TDjF/+tOf8oUvfCEvv/xydtppp3z84x/PQw89lJ122ilJ8t3vfjcdOnTIcccdl+XLl6e5uTk//OEPq8/v2LFjJk2alLPOOitNTU3ZZpttMnr06Fx++eXtdUgAAAAAAMBWZJMOMbfddtt7bu/SpUuuv/76XH/99e+6pl+/frnrrrs29GgAAAAAAADva7P6jBgAAAAAAIDNiRADAAAAAABQyCb91mQAACX0v3Bye4/ABvLcFaPaewQAAAB4T66IAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKESIAQAAAAAAKKRTew8AAACbk/4XTm7vEdhAnrtiVHuPAAAAbAVcEQMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFBIp/YeAAAAYGvR/8LJ7T0CG8hzV4xq7xEAANhMuCIGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgECEGAAAAAACgkE7tPQAAAADw/vpfOLm9R2ADee6KUe09AgCwEbkiBgAAAAAAoBAhBgAAAAAAoBAhBgAAAAAAoJCt6jNirr/++lx11VVpaWnJfvvtl+9///v52Mc+1t5jAQAAABTj84W2HD5fCGDztNVcEXP77bdn3LhxueSSS/K73/0u++23X5qbm7NkyZL2Hg0AAAAAANhCbTUh5pprrsnpp5+eU045JYMGDcqNN96Ybt265cc//nF7jwYAAAAAAGyhtoq3JluxYkVmz56d8ePHVx/r0KFDhg0bllmzZr1j/fLly7N8+fLq/WXLliVJWltbyw+7GVqz/I32HoENpD1+xv38bDk29s+Pn50th3MPH4afHz4MPz98GH5++DD87swH1R7nnn0vmbrRX5My5l/WvNFf08/PlqM9fn42dWvPyZVK5X3X1lT+mlWbuRdeeCEf+chH8uCDD6apqan6+Pnnn5977703Dz/8cJv1l156aS677LKNPSYAAAAAALAZef7557Pzzju/55qt4oqY9TV+/PiMGzeuen/NmjV55ZVXssMOO6SmpqYdJwO2Fq2trenbt2+ef/751NfXt/c4AB+KcxqwpXFeA7Y0zmvAlmZjnNcqlUpeffXV9OnT533XbhUhZscdd0zHjh2zePHiNo8vXrw4jY2N71hfV1eXurq6No9179695IgA61RfX++XYGCL4ZwGbGmc14AtjfMasKUpfV5raGj4q9Z1KDbBJqS2tjYHHXRQpk+fXn1szZo1mT59epu3KgMAAAAAANiQtoorYpJk3LhxGT16dA4++OB87GMfy7XXXpvXX389p5xySnuPBgAAAAAAbKG2mhDz+c9/Pi+99FIuvvjitLS0ZP/998+UKVPSq1ev9h4N4B3q6upyySWXvONtEgE2R85pwJbGeQ3Y0jivAVuaTe28VlOpVCrtPQQAAAAAAMCWaKv4jBgAAAAAAID2IMQAAAAAAAAUIsQAAAAAAAAUIsQAAAAAAAAUIsQAFHDppZempqamzW2vvfaqbn/rrbcyZsyY7LDDDtl2221z3HHHZfHixW32sWjRoowaNSrdunVLz549c95552XVqlVt1sycOTMHHnhg6urqsvvuu2fixIkb4/CArcB9992XT3/60+nTp09qamry85//vM32SqWSiy++OL17907Xrl0zbNiw/OEPf2iz5pVXXsmJJ56Y+vr6dO/ePaeeempee+21Nmvmzp2bQw89NF26dEnfvn1z5ZVXvmOWn/70p9lrr73SpUuXDB48OHfdddcGP15gy/d+57V/+Id/eMfvbyNGjGizxnkN2FRMmDAhH/3oR7PddtulZ8+eOeaYY7JgwYI2azbm353XX399+vfvny5dumTo0KF55JFHNvgxA1u2v+a8dvjhh7/j97UzzzyzzZpN9bwmxAAUss8+++TFF1+s3u6///7qtnPPPTe/+tWv8tOf/jT33ntvXnjhhRx77LHV7atXr86oUaOyYsWKPPjgg/nJT36SiRMn5uKLL66uWbhwYUaNGpUjjjgic+bMyTnnnJPTTjstU6dO3ajHCWyZXn/99ey33365/vrr17n9yiuvzPe+973ceOONefjhh7PNNtukubk5b731VnXNiSeemCeeeCLTpk3LpEmTct999+WMM86obm9tbc3w4cPTr1+/zJ49O1dddVUuvfTS/OhHP6quefDBB/OFL3whp556an7/+9/nmGOOyTHHHJP58+eXO3hgi/R+57UkGTFiRJvf3/793/+9zXbnNWBTce+992bMmDF56KGHMm3atKxcuTLDhw/P66+/Xl2zsf7uvP322zNu3Lhccskl+d3vfpf99tsvzc3NWbJkycb5xwC2CH/NeS1JTj/99Da/r739//SySZ/XKgBscJdcckllv/32W+e2pUuXVjp37lz56U9/Wn3sqaeeqiSpzJo1q1KpVCp33XVXpUOHDpWWlpbqmhtuuKFSX19fWb58eaVSqVTOP//8yj777NNm35///Ocrzc3NG/hogK1dksqdd95Zvb9mzZpKY2Nj5aqrrqo+tnTp0kpdXV3l3//93yuVSqXy5JNPVpJUHn300eqau+++u1JTU1P5j//4j0qlUqn88Ic/rGy//fbV81qlUqlccMEFlYEDB1bv/5f/8l8qo0aNajPP0KFDK1/+8pc36DECW5e/PK9VKpXK6NGjK5/5zGfe9TnOa8CmbMmSJZUklXvvvbdSqWzcvzs/9rGPVcaMGVO9v3r16kqfPn0qEyZM2PAHCmw1/vK8VqlUKp/4xCcqX/3qV9/1OZvyec0VMQCF/OEPf0ifPn2y66675sQTT8yiRYuSJLNnz87KlSszbNiw6tq99toru+yyS2bNmpUkmTVrVgYPHpxevXpV1zQ3N6e1tTVPPPFEdc3b97F2zdp9AJSycOHCtLS0tDkHNTQ0ZOjQoW3OY927d8/BBx9cXTNs2LB06NAhDz/8cHXNYYcdltra2uqa5ubmLFiwIH/+85+ra5zrgI1l5syZ6dmzZwYOHJizzjorL7/8cnWb8xqwKVu2bFmSpEePHkk23t+dK1asyOzZs9us6dChQ4YNG+a8Bnwof3leW+uWW27JjjvumH333Tfjx4/PG2+8Ud22KZ/XOn3gZwLwroYOHZqJEydm4MCBefHFF3PZZZfl0EMPzfz589PS0pLa2tp07969zXN69eqVlpaWJElLS0ub/9JYu33ttvda09ramjfffDNdu3YtdHTA1m7teWhd56C3n6N69uzZZnunTp3So0ePNmsGDBjwjn2s3bb99tu/67lu7T4ANpQRI0bk2GOPzYABA/Lss8/mH//xHzNy5MjMmjUrHTt2dF4DNllr1qzJOeeck7/927/NvvvumyQb7e/OP//5z1m9evU61zz99NMb7BiBrcu6zmtJcsIJJ6Rfv37p06dP5s6dmwsuuCALFizIz372sySb9nlNiAEoYOTIkdWvhwwZkqFDh6Zfv3654447BBIAgE3Q8ccfX/168ODBGTJkSHbbbbfMnDkzRx55ZDtOBvDexowZk/nz57f5XFKAzdm7ndfe/tl8gwcPTu/evXPkkUfm2WefzW677baxx1wv3poMYCPo3r179txzzzzzzDNpbGzMihUrsnTp0jZrFi9enMbGxiRJY2NjFi9e/I7ta7e915r6+nqxByhq7XloXeegt5+j/vKDDFetWpVXXnllg5zr1m4HKGXXXXfNjjvumGeeeSaJ8xqwaRo7dmwmTZqU3/zmN9l5552rj2+svzt33HHHdOzY0XkN2GDe7by2LkOHDk2SNr+vbarnNSEGYCN47bXX8uyzz6Z379456KCD0rlz50yfPr26fcGCBVm0aFGampqSJE1NTZk3b16bP/anTZuW+vr6DBo0qLrm7ftYu2btPgBKGTBgQBobG9ucg1pbW/Pwww+3OY8tXbo0s2fPrq6ZMWNG1qxZU/1luampKffdd19WrlxZXTNt2rQMHDgw22+/fXWNcx3QHv70pz/l5ZdfTu/evZM4rwGblkqlkrFjx+bOO+/MjBkz3vG2iBvr787a2tocdNBBbdasWbMm06dPd14D1sv7ndfWZc6cOUnS5ve1Tfa8VgFgg/va175WmTlzZmXhwoWVBx54oDJs2LDKjjvuWFmyZEmlUqlUzjzzzMouu+xSmTFjRuWxxx6rNDU1VZqamqrPX7VqVWXfffetDB8+vDJnzpzKlClTKjvttFNl/Pjx1TV//OMfK926daucd955laeeeqpy/fXXVzp27FiZMmXKRj9eYMvz6quvVn7/+99Xfv/731eSVK655prK73//+8r//b//t1KpVCpXXHFFpXv37pVf/OIXlblz51Y+85nPVAYMGFB58803q/sYMWJE5YADDqg8/PDDlfvvv7+yxx57VL7whS9Uty9durTSq1evykknnVSZP39+5bbbbqt069at8i//8i/VNQ888EClU6dOle985zuVp556qnLJJZdUOnfuXJk3b97G+8cAtgjvdV579dVXK1//+tcrs2bNqixcuLByzz33VA488MDKHnvsUXnrrbeq+3BeAzYVZ511VqWhoaEyc+bMyosvvli9vfHGG9U1G+vvzttuu61SV1dXmThxYuXJJ5+snHHGGZXu3btXWlpaNs4/BrBFeL/z2jPPPFO5/PLLK4899lhl4cKFlV/84heVXXfdtXLYYYdV97Epn9eEGIACPv/5z1d69+5dqa2trXzkIx+pfP7zn68888wz1e1vvvlm5b/+1/9a2X777SvdunWr/P3f/33lxRdfbLOP5557rjJy5MhK165dKzvuuGPla1/7WmXlypVt1vzmN7+p7L///pXa2trKrrvuWrn55ps3xuEBW4Hf/OY3lSTvuI0ePbpSqVQqa9asqXzjG9+o9OrVq1JXV1c58sgjKwsWLGizj5dffrnyhS98obLttttW6uvrK6ecckrl1VdfbbPm8ccfr3z84x+v1NXVVT7ykY9UrrjiinfMcscdd1T23HPPSm1tbWWfffapTJ48udhxA1uu9zqvvfHGG5Xhw4dXdtppp0rnzp0r/fr1q5x++unv+GPbeQ3YVKzrfJakzd+EG/Pvzu9///uVXXbZpVJbW1v52Mc+VnnooYdKHDawBXu/89qiRYsqhx12WKVHjx6Vurq6yu67714577zzKsuWLWuzn031vFbz/z9IAAAAAAAANjCfEQMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAAAAAFCIEAMAAHxo/fv3z7XXXtveYwAAAGxyhBgAAKDqH/7hH1JTU5OamprU1tZm9913z+WXX55Vq1a95/MeffTRnHHGGcXmmjhxYnWuDh06ZOedd84pp5ySJUuWbPDXevzxx/N3f/d36dmzZ7p06ZL+/fvn85//fJHX2lguvfTS6r/f22/33HPPBtn/xIkT07179w2yLwAA2NJ0au8BAACATcuIESNy8803Z/ny5bnrrrsyZsyYdO7cOePHj3/H2hUrVqS2tjY77bRT8bnq6+uzYMGCrFmzJo8//nhOOeWUvPDCC5k6deoH2t/KlSvTuXPnNo+99NJLOfLII3P00Udn6tSp6d69e5577rn88pe/zOuvv74hDuNDWdfMf6199tnnHeGlR48eG2IsAADgPbgiBgAAaKOuri6NjY3p169fzjrrrAwbNiy//OUvk/znFTPHHHNMvvWtb6VPnz4ZOHBgkne+NdnSpUvz5S9/Ob169UqXLl2y7777ZtKkSdXt999/fw499NB07do1ffv2zVe+8pX3DR01NTVpbGxMnz59MnLkyHzlK1/JPffckzfffDNJctNNN2XvvfdOly5dstdee+WHP/xh9bnPPfdcampqcvvtt+cTn/hEunTpkltuueUdr/HAAw9k2bJluemmm3LAAQdkwIABOeKII/Ld7343AwYMqK676667sueee6Zr16454ogjqlfsLF26NMl/XoGy//77t9n3tddem/79+1fvP/roo/nUpz6VHXfcMQ0NDfnEJz6R3/3ud+845htuuCF/93d/l2222Sbf+ta3kiS/+MUvcuCBB6ZLly7Zddddc9lll73vVUudOnVKY2Njm1ttbe1f9f1Yvnx5vv71r+cjH/lIttlmmwwdOjQzZ85MksycOTOnnHJKli1bVr3S5tJLL33PWQAAYGsixAAAAO+pa9euWbFiRfX+9OnTs2DBgkybNq1NXFlrzZo1GTlyZB544IH827/9W5588slcccUV6dixY5Lk2WefzYgRI3Lcccdl7ty5uf3223P//fdn7Nix6z3XmjVrsmrVqtxyyy25+OKL861vfStPPfVUvv3tb+cb3/hGfvKTn7R5zoUXXpivfvWreeqpp9Lc3PyOfTY2NmbVqlW58847U6lU1vm6zz//fI499th8+tOfzpw5c3LaaaflwgsvXK/Zk+TVV1/N6NGjc//99+ehhx7KHnvskaOOOiqvvvpqm3WXXnpp/v7v/z7z5s3Ll770pfz2t7/NySefnK9+9at58skn8y//8i+ZOHFiNdKsr7/m+zF27NjMmjUrt912W+bOnZvPfe5zGTFiRP7whz/kb/7mb3Lttdemvr4+L774Yl588cV8/etf/0CzAADAlshbkwEAAOtUqVQyffr0TJ06NWeffXb18W222SY33XRT9WqKv3TPPffkkUceyVNPPZU999wzSbLrrrtWt0+YMCEnnnhizjnnnCTJHnvske9973v5xCc+kRtuuCFdunR539n+8Ic/5MYbb8zBBx+c7bbbLpdcckmuvvrqHHvssUmSAQMGVCPF6NGjq88755xzqmvW5ZBDDsk//uM/5oQTTsiZZ56Zj33sY/nkJz+Zk08+Ob169UqS3HDDDdltt91y9dVXJ0kGDhyYefPm5Z//+Z/fd+63++QnP9nm/o9+9KN079499957b44++ujq4yeccEJOOeWU6v0vfelLufDCC6vHteuuu+ab3/xmzj///FxyySXv+nrz5s3LtttuW70/aNCgPPLII+/7/ViyZEluvvnmLFq0KH369EmSfP3rX8+UKVNy880359vf/nYaGhqqVywBAABtCTEAAEAbkyZNyrbbbpuVK1dmzZo1OeGEE9q81dTgwYPfNcIkyZw5c7LzzjtXI8xfevzxxzN37tw2bw1WqVSyZs2aLFy4MHvvvfc6n7ds2bJsu+22WbNmTd566618/OMfz0033ZTXX389zz77bE499dScfvrp1fWrVq1KQ0NDm30cfPDB73v83/rWtzJu3LjMmDEjDz/8cG688cZ8+9vfzn333ZfBgwfnqaeeytChQ9s8p6mp6X33+5cWL16ciy66KDNnzsySJUuyevXqvPHGG1m0aNF7zvz444/ngQceaHMFzOrVq/PWW2/ljTfeSLdu3db5egMHDqy+xVzyn29Bt3Z/7/X9+OMf/5jVq1e/4/u5fPny7LDDDut93AAAsLURYgAAgDaOOOKI3HDDDamtrU2fPn3SqVPbPxu22Wab93x+165d33P7a6+9li9/+cv5yle+8o5tu+yyy7s+b7vttsvvfve7dOjQIb17966+zuLFi5Mk//2///d3BJK1b4f2186+1g477JDPfe5z+dznPpdvf/vbOeCAA/Kd73znHW919m46dOjwjrc2W7lyZZv7o0ePzssvv5zrrrsu/fr1S11dXZqamtq8Ddy6Zn7ttddy2WWXrfPKnve6mqi2tja77777Ox5/v+/H3Llz07Fjx8yePfsd/55vv8IGAABYNyEGAABoY5tttlnn/2D/1xoyZEj+9Kc/5f/8n/+zzqtiDjzwwDz55JPr/RodOnRY53N69eqVPn365I9//GNOPPHEDzz3u6mtrc1uu+1W/fD6vffeu82VJUny0EMPtbm/0047paWlJZVKJTU1NUn+80qht3vggQfywx/+MEcddVSS//zsmf/3//7f+85z4IEHZsGCBR/qe/SX+3uv78cBBxyQ1atXZ8mSJTn00EPXuaa2tjarV6/eIPMAAMCWRogBAAA2qE984hM57LDDctxxx+Waa67J7rvvnqeffjo1NTUZMWJELrjgghxyyCEZO3ZsTjvttGyzzTZ58sknM23atPzgBz/4QK952WWX5Stf+UoaGhoyYsSILF++PI899lj+/Oc/Z9y4cX/1fiZNmpTbbrstxx9/fPbcc89UKpX86le/yl133ZWbb745SXLmmWfm6quvznnnnZfTTjsts2fPzsSJE9vs5/DDD89LL72UK6+8Mp/97GczZcqU3H333amvr6+u2WOPPfI//+f/zMEHH5zW1tacd95573s1UZJcfPHFOfroo7PLLrvks5/9bDp06JDHH3888+fPzz/90z/91ce61vt9P/bcc8+ceOKJOfnkk3P11VfngAMOyEsvvZTp06dnyJAhGTVqVPr375/XXnst06dPz3777Zdu3bq961ukAQDA1qZDew8AAABsef73//7f+ehHP5ovfOELGTRoUM4///zqFRNDhgzJ/6+9O1ZNKwzjOPzvmimLWSVTUBA1EJCASCbXbE5myuDkorMXkCWTTgYzC4JDJiddzR14E15CO5SGtkubwCGlPM98OLyHM/743m+32+VwOKTdbqfZbGYymbxdBP8R9/f3mc/nWSwWqdVq6XQ6eX5+zvn5+bveU61Wc3JyktFolEajkVarleVymfl8nn6/n+T7uq7VapX1ep16vf52h8zPKpVKZrNZptNp6vV69vt9xuPxL888PT3leDzm8vIy/X4/w+EwZ2dnf5yx2+3m5eUlm80mV1dXabVaeXx8TLlcfte3/vA3/2OxWOTu7i6j0SgXFxe5vb3N6+vr2yq56+vrDAaD9Hq9lEqlPDw8fGgWAAD4H335+vviYgAAAN5lu93m5uYmx+Mxp6ennz0OAADwD3EiBgAAAAAAoCBCDAAAAAAAQEGsJgMAAAAAACiIEzEAAAAAAAAFEWIAAAAAAAAKIsQAAAAAAAAURIgBAAAAAAAoiBADAAAAAABQECEGAAAAAACgIEIMAAAAAABAQYQYAAAAAACAgggxAAAAAAAABfkGEHvFwiu/Z/cAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "import matplotlib\n", "matplotlib.rcParams[\"figure.figsize\"] = (20,10)\n", "plt.hist(df8.price_per_sqft,rwidth=0.8)\n", "plt.xlabel(\"Price Per Square Feet\")\n", "plt.ylabel(\"Count\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Outlier Removal Using Bathrooms Features" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 4., 3., 2., 5., 8., 1., 6., 7., 9., 12., 16., 13.])" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df8.bath.unique()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Count')" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABmIAAANBCAYAAADzwKFIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFwUlEQVR4nO3de7RVdb3//9fmKiJ7IxgbOYJQmoJ51xQ1L8VhZ2h61MqOKalZGl5Q8za+3q1ATt5FyUrxW5rWOGEqXzFCwVJUxEOKKcdjGhQCnhS2mgLC+v3RYP3cYRrIhwXsx2OMNWLN+VlzvSfMsUf4ZK5VV6lUKgEAAAAAAGCNa1PrAQAAAAAAADZUQgwAAAAAAEAhQgwAAAAAAEAhQgwAAAAAAEAhQgwAAAAAAEAhQgwAAAAAAEAhQgwAAAAAAEAhQgwAAAAAAEAh7Wo9wPpg+fLlmTt3brp06ZK6urpajwMAAAAAANRQpVLJ66+/nl69eqVNm/e/50WI+SfMnTs3vXv3rvUYAAAAAADAOmTOnDnZYost3neNEPNP6NKlS5K//YbW19fXeBoAAAAAAKCWmpub07t372o/eD9CzD9hxceR1dfXCzEAAAAAAECS/FNfZ/L+H1wGAAAAAADAahNiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAACmlX6wFY//U9d3ytR2ANeWnkkFqPAAAAAACwQXFHDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCHrTIgZOXJk6urqMnz48Oq2t99+O8OGDUv37t2zySab5PDDD8/8+fNbvG727NkZMmRINt544/To0SNnnXVW3nnnnRZrJk+enF122SUdO3bMVlttlbFjx66FMwIAAAAAAFq7dSLETJs2Ld///vezww47tNh++umn55577snPf/7zTJkyJXPnzs1hhx1W3b9s2bIMGTIkS5YsySOPPJJbb701Y8eOzYUXXlhd8+KLL2bIkCE54IADMmPGjAwfPjxf+9rXcv/996+18wMAAAAAAFqnmoeYN954I0cddVR+8IMfZNNNN61uX7RoUX70ox/lyiuvzKc//ensuuuuueWWW/LII4/k0UcfTZL86le/yu9///v85Cc/yU477ZQDDzwwl112WUaPHp0lS5YkScaMGZN+/frliiuuSP/+/XPyySfniCOOyFVXXVWT8wUAAAAAAFqPmoeYYcOGZciQIRk0aFCL7dOnT8/SpUtbbN92223Tp0+fTJ06NUkyderUbL/99mlsbKyuaWpqSnNzc5555pnqmr8/dlNTU/UY72Xx4sVpbm5u8QAAAAAAAFhV7Wr55nfccUeefPLJTJs2baV98+bNS4cOHdK1a9cW2xsbGzNv3rzqmndHmBX7V+x7vzXNzc1566230qlTp5Xee8SIEbnkkktW+7wAAAAAAACSGt4RM2fOnJx22mm57bbbstFGG9VqjPd03nnnZdGiRdXHnDlzaj0SAAAAAACwHqpZiJk+fXoWLFiQXXbZJe3atUu7du0yZcqUXHvttWnXrl0aGxuzZMmSLFy4sMXr5s+fn549eyZJevbsmfnz56+0f8W+91tTX1//nnfDJEnHjh1TX1/f4gEAAAAAALCqahZiPvOZz+Tpp5/OjBkzqo/ddtstRx11VPXX7du3z6RJk6qvmTVrVmbPnp2BAwcmSQYOHJinn346CxYsqK6ZOHFi6uvrM2DAgOqadx9jxZoVxwAAAAAAACilZt8R06VLl3ziE59osa1z587p3r17dfvxxx+fM844I926dUt9fX1OOeWUDBw4MHvuuWeSZPDgwRkwYECOPvrojBo1KvPmzcv555+fYcOGpWPHjkmSE088Mddff33OPvvsHHfccXnggQfys5/9LOPHj1+7JwwAAAAAALQ6NQsx/4yrrroqbdq0yeGHH57FixenqakpN9xwQ3V/27Ztc++9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AAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFrFaI+ehHP5q//OUvK21fuHBhPvrRj37ooQAAAAAAADYEqxViXnrppSxbtmyl7YsXL86f//znDz0UAAAAAADAhqDdqiy+++67q7++//7709DQUH2+bNmyTJo0KX379l1jwwEAAAAAAKzPVinEHHrooUmSurq6DB06tMW+9u3bp2/fvrniiivW2HAAAAAAAADrs1UKMcuXL0+S9OvXL9OmTctmm21WZCgAAAAAAIANwSqFmBVefPHFNT0HAAAAAADABme1QkySTJo0KZMmTcqCBQuqd8qscPPNN3/owQAAAAAAANZ3qxViLrnkklx66aXZbbfdsvnmm6eurm5NzwUAAAAAALDeW60QM2bMmIwdOzZHH330mp4HAAAAAABgg9FmdV60ZMmS7LXXXmt6FgAAAAAAgA3KaoWYr33ta7n99tvX9CwAAAAAAAAblNX6aLK33347N910U379619nhx12SPv27Vvsv/LKK9fIcAAAAAAAAOuz1QoxTz31VHbaaackycyZM1vsq6ur+9BDAQAAAAAAbAhWK8Q8+OCDa3oOAAAAAACADc5qfUcMAAAAAAAAH2y17og54IAD3vcjyB544IHVHggAAAAAAGBDsVohZsX3w6ywdOnSzJgxIzNnzszQoUPXxFwAAAAAAADrvdUKMVddddV7br/44ovzxhtvfKiBAAAAAAAANhRr9DtivvKVr+Tmm29ek4cEAAAAAABYb63REDN16tRstNFGa/KQAAAAAAAA663V+miyww47rMXzSqWSl19+OU888UQuuOCCNTIYAAAAAADA+m61QkxDQ0OL523atMk222yTSy+9NIMHD14jgwEAAAAAAKzvVivE3HLLLWt6DgAAAAAAgA3OaoWYFaZPn55nn302SbLddttl5513XiNDAQAAAAAAbAhWK8QsWLAgRx55ZCZPnpyuXbsmSRYuXJgDDjggd9xxRz7ykY+syRkBAAAAAADWS21W50WnnHJKXn/99TzzzDN59dVX8+qrr2bmzJlpbm7OqaeeuqZnBAAAAAAAWC+t1h0xEyZMyK9//ev079+/um3AgAEZPXp0Bg8evMaGAwAAAAAAWJ+t1h0xy5cvT/v27Vfa3r59+yxfvvxDDwUAAAAAALAhWK0Q8+lPfzqnnXZa5s6dW9325z//Oaeffno+85nPrLHhAAAAAAAA1merFWKuv/76NDc3p2/fvvnYxz6Wj33sY+nXr1+am5tz3XXXrekZAQAAAAAA1kur9R0xvXv3zpNPPplf//rXee6555Ik/fv3z6BBg9bocAAAAAAAAOuzVboj5oEHHsiAAQPS3Nycurq6/Ou//mtOOeWUnHLKKdl9992z3Xbb5Te/+U2pWQEAAAAAANYrqxRirr766pxwwgmpr69faV9DQ0O+8Y1v5Morr1xjwwEAAAAAAKzPVinE/O53v8tnP/vZf7h/8ODBmT59+oceCgAAAAAAYEOwSiFm/vz5ad++/T/c365du7zyyisfeigAAAAAAIANwSqFmH/5l3/JzJkz/+H+p556KptvvvmHHgoAAAAAAGBDsEoh5nOf+1wuuOCCvP322yvte+utt3LRRRfloIMOWmPDAQAAAAAArM/arcri888/P7/4xS/y8Y9/PCeffHK22WabJMlzzz2X0aNHZ9myZfk//+f/FBkUAAAAAABgfbNKIaaxsTGPPPJITjrppJx33nmpVCpJkrq6ujQ1NWX06NFpbGwsMigAAAAAAMD6ZpVCTJJsueWW+X//7//ltddey//8z/+kUqlk6623zqabblpiPgAAAAAAgPXWKoeYFTbddNPsvvvua3IWAAAAAACADUqbWg8AAAAAAACwoRJiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAAChFiAAAAAAAACqlpiBkxYkR23333dOnSJT169Mihhx6aWbNmtVjz9ttvZ9iwYenevXs22WSTHH744Zk/f36LNbNnz86QIUOy8cYbp0ePHjnrrLPyzjvvtFgzefLk7LLLLunYsWO22mqrjB07tvTpAQAAAAAArVxNQ8yUKVMybNiwPProo5k4cWKWLl2awYMH580336yuOf3003PPPffk5z//eaZMmZK5c+fmsMMOq+5ftmxZhgwZkiVLluSRRx7JrbfemrFjx+bCCy+srnnxxRczZMiQHHDAAZkxY0aGDx+er33ta7n//vvX6vkCAAAAAACtS12lUqnUeogVXnnllfTo0SNTpkzJvvvum0WLFuUjH/lIbr/99hxxxBFJkueeey79+/fP1KlTs+eee+a+++7LQQcdlLlz56axsTFJMmbMmJxzzjl55ZVX0qFDh5xzzjkZP358Zs6cWX2vI488MgsXLsyECRM+cK7m5uY0NDRk0aJFqa+vL3Py67G+546v9QisIS+NHFLrEQAAAAAA1nmr0g3Wqe+IWbRoUZKkW7duSZLp06dn6dKlGTRoUHXNtttumz59+mTq1KlJkqlTp2b77bevRpgkaWpqSnNzc5555pnqmncfY8WaFcf4e4sXL05zc3OLBwAAAAAAwKpaZ0LM8uXLM3z48Oy99975xCc+kSSZN29eOnTokK5du7ZY29jYmHnz5lXXvDvCrNi/Yt/7rWlubs5bb7210iwjRoxIQ0ND9dG7d+81co4AAAAAAEDrss6EmGHDhmXmzJm54447aj1KzjvvvCxatKj6mDNnTq1HAgAAAAAA1kPtaj1Akpx88sm5995789BDD2WLLbaobu/Zs2eWLFmShQsXtrgrZv78+enZs2d1zeOPP97iePPnz6/uW/G/K7a9e019fX06deq00jwdO3ZMx44d18i5AQAAAAAArVdN74ipVCo5+eSTM27cuDzwwAPp169fi/277rpr2rdvn0mTJlW3zZo1K7Nnz87AgQOTJAMHDszTTz+dBQsWVNdMnDgx9fX1GTBgQHXNu4+xYs2KYwAAAAAAAJRQ0ztihg0blttvvz2//OUv06VLl+p3ujQ0NKRTp05paGjI8ccfnzPOOCPdunVLfX19TjnllAwcODB77rlnkmTw4MEZMGBAjj766IwaNSrz5s3L+eefn2HDhlXvajnxxBNz/fXX5+yzz85xxx2XBx54ID/72c8yfvz4mp07AAAAAACw4avpHTE33nhjFi1alP333z+bb7559XHnnXdW11x11VU56KCDcvjhh2ffffdNz54984tf/KK6v23btrn33nvTtm3bDBw4MF/5yldyzDHH5NJLL62u6devX8aPH5+JEydmxx13zBVXXJEf/vCHaWpqWqvnCwAAAAAAtC51lUqlUush1nXNzc1paGjIokWLUl9fX+tx1jl9z3Vn0YbipZFDaj0CAAAAAMA6b1W6QU3viAEAAAAAANiQCTEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFCDEAAAAAAACFtKv1AEDr1vfc8bUegTXkpZFDaj0CAAAAAKxz3BEDAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQiBADAAAAAABQSE1DzEMPPZSDDz44vXr1Sl1dXe66664W+yuVSi688MJsvvnm6dSpUwYNGpTnn3++xZpXX301Rx11VOrr69O1a9ccf/zxeeONN1qseeqpp/KpT30qG220UXr37p1Ro0aVPjUAAAAAAIDahpg333wzO+64Y0aPHv2e+0eNGpVrr702Y8aMyWOPPZbOnTunqakpb7/9dnXNUUcdlWeeeSYTJ07Mvffem4ceeihf//rXq/ubm5szePDgbLnllpk+fXr+4z/+IxdffHFuuumm4ucHAAAAAAC0bu1q+eYHHnhgDjzwwPfcV6lUcvXVV+f888/PIYcckiT5v//3/6axsTF33XVXjjzyyDz77LOZMGFCpk2blt122y1Jct111+Vzn/tcvve976VXr1657bbbsmTJktx8883p0KFDtttuu8yYMSNXXnlli2ADAAAAAACwpq2z3xHz4osvZt68eRk0aFB1W0NDQ/bYY49MnTo1STJ16tR07dq1GmGSZNCgQWnTpk0ee+yx6pp99903HTp0qK5pamrKrFmz8tprr62lswEAAAAAAFqjmt4R837mzZuXJGlsbGyxvbGxsbpv3rx56dGjR4v97dq1S7du3Vqs6dev30rHWLFv0003Xem9Fy9enMWLF1efNzc3f8izAQAAAAAAWqN19o6YWhoxYkQaGhqqj969e9d6JAAAAAAAYD20zoaYnj17Jknmz5/fYvv8+fOr+3r27JkFCxa02P/OO+/k1VdfbbHmvY7x7vf4e+edd14WLVpUfcyZM+fDnxAAAAAAANDqrLMhpl+/funZs2cmTZpU3dbc3JzHHnssAwcOTJIMHDgwCxcuzPTp06trHnjggSxfvjx77LFHdc1DDz2UpUuXVtdMnDgx22yzzXt+LFmSdOzYMfX19S0eAAAAAAAAq6qmIeaNN97IjBkzMmPGjCTJiy++mBkzZmT27Nmpq6vL8OHD8+1vfzt33313nn766RxzzDHp1atXDj300CRJ//7989nPfjYnnHBCHn/88Tz88MM5+eSTc+SRR6ZXr15Jkn//939Phw4dcvzxx+eZZ57JnXfemWuuuSZnnHFGjc4aAAAAAABoLdrV8s2feOKJHHDAAdXnK+LI0KFDM3bs2Jx99tl588038/Wvfz0LFy7MPvvskwkTJmSjjTaqvua2227LySefnM98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fPnyvPrqq+nevXvq6upqOBkboubm5vTu3Ttz5sxJfX19rceBtcr1T2vm+qe1cu3Tmrn+ac1c/7Rmrn9aqw392q9UKnn99dfTq1evD1zbKkLMZpttlrZt22b+/Pktts+fPz89e/ZcaX3Hjh3TsWPHFtu6du1ackRIfX39BvkDCf4Zrn9aM9c/rZVrn9bM9U9r5vqnNXP901ptyNf+B90Js0KbwnOsEzp06JBdd901kyZNqm5bvnx5Jk2alIEDB9ZwMgAAAAAAYEPWKu6ISZIzzjgjQ4cOzW677ZZPfvKTufrqq/Pmm2/m2GOPrfVoAAAAAADABqrVhJgvfelLeeWVV3LhhRdm3rx52WmnnTJhwoQ0NjbWejRauY4dO+aiiy5a6ePwoDVw/dOauf5prVz7tGauf1oz1z+tmeuf1sq1//+rq1QqlVoPAQAAAAAAsCFqFd8RAwAAAAAAUAtCDAAAAAAAQCFCDAAAAAAAQCFCDAAAAAAAQCFCDNTIiBEjsvvuu6dLly7p0aNHDj300MyaNavWY8FaN3LkyNTV1WX48OG1HgXWij//+c/5yle+ku7du6dTp07Zfvvt88QTT9R6LChu2bJlueCCC9KvX7906tQpH/vYx3LZZZelUqnUejRY4x566KEcfPDB6dWrV+rq6nLXXXe12F+pVHLhhRdm8803T6dOnTJo0KA8//zztRkW1rD3u/6XLl2ac845J9tvv306d+6cXr165ZhjjsncuXNrNzCsIR/0s//dTjzxxNTV1eXqq69ea/NBSf/M9f/ss8/m85//fBoaGtK5c+fsvvvumT179toftkaEGKiRKVOmZNiwYXn00UczceLELF26NIMHD86bb75Z69FgrZk2bVq+//3vZ4cddqj1KLBWvPbaa9l7773Tvn373Hffffn973+fK664IptuummtR4PiLr/88tx44425/vrr8+yzz+byyy/PqFGjct1119V6NFjj3nzzzey4444ZPXr0e+4fNWpUrr322owZMyaPPfZYOnfunKamprz99ttreVJY897v+v/rX/+aJ598MhdccEGefPLJ/OIXv8isWbPy+c9/vgaTwpr1QT/7Vxg3blweffTR9OrVay1NBuV90PX/wgsvZJ999sm2226byZMn56mnnsoFF1yQjTbaaC1PWjt1Ff8EDdYJr7zySnr06JEpU6Zk3333rfU4UNwbb7yRXXbZJTfccEO+/e1vZ6eddvKvgdjgnXvuuXn44Yfzm9/8ptajwFp30EEHpbGxMT/60Y+q2w4//PB06tQpP/nJT2o4GZRVV1eXcePG5dBDD03yt7thevXqlTPPPDPf+ta3kiSLFi1KY2Njxo4dmyOPPLKG08Ka9ffX/3uZNm1aPvnJT+aPf/xj+vTps/aGg4L+0bX/5z//OXvssUfuv//+DBkyJMOHD/fpEGxw3uv6P/LII9O+ffv8+Mc/rt1gNeaOGFhHLFq0KEnSrVu3Gk8Ca8ewYcMyZMiQDBo0qNajwFpz9913Z7fddssXvvCF9OjRIzvvvHN+8IMf1HosWCv22muvTJo0Kf/93/+dJPnd736X3/72tznwwANrPBmsXS+++GLmzZvX4v8DNTQ0ZI899sjUqVNrOBnUxqJFi1JXV5euXbvWehQoavny5Tn66KNz1llnZbvttqv1OLDWLF++POPHj8/HP/7xNDU1pUePHtljjz3e9+P7NkRCDKwDli9fnuHDh2fvvffOJz7xiVqPA8XdcccdefLJJzNixIhajwJr1R/+8IfceOON2XrrrXP//ffnpJNOyqmnnppbb7211qNBceeee26OPPLIbLvttmnfvn123nnnDB8+PEcddVStR4O1at68eUmSxsbGFtsbGxur+6C1ePvtt3POOefky1/+curr62s9DhR1+eWXp127djn11FNrPQqsVQsWLMgbb7yRkSNH5rOf/Wx+9atf5d/+7d9y2GGHZcqUKbUeb61pV+sBgL/dGTBz5sz89re/rfUoUNycOXNy2mmnZeLEia3qs0Ah+Vt432233fLd7343SbLzzjtn5syZGTNmTIYOHVrj6aCsn/3sZ7ntttty++23Z7vttsuMGTMyfPjw9OrVy/UP0AotXbo0X/ziF1OpVHLjjTfWehwoavr06bnmmmvy5JNPpq6urtbjwFq1fPnyJMkhhxyS008/PUmy00475ZFHHsmYMWOy33771XK8tcYdMVBjJ598cu699948+OCD2WKLLWo9DhQ3ffr0LFiwILvsskvatWuXdu3aZcqUKbn22mvTrl27LFu2rNYjQjGbb755BgwY0GJb//79M3v27BpNBGvPWWedVb0rZvvtt8/RRx+d008/3d2RtDo9e/ZMksyfP7/F9vnz51f3wYZuRYT54x//mIkTJ7obhg3eb37zmyxYsCB9+vSp/j34j3/8Y84888z07du31uNBUZtttlnatWvX6v8u7I4YqJFKpZJTTjkl48aNy+TJk9OvX79ajwRrxWc+85k8/fTTLbYde+yx2XbbbXPOOeekbdu2NZoMytt7770za9asFtv++7//O1tuuWWNJoK1569//WvatGn578Datm1b/Rdy0Fr069cvPXv2zKRJk7LTTjslSZqbm/PYY4/lpJNOqu1wsBasiDDPP/98HnzwwXTv3r3WI0FxRx999Erfj9rU1JSjjz46xx57bI2mgrWjQ4cO2X333Vv934WFGKiRYcOG5fbbb88vf/nLdOnSpfp50A0NDenUqVONp4NyunTpstJ3IXXu3Dndu3f3HUls8E4//fTstdde+e53v5svfvGLefzxx3PTTTflpptuqvVoUNzBBx+c73znO+nTp0+22267/Nd//VeuvPLKHHfccbUeDda4N954I//zP/9Tff7iiy9mxowZ6datW/r06ZPhw4fn29/+drbeeuv069cvF1xwQXr16pVDDz20dkPDGvJ+1//mm2+eI444Ik8++WTuvffeLFu2rPp34W7duqVDhw61Ghs+tA/62f/30bF9+/bp2bNnttlmm7U9KqxxH3T9n3XWWfnSl76UfffdNwcccEAmTJiQe+65J5MnT67d0GtZXaVSqdR6CGiN/tFngt5yyy356le/unaHgRrbf//9s9NOO+Xqq6+u9ShQ3L333pvzzjsvzz//fPr165czzjgjJ5xwQq3HguJef/31XHDBBRk3blwWLFiQXr165ctf/nIuvPBC/+GNDc7kyZNzwAEHrLR96NChGTt2bCqVSi666KLcdNNNWbhwYfbZZ5/ccMMN+fjHP16DaWHNer/r/+KLL/6Hnwbx4IMPZv/99y88HZTzQT/7/17fvn0zfPjwDB8+vPxwUNg/c/3ffPPNGTFiRP70pz9lm222ySWXXJJDDjlkLU9aO0IMAAAAAABAIW0+eAkAAAAAAACrQ4gBAAAAAAAoRIgBAAAAAAAoRIgBAAAAAAAoRIgBAAAAAAAoRIgBAAAAAAAoRIgBAAAAAAAoRIgBAABq7qWXXkpdXV1mzJhR61Gqnnvuuey5557ZaKONstNOO73nmv333z/Dhw8v8v4ljw0AAKw9QgwAAJCvfvWrqaury8iRI1tsv+uuu1JXV1ejqWrroosuSufOnTNr1qxMmjSp2PtMnjw5dXV1WbhwYbH3AAAAakeIAQAAkiQbbbRRLr/88rz22mu1HmWNWbJkyWq/9oUXXsg+++yTLbfcMt27d1+DU5WzdOnSWo8AAAD8HSEGAABIkgwaNCg9e/bMiBEj/uGaiy++eKWP6br66qvTt2/f6vOvfvWrOfTQQ/Pd7343jY2N6dq1ay699NK88847Oeuss9KtW7dsscUWueWWW1Y6/nPPPZe99torG220UT7xiU9kypQpLfbPnDkzBx54YDbZZJM0Njbm6KOPzv/+7/9W9++///45+eSTM3z48Gy22WZpamp6z/NYvnx5Lr300myxxRbp2LFjdtppp0yYMKG6v66uLtOnT8+ll16aurq6XHzxxf/w9+Sdd97JySefnIaGhmy22Wa54IILUqlUqvt//OMfZ7fddkuXLl3Ss2fP/Pu//3sWLFiQ5G8fyXbAAQckSTbddNPU1dXlq1/9aos5zz777HTr1i09e/ZcaY66urrceOON+fznP5/OnTvnO9/5TpLkxhtvzMc+9rF06NAh22yzTX784x+3eN3s2bNzyCGHZJNNNkl9fX2++MUvZv78+dX9K/6cb7755vTp0yebbLJJvvnNb2bZsmUZNWpUevbsmR49elTfL0kqlUouvvji9OnTJx07dkyvXr1y6qmn/sPfNwAAaC2EGAAAIEnStm3bfPe73811112XP/3pTx/qWA888EDmzp2bhx56KFdeeWUuuuiiHHTQQdl0003z2GOP5cQTT8w3vvGNld7nrLPOyplnnpn/+q//ysCBA3PwwQfnL3/5S5Jk4cKF+fSnP52dd945TzzxRCZMmJD58+fni1/8Yotj3HrrrenQoUMefvjhjBkz5j3nu+aaa3LFFVfke9/7Xp566qk0NTXl85//fJ5//vkkycsvv5ztttsuZ555Zl5++eV861vf+ofneuutt6Zdu3Z5/PHHc8011+TKK6/MD3/4w+r+pUuX5rLLLsvvfve73HXXXXnppZeqsaV37975z//8zyTJrFmz8vLLL+eaa65pcezOnTvnsccey6hRo3LppZdm4sSJLd7/4osvzr/927/l6aefznHHHZdx48bltNNOy5lnnpmZM2fmG9/4Ro499tg8+OCDSf4Wdw455JC8+uqrmTJlSiZOnJg//OEP+dKXvtTiuC+88ELuu+++TJgwIT/96U/zox/9KEOGDMmf/vSnTJkyJZdffnnOP//8PPbYY0mS//zP/8xVV12V73//+3n++edz1113Zfvtt/+Hv28AANBqVAAAgFZv6NChlUMOOaRSqVQqe+65Z+W4446rVCqVyrhx4yrv/mvDRRddVNlxxx1bvPaqq66qbLnlli2OteWWW1aWLVtW3bbNNttUPvWpT1Wfv/POO5XOnTtXfvrTn1YqlUrlxRdfrCSpjBw5srpm6dKllS222KJy+eWXVyqVSuWyyy6rDB48uMV7z5kzp5KkMmvWrEqlUqnst99+lZ133vkDz7dXr16V73znOy227b777pVvfvOb1ec77rhj5aKLLnrf4+y3336V/v37V5YvX17dds4551T69+//D18zbdq0SpLK66+/XqlUKpUHH3ywkqTy2muvrXTsffbZZ6UZzznnnOrzJJXhw4e3WLPXXntVTjjhhBbbvvCFL1Q+97nPVSqVSuVXv/pVpW3btpXZs2dX9z/zzDOVJJXHH3+8Uqn87c954403rjQ3N1fXNDU1Vfr27bvSn+uIESMqlUqlcsUVV1Q+/vGPV5YsWfIPzx0AAFojd8QAAAAtXH755bn11lvz7LPPrvYxtttuu7Rp8///daOxsbHF3RFt27ZN9+7dqx/RtcLAgQOrv27Xrl1222236hy/+93v8uCDD2aTTTapPrbddtskf7t7Y4Vdd931fWdrbm7O3Llzs/fee7fYvvfee6/WOe+5556pq6trcQ7PP/98li1bliSZPn16Dj744PTp0yddunTJfvvtl+RvHw/2QXbYYYcWzzfffPOVfs922223Fs+fffbZ9z23Z599Nr17907v3r2r+wcMGJCuXbu2OP++ffumS5cu1eeNjY0ZMGDASn+uK+b5whe+kLfeeisf/ehHc8IJJ2TcuHF55513PvAcAQBgQyfEAAAALey7775pamrKeeedt9K+Nm3atPj+k+S9vyC+ffv2LZ7X1dW957bly5f/03O98cYbOfjggzNjxowWj+effz777rtvdV3nzp3/6WOW9uabb6apqSn19fW57bbbMm3atIwbNy5JsmTJkg98/T/ze1bqfFf1z7B3796ZNWtWbrjhhnTq1Cnf/OY3s++++77n9QEAAK2JEAMAAKxk5MiRueeeezJ16tQW2z/ykY9k3rx5LWLMjBkz1tj7Pvroo9Vfv/POO5k+fXr69++fJNlll13yzDPPpG/fvtlqq61aPFYlRtTX16dXr155+OGHW2x/+OGHM2DAgFWeecV3pLz7HLbeeuu0bds2zz33XP7yl79k5MiR+dSnPpVtt912pTtaOnTokCTVO2g+rP79+7/vufXv3z9z5szJnDlzqvt///vfZ+HChat1/u/WqVOnHHzwwbn22mszefLkTJ06NU8//fSHOiYAAKzvhBgAAGAl22+/fY466qhce+21Lbbvv//+eeWVVzJq1Ki88MILGT16dO6777419r6jR4/OuHHj8txzz2XYsGF57bXXctxxxyVJhg0blldffTVf/vKXM23atLzwwgu5//77c+yxx65yxDjrrLNy+eWX584778ysWbNy7rnnZsaMGTnttNNWeebZs2fnjDPOyKxZs/LTn/401113XfU4ffr0SYcOHXLdddflD3/4Q+6+++5cdtllLV6/5ZZbpq6uLvfee29eeeWVvPHGG6s8w9+f29ixY3PjjTfm+eefz5VXXplf/OIX+da3vpUkGTRoUPXP98knn8zjjz+eY445Jvvtt99KH3O2KsaOHZsf/ehHmTlzZv7whz/kJz/5STp16pQtt9zyQ50PAACs74QYAADgPV166aUrfQxW//79c8MNN2T06NHZcccd8/jjj1f/A/+aMHLkyIwcOTI77rhjfvvb3+buu+/OZpttliTVu1iWLVuWwYMHZ/vtt8/w4cPTtWvXFt9b8s849dRTc8YZZ+TMM8/M9ttvnwkTJuTuu+/O1ltvvcozH3PMMXnrrbfyyU9+MsOGDctpp52Wr3/960n+dgfR2LFj8/Of/zwDBgzIyJEj873vfa/F6//lX/4ll1xySc4999w0Njbm5JNPXuUZ3u3QQw/NNddck+9973vZbrvt8v3vfz+33HJL9t9//yR/+zixX/7yl9l0002z7777ZtCgQfnoRz+aO++880O9b9euXfODH/wge++9d3bYYYf8+te/zj333JPu3bt/qOMCAMD6rq7y9x/wDAAAAAAAwBrhjhgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBChBgAAAAAAIBC/j/RsXOVw5NQ9QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.hist(df8.bath,rwidth=0.8)\n", "plt.xlabel(\"Number of bathrooms\")\n", "plt.ylabel(\"Count\")" ] }, { "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", "
locationsizetotal_sqftbathpricebhkprice_per_sqft
5277Neeladri Nagar10 BHK4000.012.0160.0104000.000000
8483other10 BHK12000.012.0525.0104375.000000
8572other16 BHK10000.016.0550.0165500.000000
9306other11 BHK6000.012.0150.0112500.000000
9637other13 BHK5425.013.0275.0135069.124424
\n", "
" ], "text/plain": [ " location size total_sqft bath price bhk price_per_sqft\n", "5277 Neeladri Nagar 10 BHK 4000.0 12.0 160.0 10 4000.000000\n", "8483 other 10 BHK 12000.0 12.0 525.0 10 4375.000000\n", "8572 other 16 BHK 10000.0 16.0 550.0 16 5500.000000\n", "9306 other 11 BHK 6000.0 12.0 150.0 11 2500.000000\n", "9637 other 13 BHK 5425.0 13.0 275.0 13 5069.124424" ] }, "execution_count": 111, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df8[df8.bath>10]\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is unusual to have 2 more bathrooms than number of bedrooms in a home\n", "\n" ] }, { "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", "
locationsizetotal_sqftbathpricebhkprice_per_sqft
1626Chikkabanavar4 Bedroom2460.07.080.043252.032520
5238Nagasandra4 Bedroom7000.08.0450.046428.571429
6711Thanisandra3 BHK1806.06.0116.036423.034330
8408other6 BHK11338.09.01000.068819.897689
\n", "
" ], "text/plain": [ " location size total_sqft bath price bhk price_per_sqft\n", "1626 Chikkabanavar 4 Bedroom 2460.0 7.0 80.0 4 3252.032520\n", "5238 Nagasandra 4 Bedroom 7000.0 8.0 450.0 4 6428.571429\n", "6711 Thanisandra 3 BHK 1806.0 6.0 116.0 3 6423.034330\n", "8408 other 6 BHK 11338.0 9.0 1000.0 6 8819.897689" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df8[df8.bath>df8.bhk+2]\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again the business manager has a conversation with you (i.e. a data scientist) that if you have 4 bedroom home and even if you have bathroom in all 4 rooms plus one guest bathroom, you will have total bath = total bed + 1 max. Anything above that is an outlier or a data error and can be removed" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7239, 7)" ] }, "execution_count": 113, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df9 = df8[df8.bath\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationsizetotal_sqftbathpricebhkprice_per_sqft
01st Block Jayanagar4 BHK2850.04.0428.0415017.543860
11st Block Jayanagar3 BHK1630.03.0194.0311901.840491
\n", "" ], "text/plain": [ " location size total_sqft bath price bhk price_per_sqft\n", "0 1st Block Jayanagar 4 BHK 2850.0 4.0 428.0 4 15017.543860\n", "1 1st Block Jayanagar 3 BHK 1630.0 3.0 194.0 3 11901.840491" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "df9.head(2)" ] }, { "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", "
locationtotal_sqftbathpricebhk
01st Block Jayanagar2850.04.0428.04
11st Block Jayanagar1630.03.0194.03
21st Block Jayanagar1875.02.0235.03
\n", "
" ], "text/plain": [ " location total_sqft bath price bhk\n", "0 1st Block Jayanagar 2850.0 4.0 428.0 4\n", "1 1st Block Jayanagar 1630.0 3.0 194.0 3\n", "2 1st Block Jayanagar 1875.0 2.0 235.0 3" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df10 = df9.drop(['size','price_per_sqft'],axis='columns')\n", "df10.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 6. One Hot Encoding for location" ] }, { "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", "
1st Block Jayanagar1st Phase JP Nagar2nd Phase Judicial Layout2nd Stage Nagarbhavi5th Block Hbr Layout5th Phase JP Nagar6th Phase JP Nagar7th Phase JP Nagar8th Phase JP Nagar9th Phase JP Nagar...Vishveshwarya LayoutVishwapriya LayoutVittasandraWhitefieldYelachenahalliYelahankaYelahanka New TownYelenahalliYeshwanthpurother
01000000000...0000000000
11000000000...0000000000
21000000000...0000000000
\n", "

3 rows × 241 columns

\n", "
" ], "text/plain": [ " 1st Block Jayanagar 1st Phase JP Nagar 2nd Phase Judicial Layout \\\n", "0 1 0 0 \n", "1 1 0 0 \n", "2 1 0 0 \n", "\n", " 2nd Stage Nagarbhavi 5th Block Hbr Layout 5th Phase JP Nagar \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "\n", " 6th Phase JP Nagar 7th Phase JP Nagar 8th Phase JP Nagar \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "\n", " 9th Phase JP Nagar ... Vishveshwarya Layout Vishwapriya Layout \\\n", "0 0 ... 0 0 \n", "1 0 ... 0 0 \n", "2 0 ... 0 0 \n", "\n", " Vittasandra Whitefield Yelachenahalli Yelahanka Yelahanka New Town \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "\n", " Yelenahalli Yeshwanthpur other \n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "\n", "[3 rows x 241 columns]" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dummies = pd.get_dummies(df10.location)\n", "dummies.head(3)" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", "
locationtotal_sqftbathpricebhk1st Block Jayanagar1st Phase JP Nagar2nd Phase Judicial Layout2nd Stage Nagarbhavi5th Block Hbr Layout...VijayanagarVishveshwarya LayoutVishwapriya LayoutVittasandraWhitefieldYelachenahalliYelahankaYelahanka New TownYelenahalliYeshwanthpur
01st Block Jayanagar2850.04.0428.0410000...0000000000
11st Block Jayanagar1630.03.0194.0310000...0000000000
21st Block Jayanagar1875.02.0235.0310000...0000000000
31st Block Jayanagar1200.02.0130.0310000...0000000000
41st Block Jayanagar1235.02.0148.0210000...0000000000
\n", "

5 rows × 245 columns

\n", "
" ], "text/plain": [ " location total_sqft bath price bhk 1st Block Jayanagar \\\n", "0 1st Block Jayanagar 2850.0 4.0 428.0 4 1 \n", "1 1st Block Jayanagar 1630.0 3.0 194.0 3 1 \n", "2 1st Block Jayanagar 1875.0 2.0 235.0 3 1 \n", "3 1st Block Jayanagar 1200.0 2.0 130.0 3 1 \n", "4 1st Block Jayanagar 1235.0 2.0 148.0 2 1 \n", "\n", " 1st Phase JP Nagar 2nd Phase Judicial Layout 2nd Stage Nagarbhavi \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "\n", " 5th Block Hbr Layout ... Vijayanagar Vishveshwarya Layout \\\n", "0 0 ... 0 0 \n", "1 0 ... 0 0 \n", "2 0 ... 0 0 \n", "3 0 ... 0 0 \n", "4 0 ... 0 0 \n", "\n", " Vishwapriya Layout Vittasandra Whitefield Yelachenahalli Yelahanka \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "3 0 0 0 0 0 \n", "4 0 0 0 0 0 \n", "\n", " Yelahanka New Town Yelenahalli Yeshwanthpur \n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "3 0 0 0 \n", "4 0 0 0 \n", "\n", "[5 rows x 245 columns]" ] }, "execution_count": 117, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df11 = pd.concat([df10,dummies.drop('other',axis='columns')],axis='columns')\n", "df11.head()" ] }, { "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", "
total_sqftbathpricebhk1st Block Jayanagar1st Phase JP Nagar2nd Phase Judicial Layout2nd Stage Nagarbhavi5th Block Hbr Layout5th Phase JP Nagar...VijayanagarVishveshwarya LayoutVishwapriya LayoutVittasandraWhitefieldYelachenahalliYelahankaYelahanka New TownYelenahalliYeshwanthpur
02850.04.0428.04100000...0000000000
11630.03.0194.03100000...0000000000
\n", "

2 rows × 244 columns

\n", "
" ], "text/plain": [ " total_sqft bath price bhk 1st Block Jayanagar 1st Phase JP Nagar \\\n", "0 2850.0 4.0 428.0 4 1 0 \n", "1 1630.0 3.0 194.0 3 1 0 \n", "\n", " 2nd Phase Judicial Layout 2nd Stage Nagarbhavi 5th Block Hbr Layout \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "\n", " 5th Phase JP Nagar ... Vijayanagar Vishveshwarya Layout \\\n", "0 0 ... 0 0 \n", "1 0 ... 0 0 \n", "\n", " Vishwapriya Layout Vittasandra Whitefield Yelachenahalli Yelahanka \\\n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "\n", " Yelahanka New Town Yelenahalli Yeshwanthpur \n", "0 0 0 0 \n", "1 0 0 0 \n", "\n", "[2 rows x 244 columns]" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df12 = df11.drop('location',axis='columns')\n", "df12.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 7. Model Building" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7239, 244)" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df12.shape\n" ] }, { "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", "
total_sqftbathbhk1st Block Jayanagar1st Phase JP Nagar2nd Phase Judicial Layout2nd Stage Nagarbhavi5th Block Hbr Layout5th Phase JP Nagar6th Phase JP Nagar...VijayanagarVishveshwarya LayoutVishwapriya LayoutVittasandraWhitefieldYelachenahalliYelahankaYelahanka New TownYelenahalliYeshwanthpur
02850.04.041000000...0000000000
11630.03.031000000...0000000000
21875.02.031000000...0000000000
\n", "

3 rows × 243 columns

\n", "
" ], "text/plain": [ " total_sqft bath bhk 1st Block Jayanagar 1st Phase JP Nagar \\\n", "0 2850.0 4.0 4 1 0 \n", "1 1630.0 3.0 3 1 0 \n", "2 1875.0 2.0 3 1 0 \n", "\n", " 2nd Phase Judicial Layout 2nd Stage Nagarbhavi 5th Block Hbr Layout \\\n", "0 0 0 0 \n", "1 0 0 0 \n", "2 0 0 0 \n", "\n", " 5th Phase JP Nagar 6th Phase JP Nagar ... Vijayanagar \\\n", "0 0 0 ... 0 \n", "1 0 0 ... 0 \n", "2 0 0 ... 0 \n", "\n", " Vishveshwarya Layout Vishwapriya Layout Vittasandra Whitefield \\\n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "2 0 0 0 0 \n", "\n", " Yelachenahalli Yelahanka Yelahanka New Town Yelenahalli Yeshwanthpur \n", "0 0 0 0 0 0 \n", "1 0 0 0 0 0 \n", "2 0 0 0 0 0 \n", "\n", "[3 rows x 243 columns]" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = df12.drop(['price'],axis='columns')\n", "X.head(3)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(7239, 243)" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 428.0\n", "1 194.0\n", "2 235.0\n", "Name: price, dtype: float64" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = df12.price\n", "y.head(3)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7239" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(y)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8629132245229447" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "lr_clf = LinearRegression()\n", "lr_clf.fit(X_train,y_train)\n", "lr_clf.score(X_test,y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 8. Accuracy" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.82702546, 0.86027005, 0.85322178, 0.8436466 , 0.85481502])" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.model_selection import ShuffleSplit\n", "from sklearn.model_selection import cross_val_score\n", "\n", "cv = ShuffleSplit(n_splits=5, test_size=0.2, random_state=0)\n", "\n", "cross_val_score(LinearRegression(), X, y, cv=cv)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that in 5 iterations we get a score above 80% all the time. This is pretty good but we want to test few other algorithms for regression to see if we can get even better score. We will use GridSearchCV for this purpose" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Find best model using GridSearchCV" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vijay\\AppData\\Local\\Temp\\ipykernel_7480\\980312241.py:50: RuntimeWarning: overflow encountered in exp\n", " y_pred = np.exp(gs.predict(X))\n", "c:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\metrics\\_regression.py:1196: RuntimeWarning: overflow encountered in square\n", " numerator = (weight * (y_true - y_pred) ** 2).sum(axis=0, dtype=np.float64)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "The best fit model is: linear_regression\n", "The R-squared score for the best fit model is: 0.8543503020740678\n", " model best_score \\\n", "0 linear_regression -2.106080e+14 \n", "1 exponential_regression -2.106080e+14 \n", "2 logarithmic_regression -2.106080e+14 \n", "\n", " best_params r2_score \n", "0 {'copy_X': True, 'fit_intercept': False, 'n_jo... 0.854350 \n", "1 {'copy_X': True, 'fit_intercept': False, 'n_jo... -inf \n", "2 {'copy_X': True, 'fit_intercept': False, 'n_jo... -1.162146 \n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\base.py:493: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names\n", " warnings.warn(\n" ] } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "from sklearn.model_selection import GridSearchCV\n", "import pandas as pd\n", "from sklearn.metrics import r2_score\n", "import numpy as np\n", "import math\n", "\n", "# Define the algorithms and their parameters\n", "algos = {\n", " 'linear_regression': {\n", " 'model': LinearRegression(),\n", " 'params': {\n", " 'copy_X': [True, False],\n", " 'fit_intercept': [True, False],\n", " 'n_jobs': [None],\n", " 'positive': [False]\n", " }\n", " },\n", " 'exponential_regression': {\n", " 'model': LinearRegression(),\n", " 'params': {\n", " 'copy_X': [True, False],\n", " 'fit_intercept': [True, False],\n", " 'n_jobs': [None],\n", " 'positive': [False]\n", " }\n", " },\n", " 'logarithmic_regression': {\n", " 'model': LinearRegression(),\n", " 'params': {\n", " 'copy_X': [True, False],\n", " 'fit_intercept': [True, False],\n", " 'n_jobs': [None],\n", " 'positive': [False]\n", " }\n", " }\n", "}\n", "\n", "# Your function to find the best model using GridSearchCV\n", "def find_best_model_using_gridsearchcv(X, y):\n", " scores = []\n", " cv = 5 # Number of cross-validation folds\n", "\n", " for algo_name, config in algos.items():\n", " gs = GridSearchCV(config['model'], config['params'], cv=cv, return_train_score=False)\n", " gs.fit(X, y)\n", " \n", " # Exponential Regression\n", " if algo_name == 'exponential_regression':\n", " y_pred = np.exp(gs.predict(X))\n", " y_pred = np.where(y_pred == np.inf, np.nan, y_pred) # Replace infinity with NaN\n", " y_pred = np.nan_to_num(y_pred) # Replace NaN with 0\n", " r2_exp = r2_score(y, y_pred)\n", " scores.append({\n", " 'model': algo_name,\n", " 'best_score': gs.best_score_,\n", " 'best_params': gs.best_params_,\n", " 'r2_score': r2_exp\n", " })\n", " \n", " # Logarithmic Regression \n", " elif algo_name == 'logarithmic_regression':\n", " X_log = np.where(X <= 0, 1, X) # Replace non-positive values with 1\n", " y_pred = gs.predict(np.log(X_log))\n", " r2_log = r2_score(y, y_pred)\n", " scores.append({\n", " 'model': algo_name,\n", " 'best_score': gs.best_score_,\n", " 'best_params': gs.best_params_,\n", " 'r2_score': r2_log\n", " })\n", " \n", " # Linear Regression\n", " else:\n", " y_pred = gs.predict(X)\n", " r2_lin = r2_score(y, y_pred)\n", " scores.append({\n", " 'model': algo_name,\n", " 'best_score': gs.best_score_,\n", " 'best_params': gs.best_params_,\n", " 'r2_score': r2_lin\n", " })\n", "\n", " # Create the results DataFrame\n", " results = pd.DataFrame(scores, columns=['model', 'best_score', 'best_params', 'r2_score'])\n", " \n", " # Determine the best fit model\n", " best_fit_model = results.loc[results['r2_score'].idxmax()]['model']\n", " best_r2_score = results['r2_score'].max()\n", " \n", " print(\"The best fit model is:\", best_fit_model)\n", " print(\"The R-squared score for the best fit model is:\", best_r2_score)\n", " \n", " return results\n", "\n", "# Call your function with X and y\n", "result = find_best_model_using_gridsearchcv(X, y)\n", "print(result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 9. Testing Model" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", "def predict_price(location,sqft,bath,bhk): \n", " loc_index = np.where(X.columns==location)[0][0]\n", "\n", " x = np.zeros(len(X.columns))\n", " x[0] = sqft\n", " x[1] = bath\n", " x[2] = bhk\n", " if loc_index >= 0:\n", " x[loc_index] = 1\n", "\n", " return lr_clf.predict([x])[0]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\base.py:493: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names\n", " warnings.warn(\n" ] }, { "data": { "text/plain": [ "83.86570258311501" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predict_price('1st Phase JP Nagar',1000, 2, 2)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\vijay\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\sklearn\\base.py:493: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names\n", " warnings.warn(\n" ] }, { "data": { "text/plain": [ "86.08062284986265" ] }, "execution_count": 149, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predict_price('1st Phase JP Nagar',1000, 3, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 10. Export the tested model to a pickle file" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "with open('banglore_home_prices_model.pickle','wb') as f:\n", " pickle.dump(lr_clf,f)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import json\n", "columns = {\n", " 'data_columns' : [col.lower() for col in X.columns]\n", "}\n", "with open(\"columns.json\",\"w\") as f:\n", " f.write(json.dumps(columns))" ] } ], "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.10.0" } }, "nbformat": 4, "nbformat_minor": 2 }