{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# AirBnb" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "text/markdown": [ "# AirBnb data\n", "\n", "This dataset is based on the 2016-07-07 San Diego extract from Inside Airbnb. The original set includes AirBnb property listings with characteristics and price, and this is extended to additional variables based on each property's location.\n", "\n", "- `Source`: Inside AirBnb\n", "- `URL`\n", "\n", "> [http://insideairbnb.com/](http://insideairbnb.com/)\n", "\n", "- `Processing`: download of the original files and addition of new variables is documented in `regression_cleaning.ipynb`\n", " - Clean file: `regression_db.geojson`\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.display import display_markdown\n", "\n", "display_markdown(open(\"README.md\").read(), raw=True)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import requests\n", "import pandas as pd\n", "import geopandas as gpd\n", "#import googlemaps\n", "from scipy.spatial.distance import cdist" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download files" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Download detailed listings file:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "url = 'http://data.insideairbnb.com/united-states/'\\\n", " 'ca/san-diego/2016-07-07/data/'\\\n", " 'listings.csv.gz'\n", "r = requests.get(url)\n", "with open('listings.csv.gz', 'wb') as fo:\n", " fo.write(r.content)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Download calendar file with prices" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "url = 'http://data.insideairbnb.com/united-states/'\\\n", " 'ca/san-diego/2016-07-07/data/'\\\n", " 'calendar.csv.gz'\n", "r = requests.get(url)\n", "with open('calendar.csv.gz', 'wb') as fo:\n", " fo.write(r.content)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Download neighborhoods" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "url = 'http://data.insideairbnb.com/united-states/'\\\n", " 'ca/san-diego/2016-07-07/visualisations/'\\\n", " 'neighbourhoods.geojson'\n", "r = requests.get(url)\n", "with open('neighbourhoods.geojson', 'wb') as fo:\n", " fo.write(r.content)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Variable setup" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parse price" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "lst = pd.read_csv('listings.csv.gz')\n", "lst['priceN'] = lst['price'].apply(\n", " lambda x: float(str(x)\\\n", " .replace(',', '')\\\n", " .strip('$')))\n", "lst['l_price'] = pd.np.log(lst['priceN'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `GeoDataFrame`" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from shapely.geometry import Point\n", "xys = lst[['longitude', 'latitude']]\\\n", " .apply(lambda row: Point(*row), axis=1)\n", "gdb = gpd.GeoDataFrame(lst.assign(geometry=xys),\n", " crs=\"+init=epsg:4326\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Pool" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'',\n", " '\"24-Hour Check-in\"',\n", " '\"Air Conditioning\"',\n", " '\"Buzzer/Wireless Intercom\"',\n", " '\"Cable TV\"',\n", " '\"Carbon Monoxide Detector\"',\n", " '\"Elevator in Building\"',\n", " '\"Family/Kid Friendly\"',\n", " '\"Fire Extinguisher\"',\n", " '\"First Aid Kit\"',\n", " '\"Free Parking on Premises\"',\n", " '\"Hair Dryer\"',\n", " '\"Hot Tub\"',\n", " '\"Indoor Fireplace\"',\n", " '\"Laptop Friendly Workspace\"',\n", " '\"Lock on Bedroom Door\"',\n", " '\"Other pet(s)\"',\n", " '\"Pets Allowed\"',\n", " '\"Pets live on this property\"',\n", " '\"Safety Card\"',\n", " '\"Smoke Detector\"',\n", " '\"Smoking Allowed\"',\n", " '\"Suitable for Events\"',\n", " '\"Wheelchair Accessible\"',\n", " '\"Wireless Internet\"',\n", " '\"translation missing: en.hosting_amenity_49\"',\n", " '\"translation missing: en.hosting_amenity_50\"',\n", " 'Breakfast',\n", " 'Cat(s)',\n", " 'Dog(s)',\n", " 'Doorman',\n", " 'Dryer',\n", " 'Essentials',\n", " 'Gym',\n", " 'Hangers',\n", " 'Heating',\n", " 'Internet',\n", " 'Iron',\n", " 'Kitchen',\n", " 'Pool',\n", " 'Shampoo',\n", " 'TV',\n", " 'Washer'}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ams = []\n", "gdb['pool'] = 0\n", "for i in range(gdb.shape[0]):\n", " r = gdb.loc[i, 'amenities']\n", " pcs = r.strip('{').strip('}').split(',')\n", " ams.extend(pcs)\n", " if 'Pool' in pcs:\n", " gdb.loc[i, 'pool'] = 1\n", "set(ams)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Distance to Balboa park\n", "\n", "
View Larger Map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use [`geopy`](https://github.com/geopy/geopy) to find out its location:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from geopy.geocoders import Nominatim\n", "geolocator = Nominatim()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Just type the name into the locator:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Location(Balboa Park, North Park, San Diego, San Diego County, California, 92102, United States of America, (32.73135675, -117.146526555704, 0.0))" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bp = geolocator.geocode(\"Balboa Park, San Diego, US\")\n", "bp" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-117.146526555704, 32.73135675)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b_ll = bp.longitude, bp.latitude\n", "b_ll" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then calculate distance to the park from each house:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# USA Contiguous Albers Equal Area (m.)\n", "# http://epsg.io/102003\n", "tgt_crs = \"+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=37.5 \"\\\n", " \"+lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs\"\n", "\n", "b_xy = gpd.GeoSeries(Point(b_ll), crs=gdb.crs).to_crs(tgt_crs)[0]\n", "b_xy = (b_xy.x, b_xy.y)\n", "# Calculate distance in Km.\n", "d2b = lambda pt: cdist([(pt.x, pt.y)], [b_xy])[0][0] / 1000" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ndNAlQ39SkAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gdb['d2balboa'] = gdb['geometry'].to_crs(tgt_crs)\\\n", " .apply(d2b)\n", "gdb.plot(column='d2balboa', scheme='quantiles', k=9,\n", " cmap='viridis_r', s=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Elevation" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "key = open('../google_maps_key').readline().strip('\\n')\n", "gmaps = googlemaps.Client(key=key)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'elevation': 89.00752258300781,\n", " 'location': {'lat': 32.73136, 'lng': -117.14653},\n", " 'resolution': 4.771975994110107}]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Google takes lat/lon instead of lon/lat\n", "gmaps.elevation([b_ll[::-1]])" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 4 ms, sys: 0 ns, total: 4 ms\n", "Wall time: 309 ms\n" ] }, { "data": { "text/plain": [ "[{'elevation': 95.95661163330078,\n", " 'location': {'lat': 32.58188, 'lng': -117.00194},\n", " 'resolution': 4.771975994110107},\n", " {'elevation': 171.3590698242188,\n", " 'location': {'lat': 32.65303, 'lng': -116.97681},\n", " 'resolution': 4.771975994110107},\n", " {'elevation': 177.8932495117188,\n", " 'location': {'lat': 32.66148, 'lng': -116.97181},\n", " 'resolution': 4.771975994110107},\n", " {'elevation': 184.3952026367188,\n", " 'location': {'lat': 32.63869, 'lng': -116.95125},\n", " 'resolution': 4.771975994110107},\n", " {'elevation': 185.0911254882812,\n", " 'location': {'lat': 32.63894000000001, 'lng': -116.93889},\n", " 'resolution': 4.771975994110107}]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pts = gdb['geometry'].apply(lambda pt: (pt.y, pt.x))\n", "%time ele = gmaps.elevation(pts.head().tolist())\n", "ele" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 95.956612\n", "1 171.359070\n", "2 177.893250\n", "3 184.395203\n", "4 185.091125\n", "dtype: float64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "extract_ele = lambda x: pd.Series(x)['elevation']\n", "eleS = pd.Series(ele).apply(extract_ele)\n", "eleS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Coastal neighborhood?\n", "\n", "**NOTE**: Still some mistakes it seems but `neighborhood_cleansed` works much better than `neighborhood`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "coastal_neighborhoods = ['Wooded Area', 'Ocean Beach', 'Pacific Beach', \\\n", " 'La Jolla', 'Torrey Pines', 'Del Mar Heighs', \\\n", " 'Mission Bay']\n", "def coastal(neigh):\n", " if neigh in coastal_neighborhoods:\n", " return 1\n", " else:\n", " return 0\n", "gdb['coastal_neig'] = gdb['neighbourhood_cleansed'].apply(coastal)\n", "\n", "gdb.plot(column='coastal_neig', s=1,\n", " categorical=True, legend=True);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Large neighborhood\n", "\n", "We keep only observations in neighborhoods with more than 25 AirBnb houses so FE on neighborhood make sense." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "lrg_nei = gdb.groupby('neighbourhood_cleansed').size() > 25\n", "gdb['lrg_nei'] = gdb['neighbourhood_cleansed'].map(lrg_nei)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* List to keep" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "xs = ['accommodates', 'bathrooms', 'bedrooms', \n", " 'beds', 'neighbourhood_cleansed', 'pool',\n", " 'd2balboa', 'coastal_neig', 'lrg_nei',\n", " 'priceN', 'l_price',\n", " 'geometry', 'id']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dummies" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Room type" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "rt = pd.get_dummies(gdb['room_type'], prefix='rt').rename(columns=lambda x: x.replace(' ', '_'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Property type" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "def simplify(p):\n", " bigs = ['House', 'Apartment', 'Condominium', 'Townhouse']\n", " if p in bigs:\n", " return p\n", " else:\n", " return 'Other'\n", "\n", "gdb['property_group'] = gdb['property_type'].apply(simplify)\n", "pg = pd.get_dummies(gdb['property_group'], prefix='pg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Write out" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 6608 entries, 0 to 6607\n", "Data columns (total 1 columns):\n", "lrg_nei 6608 non-null bool\n", "dtypes: bool(1)\n", "memory usage: 6.5 KB\n" ] } ], "source": [ "gdb[['lrg_nei']].info()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 6110 entries, 19 to 6607\n", "Data columns (total 20 columns):\n", "accommodates 6110 non-null int64\n", "bathrooms 6110 non-null float64\n", "bedrooms 6110 non-null float64\n", "beds 6110 non-null float64\n", "neighbourhood_cleansed 6110 non-null object\n", "pool 6110 non-null int64\n", "d2balboa 6110 non-null float64\n", "coastal_neig 6110 non-null int64\n", "price 6110 non-null float64\n", "l_price 6110 non-null float64\n", "geometry 6110 non-null object\n", "id 6110 non-null int64\n", "pg_Apartment 6110 non-null uint8\n", "pg_Condominium 6110 non-null uint8\n", "pg_House 6110 non-null uint8\n", "pg_Other 6110 non-null uint8\n", "pg_Townhouse 6110 non-null uint8\n", "rt_Entire_home/apt 6110 non-null uint8\n", "rt_Private_room 6110 non-null uint8\n", "rt_Shared_room 6110 non-null uint8\n", "dtypes: float64(6), int64(4), object(2), uint8(8)\n", "memory usage: 668.3+ KB\n" ] } ], "source": [ "! rm 'regression_db.geojson'\n", "final = gdb[xs].join(pg)\\\n", " .join(rt)\\\n", " .rename(columns={'priceN': 'price'})\\\n", " .loc[gdb['lrg_nei']==True, :]\\\n", " .drop(['lrg_nei'], axis=1)\\\n", " .dropna()\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "final = final.rename(columns=dict(neighbourhood_cleansed='neighborhood', \n", " coastal_neig='coastal',\n", " l_price = 'log_price'))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rm: cannot remove 'airbnb/regression_db.geojson': No such file or directory\n", "\n", "RangeIndex: 6110 entries, 0 to 6109\n", "Data columns (total 20 columns):\n", "accommodates 6110 non-null int64\n", "bathrooms 6110 non-null float64\n", "bedrooms 6110 non-null float64\n", "beds 6110 non-null float64\n", "neighborhood 6110 non-null object\n", "pool 6110 non-null int64\n", "d2balboa 6110 non-null float64\n", "coastal 6110 non-null int64\n", "price 6110 non-null float64\n", "log_price 6110 non-null float64\n", "id 6110 non-null int64\n", "pg_Apartment 6110 non-null int64\n", "pg_Condominium 6110 non-null int64\n", "pg_House 6110 non-null int64\n", "pg_Other 6110 non-null int64\n", "pg_Townhouse 6110 non-null int64\n", "rt_Entire_home/apt 6110 non-null int64\n", "rt_Private_room 6110 non-null int64\n", "rt_Shared_room 6110 non-null int64\n", "geometry 6110 non-null object\n", "dtypes: float64(6), int64(12), object(2)\n", "memory usage: 954.8+ KB\n" ] } ], "source": [ "!rm regression_db.geojson\n", "final.to_file('regression_db.geojson', driver='GeoJSON')\n", "final.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Download Link\n", "\n", "{download}`Download the *regression_db.geojson* file `\n", "\n" ] } ], "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.7.8" } }, "nbformat": 4, "nbformat_minor": 4 }