{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Profitability Analysis of Real Estates in NYC" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ------------------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Harish Siva Subramanian" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Email: hsivasub@asu.edu or sharish2395@gmail.com" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Mobile: (480)-494-7314" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### -----------------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Problem Statement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " As a part of this assignment, a data product was built to assist a real estate company to understand which zip codes are profitable for short term rentals within New York City. They have already decided to invest in Two Bedroom houses as they are found to be profitable. For this purpose, publicly available data from Zillow and AirBnB were used." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Zillow Data- Contains the Time Series cost data for 2 Bedroom Apartment for different Zipcodes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Airbnb Data- Information on the listing including location, and other relevant short term rental informations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Assumptions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1.The investor will pay for the property in cash (i.e. no mortgage/interest rate will need to be accounted for).\n", "\n", " \n", "2.The time value of money discount rate is 0% (i.e 1 dollar today is worth the same 100 years from now).\n", "\n", "\n", "3.All properties and all square feet within each locale can be assumed to be homogeneous (i.e. a 1000 square foot property in a locale such as Bronx or Manhattan generates twice the revenue and costs twice as much as any other 500 square foot property within that same locale).\n", "\n", "\n", "4.The occupancy rate is assumed to be 75%.\n", "\n", "\n", "5.It was assumed that the real estate company wants to buy the property in April 2019, so I had performed time series forecasting to obtain the value of property in April 2019 considering the data from January 2010.\n", "\n", "\n", "6.Since the data before January 2010 were showing abnormal pattern and also since most of them had missing values, the data from January 2010 were used.\n", "\n", "\n", "7.Availability for 90 days was considered during the availability analysis oowing to the fact availability for 365 days were incorrect for some zipcodes.\n", "\n", "\n", "8.Time for calculating the Breakeven Period was taken as 365 days(neglecting leap year) and thus the resultant Breakeven Period will be in years.\n", "\n", "\n", "9.While performing time series analysis, models were not built step by step for each zipcodes because of obvious time constraints and considering the scope of the project. Thus AutoARIMA was used to do Model fitting and forecasting for all the individual zipcodes.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Quality Check\n", "\n", "The project addressed the following quality checks,\n", "\n", "\n", "•\tChecking for Duplicates\n", "\n", "•\tChecking for Negative values\n", "\n", "•\tChecking the Columns with Null Values \n", "\n", "### Data Munging\n", "\n", "The project addressed the following quality checks,\n", "\n", "•\tCleaning up the Zillow Dataset.\n", "\n", "•\tCleaning up the Airbnb dataset.\n", "\n", "•\tImputing the missing values with group mean.\n", "\n", "•\tImputing some of the 0 values with the group mean.\n", "\n", "•\tFiltering the Airbnb dataset for New York and 2 Bedrooms apartment.\n", "\n", "•\tGrouping the Airbnb data by zipcode and taking mean.\n", "\n", "•\tJoining the cleaned final Airbnb and Zillow dataset based on matching Zipcodes.\n", "\n", "\n", "### Additional KPIs added\n", "\n", "•\tCurrent Month Cost-April 2019(Calculated from Time series Forecasting). Also the cost for other months preceding Current Month were also added but they were not used anywhere.\n", "\n", "•\tNeighbourhood group cleansed(Extracted from Airbnb data to add to final dataframe).\n", "\n", "•\tExpected Revenue(Calulated Field).\n", "\n", "•\tBreakeven Period(Calculated Field).\n", "\n", "\n", "### Time Series Analysis\n", "\n", "Here the Zillow dataset contains the Time series of cost data and the data from January 2010 was taken to fit the Time series model and forecast the cost values upto the Current Month Cost which is April 2019 for all the 21 Zipcodes.\n", "Here for this purpose the Pyamid ARIMA package was used to perform the AutoARIMA and get the forecast values.\n", "\n", "\n", "### Visual Analysis:\n", "\n", "The following plots and analysis was carried out in this project,\n", "\n", "•\tVisualizing the Zipcodes in Real Time.\n", "\n", "•\tPreliminary Review Analysis:\n", "\n", " Review Accuracy vs Reviews Ratings\n", "\n", " Reviews Ratings Vs No of Reviews Vs Neighbourhood\n", "\n", "•\tAnalysis of Availability:\n", "\n", " Bar plots of Availability for all Zipcodes\n", " \n", " Availability- Revenue Analysis\n", " \n", " Availability- Cost Analysis\n", " \n", "•\tCorrelation between Revenue, Cost, Reviews and Availability\n", "\n", "•\tDistribution of Revenue and Cost\n", "\n", " Violin Plot of Revenue\n", " \n", " Violin Plot of Cost\n", " \n", "•\tRevenue-Cost Analysis\n", "\n", "•\tBreak Even Analysis\n", "\n", "•\t3-D Scatter Plot Between Revenue, Cost and Breakeven period\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/vnd.plotly.v1+html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "#Importing the Libraries\n", "\n", "import pandas as pd \n", "import numpy as np \n", "\n", "# Matplotlib is for plotting graphs\n", "import matplotlib.pyplot as plt \n", "# matplotlib inline will display the graphs right below the cell\n", "%matplotlib inline \n", "\n", "# Plotly is used for Interactive Visualization\n", "import plotly.plotly as py \n", "from plotly.offline import init_notebook_mode, iplot \n", "init_notebook_mode(connected=True) \n", "import plotly.graph_objs as go \n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shari\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2698: DtypeWarning:\n", "\n", "Columns (43,88) have mixed types. Specify dtype option on import or set low_memory=False.\n", "\n" ] } ], "source": [ "# Importing the Respective Datasets\n", "\n", "airbnb = pd.read_csv(\"listings.csv\")\n", "zillow = pd.read_csv(\"Zip_Zhvi_2bedroom.csv\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(40753, 95)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "airbnb.shape" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8946, 262)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zillow.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Quality Check- Phase I" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Since there are many columns in these datasets, I have created a function to display all the columns as a list. This helps us to see all the columns in the Jupyter Notebook" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to return all the Columns in a List Format:\n", "\n", "def cols(dataset):\n", " return(dataset.columns.tolist())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['id',\n", " 'listing_url',\n", " 'scrape_id',\n", " 'last_scraped',\n", " 'name',\n", " 'summary',\n", " 'space',\n", " 'description',\n", " 'experiences_offered',\n", " 'neighborhood_overview',\n", " 'notes',\n", " 'transit',\n", " 'access',\n", " 'interaction',\n", " 'house_rules',\n", " 'thumbnail_url',\n", " 'medium_url',\n", " 'picture_url',\n", " 'xl_picture_url',\n", " 'host_id',\n", " 'host_url',\n", " 'host_name',\n", " 'host_since',\n", " 'host_location',\n", " 'host_about',\n", " 'host_response_time',\n", " 'host_response_rate',\n", " 'host_acceptance_rate',\n", " 'host_is_superhost',\n", " 'host_thumbnail_url',\n", " 'host_picture_url',\n", " 'host_neighbourhood',\n", " 'host_listings_count',\n", " 'host_total_listings_count',\n", " 'host_verifications',\n", " 'host_has_profile_pic',\n", " 'host_identity_verified',\n", " 'street',\n", " 'neighbourhood',\n", " 'neighbourhood_cleansed',\n", " 'neighbourhood_group_cleansed',\n", " 'city',\n", " 'state',\n", " 'zipcode',\n", " 'market',\n", " 'smart_location',\n", " 'country_code',\n", " 'country',\n", " 'latitude',\n", " 'longitude',\n", " 'is_location_exact',\n", " 'property_type',\n", " 'room_type',\n", " 'accommodates',\n", " 'bathrooms',\n", " 'bedrooms',\n", " 'beds',\n", " 'bed_type',\n", " 'amenities',\n", " 'square_feet',\n", " 'price',\n", " 'weekly_price',\n", " 'monthly_price',\n", " 'security_deposit',\n", " 'cleaning_fee',\n", " 'guests_included',\n", " 'extra_people',\n", " 'minimum_nights',\n", " 'maximum_nights',\n", " 'calendar_updated',\n", " 'has_availability',\n", " 'availability_30',\n", " 'availability_60',\n", " 'availability_90',\n", " 'availability_365',\n", " 'calendar_last_scraped',\n", " 'number_of_reviews',\n", " 'first_review',\n", " 'last_review',\n", " 'review_scores_rating',\n", " 'review_scores_accuracy',\n", " 'review_scores_cleanliness',\n", " 'review_scores_checkin',\n", " 'review_scores_communication',\n", " 'review_scores_location',\n", " 'review_scores_value',\n", " 'requires_license',\n", " 'license',\n", " 'jurisdiction_names',\n", " 'instant_bookable',\n", " 'cancellation_policy',\n", " 'require_guest_profile_picture',\n", " 'require_guest_phone_verification',\n", " 'calculated_host_listings_count',\n", " 'reviews_per_month']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cols(airbnb)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['RegionID',\n", " 'RegionName',\n", " 'City',\n", " 'State',\n", " 'Metro',\n", " 'CountyName',\n", " 'SizeRank',\n", " '1996-04',\n", " '1996-05',\n", " '1996-06',\n", " '1996-07',\n", " '1996-08',\n", " '1996-09',\n", " '1996-10',\n", " '1996-11',\n", " '1996-12',\n", " '1997-01',\n", " '1997-02',\n", " '1997-03',\n", " '1997-04',\n", " '1997-05',\n", " '1997-06',\n", " '1997-07',\n", " '1997-08',\n", " '1997-09',\n", " '1997-10',\n", " '1997-11',\n", " '1997-12',\n", " '1998-01',\n", " '1998-02',\n", " '1998-03',\n", " '1998-04',\n", " '1998-05',\n", " '1998-06',\n", " '1998-07',\n", " '1998-08',\n", " '1998-09',\n", " '1998-10',\n", " '1998-11',\n", " '1998-12',\n", " '1999-01',\n", " '1999-02',\n", " '1999-03',\n", " '1999-04',\n", " '1999-05',\n", " '1999-06',\n", " '1999-07',\n", " '1999-08',\n", " '1999-09',\n", " '1999-10',\n", " '1999-11',\n", " '1999-12',\n", " '2000-01',\n", " '2000-02',\n", " '2000-03',\n", " '2000-04',\n", " '2000-05',\n", " '2000-06',\n", " '2000-07',\n", " '2000-08',\n", " '2000-09',\n", " '2000-10',\n", " '2000-11',\n", " '2000-12',\n", " '2001-01',\n", " '2001-02',\n", " '2001-03',\n", " '2001-04',\n", " '2001-05',\n", " '2001-06',\n", " '2001-07',\n", " '2001-08',\n", " '2001-09',\n", " '2001-10',\n", " '2001-11',\n", " '2001-12',\n", " '2002-01',\n", " '2002-02',\n", " '2002-03',\n", " '2002-04',\n", " '2002-05',\n", " '2002-06',\n", " '2002-07',\n", " '2002-08',\n", " '2002-09',\n", " '2002-10',\n", " '2002-11',\n", " '2002-12',\n", " '2003-01',\n", " '2003-02',\n", " '2003-03',\n", " '2003-04',\n", " '2003-05',\n", " '2003-06',\n", " '2003-07',\n", " '2003-08',\n", " '2003-09',\n", " '2003-10',\n", " '2003-11',\n", " '2003-12',\n", " '2004-01',\n", " '2004-02',\n", " '2004-03',\n", " '2004-04',\n", " '2004-05',\n", " '2004-06',\n", " '2004-07',\n", " '2004-08',\n", " '2004-09',\n", " '2004-10',\n", " '2004-11',\n", " '2004-12',\n", " '2005-01',\n", " '2005-02',\n", " '2005-03',\n", " '2005-04',\n", " '2005-05',\n", " '2005-06',\n", " '2005-07',\n", " '2005-08',\n", " '2005-09',\n", " '2005-10',\n", " '2005-11',\n", " '2005-12',\n", " '2006-01',\n", " '2006-02',\n", " '2006-03',\n", " '2006-04',\n", " '2006-05',\n", " '2006-06',\n", " '2006-07',\n", " '2006-08',\n", " '2006-09',\n", " '2006-10',\n", " '2006-11',\n", " '2006-12',\n", " '2007-01',\n", " '2007-02',\n", " '2007-03',\n", " '2007-04',\n", " '2007-05',\n", " '2007-06',\n", " '2007-07',\n", " '2007-08',\n", " '2007-09',\n", " '2007-10',\n", " '2007-11',\n", " '2007-12',\n", " '2008-01',\n", " '2008-02',\n", " '2008-03',\n", " '2008-04',\n", " '2008-05',\n", " '2008-06',\n", " '2008-07',\n", " '2008-08',\n", " '2008-09',\n", " '2008-10',\n", " '2008-11',\n", " '2008-12',\n", " '2009-01',\n", " '2009-02',\n", " '2009-03',\n", " '2009-04',\n", " '2009-05',\n", " '2009-06',\n", " '2009-07',\n", " '2009-08',\n", " '2009-09',\n", " '2009-10',\n", " '2009-11',\n", " '2009-12',\n", " '2010-01',\n", " '2010-02',\n", " '2010-03',\n", " '2010-04',\n", " '2010-05',\n", " '2010-06',\n", " '2010-07',\n", " '2010-08',\n", " '2010-09',\n", " '2010-10',\n", " '2010-11',\n", " '2010-12',\n", " '2011-01',\n", " '2011-02',\n", " '2011-03',\n", " '2011-04',\n", " '2011-05',\n", " '2011-06',\n", " '2011-07',\n", " '2011-08',\n", " '2011-09',\n", " '2011-10',\n", " '2011-11',\n", " '2011-12',\n", " '2012-01',\n", " '2012-02',\n", " '2012-03',\n", " '2012-04',\n", " '2012-05',\n", " '2012-06',\n", " '2012-07',\n", " '2012-08',\n", " '2012-09',\n", " '2012-10',\n", " '2012-11',\n", " '2012-12',\n", " '2013-01',\n", " '2013-02',\n", " '2013-03',\n", " '2013-04',\n", " '2013-05',\n", " '2013-06',\n", " '2013-07',\n", " '2013-08',\n", " '2013-09',\n", " '2013-10',\n", " '2013-11',\n", " '2013-12',\n", " '2014-01',\n", " '2014-02',\n", " '2014-03',\n", " '2014-04',\n", " '2014-05',\n", " '2014-06',\n", " '2014-07',\n", " '2014-08',\n", " '2014-09',\n", " '2014-10',\n", " '2014-11',\n", " '2014-12',\n", " '2015-01',\n", " '2015-02',\n", " '2015-03',\n", " '2015-04',\n", " '2015-05',\n", " '2015-06',\n", " '2015-07',\n", " '2015-08',\n", " '2015-09',\n", " '2015-10',\n", " '2015-11',\n", " '2015-12',\n", " '2016-01',\n", " '2016-02',\n", " '2016-03',\n", " '2016-04',\n", " '2016-05',\n", " '2016-06',\n", " '2016-07',\n", " '2016-08',\n", " '2016-09',\n", " '2016-10',\n", " '2016-11',\n", " '2016-12',\n", " '2017-01',\n", " '2017-02',\n", " '2017-03',\n", " '2017-04',\n", " '2017-05',\n", " '2017-06']" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cols(zillow)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to determine the Missing Value Percent in every Column of a Dataset\n", "\n", "def mis_value_percent(dataset):\n", " return(100* dataset.isnull().sum()/ len(dataset))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RegionID 0.000000\n", "RegionName 0.000000\n", "City 0.000000\n", "State 0.000000\n", "Metro 2.794545\n", "CountyName 0.000000\n", "SizeRank 0.000000\n", "1996-04 29.756316\n", "1996-05 28.862061\n", "1996-06 28.862061\n", "1996-07 28.806170\n", "1996-08 28.794992\n", "1996-09 28.794992\n", "1996-10 28.794992\n", "1996-11 28.683210\n", "1996-12 28.683210\n", "1997-01 28.414934\n", "1997-02 23.619495\n", "1997-03 23.395931\n", "1997-04 23.395931\n", "1997-05 23.395931\n", "1997-06 23.373575\n", "1997-07 23.373575\n", "1997-08 22.289291\n", "1997-09 22.255757\n", "1997-10 22.255757\n", "1997-11 22.222222\n", "1997-12 22.177510\n", "1998-01 21.987480\n", "1998-02 20.366644\n", " ... \n", "2015-01 0.000000\n", "2015-02 0.000000\n", "2015-03 0.000000\n", "2015-04 0.000000\n", "2015-05 0.000000\n", "2015-06 0.000000\n", "2015-07 0.000000\n", "2015-08 0.000000\n", "2015-09 0.000000\n", "2015-10 0.000000\n", "2015-11 0.000000\n", "2015-12 0.000000\n", "2016-01 0.000000\n", "2016-02 0.201207\n", "2016-03 0.201207\n", "2016-04 0.201207\n", "2016-05 0.201207\n", "2016-06 0.000000\n", "2016-07 0.000000\n", "2016-08 0.000000\n", "2016-09 0.000000\n", "2016-10 0.000000\n", "2016-11 0.000000\n", "2016-12 0.033535\n", "2017-01 0.000000\n", "2017-02 0.000000\n", "2017-03 0.000000\n", "2017-04 0.000000\n", "2017-05 0.000000\n", "2017-06 0.000000\n", "Length: 262, dtype: float64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mis_value_percent(zillow)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Most of the Missing values in zillow data are associated with the time series data which I had later neglected the missing columns alone while performing time series analysis for that." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Checking for Duplicates" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(40753, 95)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "airbnb.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(40753, 95)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "airbnb.drop_duplicates().shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No duplicates are found in AirBnB data as the dimensions didn't change" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8946, 262)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zillow.shape" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8946, 262)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zillow.drop_duplicates().shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly no duplicate rows are found in Zillow dataset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Check for Negative Values" ] }, { "cell_type": "code", "execution_count": 14, "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", "
idlisting_urlscrape_idlast_scrapednamesummaryspacedescriptionexperiences_offeredneighborhood_overview...review_scores_valuerequires_licenselicensejurisdiction_namesinstant_bookablecancellation_policyrequire_guest_profile_picturerequire_guest_phone_verificationcalculated_host_listings_countreviews_per_month
\n", "

0 rows × 95 columns

\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [id, listing_url, scrape_id, last_scraped, name, summary, space, description, experiences_offered, neighborhood_overview, notes, transit, access, interaction, house_rules, thumbnail_url, medium_url, picture_url, xl_picture_url, host_id, host_url, host_name, host_since, host_location, host_about, host_response_time, host_response_rate, host_acceptance_rate, host_is_superhost, host_thumbnail_url, host_picture_url, host_neighbourhood, host_listings_count, host_total_listings_count, host_verifications, host_has_profile_pic, host_identity_verified, street, neighbourhood, neighbourhood_cleansed, neighbourhood_group_cleansed, city, state, zipcode, market, smart_location, country_code, country, latitude, longitude, is_location_exact, property_type, room_type, accommodates, bathrooms, bedrooms, beds, bed_type, amenities, square_feet, price, weekly_price, monthly_price, security_deposit, cleaning_fee, guests_included, extra_people, minimum_nights, maximum_nights, calendar_updated, has_availability, availability_30, availability_60, availability_90, availability_365, calendar_last_scraped, number_of_reviews, first_review, last_review, review_scores_rating, review_scores_accuracy, review_scores_cleanliness, review_scores_checkin, review_scores_communication, review_scores_location, review_scores_value, requires_license, license, jurisdiction_names, instant_bookable, cancellation_policy, require_guest_profile_picture, require_guest_phone_verification, calculated_host_listings_count, reviews_per_month]\n", "Index: []\n", "\n", "[0 rows x 95 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "airbnb[(airbnb < 0).all(1)]" ] }, { "cell_type": "code", "execution_count": 15, "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", "
RegionIDRegionNameCityStateMetroCountyNameSizeRank1996-041996-051996-06...2016-092016-102016-112016-122017-012017-022017-032017-042017-052017-06
\n", "

0 rows × 262 columns

\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [RegionID, RegionName, City, State, Metro, CountyName, SizeRank, 1996-04, 1996-05, 1996-06, 1996-07, 1996-08, 1996-09, 1996-10, 1996-11, 1996-12, 1997-01, 1997-02, 1997-03, 1997-04, 1997-05, 1997-06, 1997-07, 1997-08, 1997-09, 1997-10, 1997-11, 1997-12, 1998-01, 1998-02, 1998-03, 1998-04, 1998-05, 1998-06, 1998-07, 1998-08, 1998-09, 1998-10, 1998-11, 1998-12, 1999-01, 1999-02, 1999-03, 1999-04, 1999-05, 1999-06, 1999-07, 1999-08, 1999-09, 1999-10, 1999-11, 1999-12, 2000-01, 2000-02, 2000-03, 2000-04, 2000-05, 2000-06, 2000-07, 2000-08, 2000-09, 2000-10, 2000-11, 2000-12, 2001-01, 2001-02, 2001-03, 2001-04, 2001-05, 2001-06, 2001-07, 2001-08, 2001-09, 2001-10, 2001-11, 2001-12, 2002-01, 2002-02, 2002-03, 2002-04, 2002-05, 2002-06, 2002-07, 2002-08, 2002-09, 2002-10, 2002-11, 2002-12, 2003-01, 2003-02, 2003-03, 2003-04, 2003-05, 2003-06, 2003-07, 2003-08, 2003-09, 2003-10, 2003-11, 2003-12, ...]\n", "Index: []\n", "\n", "[0 rows x 262 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zillow[(zillow < 0).all(1)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No negative values are found in both the dataframes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Munging" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['New York', 'Chicago', 'El Paso', ..., \"Hart'S Location\",\n", " 'Waterville Valley', 'Shelburne Falls'], dtype=object)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zillow.City.unique()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 10025\n", "1 60657\n", "2 10023\n", "3 60614\n", "4 79936\n", "5 60640\n", "6 94109\n", "7 77494\n", "8 32162\n", "9 60647\n", "10 37211\n", "11 37013\n", "12 60618\n", "13 10128\n", "14 10011\n", "15 28269\n", "16 77573\n", "17 30349\n", "18 90046\n", "19 77584\n", "20 10003\n", "21 60613\n", "22 78660\n", "23 75052\n", "24 20009\n", "25 20002\n", "26 21234\n", "27 63376\n", "28 30044\n", "29 60629\n", " ... \n", "8916 47640\n", "8917 92333\n", "8918 3605\n", "8919 47968\n", "8920 47597\n", "8921 80515\n", "8922 3282\n", "8923 55781\n", "8924 96148\n", "8925 3457\n", "8926 80456\n", "8927 80510\n", "8928 1255\n", "8929 95497\n", "8930 55053\n", "8931 95728\n", "8932 97149\n", "8933 3279\n", "8934 12480\n", "8935 80481\n", "8936 1270\n", "8937 3812\n", "8938 3215\n", "8939 47965\n", "8940 3765\n", "8941 80532\n", "8942 12429\n", "8943 97028\n", "8944 1338\n", "8945 3293\n", "Name: RegionName, Length: 8946, dtype: int64" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zillow.RegionName" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Cleaning the Zillow Data:\n", "\n", "def zillow_clean(dataset, city_of_interest):\n", " \n", " #Filtering Out the City Based on the Requirement\n", " dataset=dataset[dataset.City==city_of_interest]\n", " \n", " # Renaming the Column Name \"RegionName\" to \"zipcode\"\n", " dataset.rename(columns= {\"RegionName\": \"zipcode\"}, inplace= True)\n", " \n", " # Converting the zipcode column to integer format\n", " dataset['zipcode']= dataset['zipcode'].astype(int)\n", " return dataset" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shari\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py:2746: SettingWithCopyWarning:\n", "\n", "\n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n", "C:\\Users\\shari\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:12: SettingWithCopyWarning:\n", "\n", "\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: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", "\n" ] } ], "source": [ "# Using the Function and Storing it as zillow\n", "\n", "zillow=zillow_clean(zillow, \"New York\")" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(25, 262)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "zillow.shape" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "id 0.000000\n", "listing_url 0.000000\n", "scrape_id 0.000000\n", "last_scraped 0.000000\n", "name 0.085883\n", "summary 3.962898\n", "space 31.585405\n", "description 0.046622\n", "experiences_offered 0.000000\n", "neighborhood_overview 42.018992\n", "notes 64.157240\n", "transit 37.526072\n", "access 42.136775\n", "interaction 44.845778\n", "house_rules 36.399774\n", "thumbnail_url 21.142002\n", "medium_url 21.142002\n", "picture_url 0.000000\n", "xl_picture_url 21.142002\n", "host_id 0.000000\n", "host_url 0.000000\n", "host_name 0.615906\n", "host_since 0.615906\n", "host_location 1.020784\n", "host_about 38.505141\n", "host_response_time 32.247933\n", "host_response_rate 32.247933\n", "host_acceptance_rate 100.000000\n", "host_is_superhost 0.615906\n", "host_thumbnail_url 0.615906\n", " ... \n", "guests_included 0.000000\n", "extra_people 0.000000\n", "minimum_nights 0.000000\n", "maximum_nights 0.000000\n", "calendar_updated 0.000000\n", "has_availability 100.000000\n", "availability_30 0.000000\n", "availability_60 0.000000\n", "availability_90 0.000000\n", "availability_365 0.000000\n", "calendar_last_scraped 0.000000\n", "number_of_reviews 0.000000\n", "first_review 22.817952\n", "last_review 22.538218\n", "review_scores_rating 24.351581\n", "review_scores_accuracy 24.579786\n", "review_scores_cleanliness 24.501264\n", "review_scores_checkin 24.626408\n", "review_scores_communication 24.503718\n", "review_scores_location 24.628862\n", "review_scores_value 24.633769\n", "requires_license 0.000000\n", "license 100.000000\n", "jurisdiction_names 99.980370\n", "instant_bookable 0.000000\n", "cancellation_policy 0.000000\n", "require_guest_profile_picture 0.000000\n", "require_guest_phone_verification 0.000000\n", "calculated_host_listings_count 0.000000\n", "reviews_per_month 22.817952\n", "Length: 95, dtype: float64" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mis_value_percent(airbnb)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(40753, 95)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "airbnb.shape" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to clean up the Airbnb Dataset and Filter it based on the Number of Bedrooms\n", "\n", "def airbnb_clean(dataset, number_of_bedrooms):\n", " \n", " \n", " # Remove the Dollar Sign in the Price Column\n", " dataset['price']=dataset['price'].replace( '[\\$,)]','', regex=True ).astype(float)\n", " \n", " # Some rows have their postal code along with the zip code and we will be needing only the Zipcode(5 numbers alone)\n", " dataset['zipcode']= dataset['zipcode'].str[:5]\n", " \n", " # Removing the Nan values from Zipcodes\n", " dataset['zipcode'] = pd.to_numeric(dataset['zipcode'], errors='coerce')\n", " dataset.dropna(subset=['zipcode'], inplace=True)\n", " dataset['zipcode']= dataset['zipcode'].astype(int)\n", " \n", " # Here data cleaning was performed on Reviews below since they are used further down the analyses\n", " # Converting the 0 values in the number_of_reviews with their group(zipcode) mean values\n", " dataset['number_of_reviews']=dataset.groupby('zipcode')['number_of_reviews'].transform(lambda x: x.replace(0,x.mean()))\n", "\n", " # Removing the NA values in those 2 columns and replacing with their group(zipcode) mean values\n", " dataset[['review_scores_rating', 'review_scores_accuracy']]=dataset.groupby('zipcode')['review_scores_rating', 'review_scores_accuracy'].transform(lambda x: x.fillna(x.mean()))\n", " \n", " # Filter by the Number of Bedrooms\n", " dataset= dataset.loc[dataset.bedrooms ==number_of_bedrooms]\n", " \n", " \n", " return dataset" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Using the above function to Filter out the 2 Bedrooms data and store it in airbnb\n", "airbnb= airbnb_clean(airbnb,2)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3882, 95)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Resulting Shape\n", "airbnb.shape" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "id int64\n", "listing_url object\n", "scrape_id float64\n", "last_scraped object\n", "name object\n", "summary object\n", "space object\n", "description object\n", "experiences_offered object\n", "neighborhood_overview object\n", "notes object\n", "transit object\n", "access object\n", "interaction object\n", "house_rules object\n", "thumbnail_url object\n", "medium_url object\n", "picture_url object\n", "xl_picture_url object\n", "host_id int64\n", "host_url object\n", "host_name object\n", "host_since object\n", "host_location object\n", "host_about object\n", "host_response_time object\n", "host_response_rate object\n", "host_acceptance_rate float64\n", "host_is_superhost object\n", "host_thumbnail_url object\n", " ... \n", "guests_included int64\n", "extra_people object\n", "minimum_nights int64\n", "maximum_nights int64\n", "calendar_updated object\n", "has_availability float64\n", "availability_30 int64\n", "availability_60 int64\n", "availability_90 int64\n", "availability_365 int64\n", "calendar_last_scraped object\n", "number_of_reviews float64\n", "first_review object\n", "last_review object\n", "review_scores_rating float64\n", "review_scores_accuracy float64\n", "review_scores_cleanliness float64\n", "review_scores_checkin float64\n", "review_scores_communication float64\n", "review_scores_location float64\n", "review_scores_value float64\n", "requires_license object\n", "license float64\n", "jurisdiction_names object\n", "instant_bookable object\n", "cancellation_policy object\n", "require_guest_profile_picture object\n", "require_guest_phone_verification object\n", "calculated_host_listings_count int64\n", "reviews_per_month float64\n", "Length: 95, dtype: object" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Checking if zipcode is converted to Integer Format\n", "airbnb.dtypes" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10462, 10469, 11102, 11105, 11370, 11417, 11416, 10458, 10305,\n", " 11692, 11103, 11106, 11101, 11356, 11228, 10006, 10004, 10280,\n", " 11209, 11220, 11360, 11233, 11221, 11216, 11213, 11238, 11205,\n", " 11206, 11237, 11694, 11001, 11426, 11214, 11204, 11201, 11217,\n", " 11218, 11219, 11235, 11224, 11225, 11226, 11203, 10455, 10454,\n", " 11212, 11207, 11385, 10002, 10013, 10038, 11236, 11231, 10011,\n", " 10010, 10001, 10003, 10014, 10036, 10473, 10304, 10451, 10452,\n", " 11368, 10465, 11208, 11369, 11210, 10029, 10026, 10035, 10037,\n", " 10128, 10027, 10459, 11373, 10012, 10009, 10016, 10475, 11691,\n", " 10270, 10005, 11230, 11234, 11358, 11354, 10018, 11109, 10463,\n", " 10019, 10022, 10017, 10306, 11378, 11377, 11379, 10025, 10467,\n", " 10301, 11215, 10461, 11374, 11418, 11693, 10044, 7310, 10312,\n", " 11422, 11229, 11223, 11420, 11434, 11412, 11104, 10460, 11232,\n", " 10111, 10007, 10028, 10065, 10021, 10075, 10162, 10024, 10023,\n", " 10069, 10466, 10032, 10033, 10040, 10310, 11211, 11249, 11222],\n", " dtype=int64)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Checking if Zipcode is in correct format\n", "airbnb.zipcode.unique()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "id 0.000000\n", "listing_url 0.000000\n", "scrape_id 0.000000\n", "last_scraped 0.000000\n", "name 0.025760\n", "summary 4.070067\n", "space 25.837197\n", "description 0.025760\n", "experiences_offered 0.000000\n", "neighborhood_overview 38.021638\n", "notes 61.746522\n", "transit 34.389490\n", "access 40.340031\n", "interaction 42.606904\n", "house_rules 31.942298\n", "thumbnail_url 24.343122\n", "medium_url 24.343122\n", "picture_url 0.000000\n", "xl_picture_url 24.343122\n", "host_id 0.000000\n", "host_url 0.000000\n", "host_name 0.283359\n", "host_since 0.283359\n", "host_location 0.489438\n", "host_about 34.209171\n", "host_response_time 27.408552\n", "host_response_rate 27.408552\n", "host_acceptance_rate 100.000000\n", "host_is_superhost 0.283359\n", "host_thumbnail_url 0.283359\n", " ... \n", "guests_included 0.000000\n", "extra_people 0.000000\n", "minimum_nights 0.000000\n", "maximum_nights 0.000000\n", "calendar_updated 0.000000\n", "has_availability 100.000000\n", "availability_30 0.000000\n", "availability_60 0.000000\n", "availability_90 0.000000\n", "availability_365 0.000000\n", "calendar_last_scraped 0.000000\n", "number_of_reviews 0.000000\n", "first_review 19.809377\n", "last_review 19.500258\n", "review_scores_rating 0.025760\n", "review_scores_accuracy 0.025760\n", "review_scores_cleanliness 20.942813\n", "review_scores_checkin 21.045853\n", "review_scores_communication 20.968573\n", "review_scores_location 21.045853\n", "review_scores_value 21.045853\n", "requires_license 0.000000\n", "license 100.000000\n", "jurisdiction_names 99.974240\n", "instant_bookable 0.000000\n", "cancellation_policy 0.000000\n", "require_guest_profile_picture 0.000000\n", "require_guest_phone_verification 0.000000\n", "calculated_host_listings_count 0.000000\n", "reviews_per_month 19.809377\n", "Length: 95, dtype: float64" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mis_value_percent(airbnb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Joining the Cleaned Zillow and Cleaned Airbnb Datasets" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to basically group the Airbnb based on Zipcodes and then Join with the Zillow Data\n", "\n", "def group_join(x,y):\n", " \n", " # Since our Airbnb has lot of properties in each Zipcodes- Grouping by the Zipcode and taking the mean\n", " airbnb_meandf=x.groupby('zipcode',as_index=False).mean()\n", " \n", " # Joining this groupped by Dataframe with the y dataframe which will be Zillow Dataframe\n", " final=pd.merge(airbnb_meandf, y, on='zipcode')\n", " \n", " return final" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
zipcodeidscrape_idhost_idhost_acceptance_ratehost_listings_counthost_total_listings_countlatitudelongitudeaccommodates...2016-092016-102016-112016-122017-012017-022017-032017-042017-052017-06
0100039.124661e+062.017050e+132.496037e+07NaN1.6460181.64601840.728902-73.9882584.566372...1932800193040019375001935100.0191570019165001965700204530021091002147000
1100119.889107e+062.017050e+133.005599e+07NaN1.4482761.44827640.742371-73.9997524.517241...2354000235550023522002332100.0231330023196002342100236590024197002480400
2100131.054726e+072.017050e+132.783653e+07NaN1.4126981.41269840.719555-74.0040754.281250...3347100330550032611003244000.0323140031833003160200319350032622003316500
3100148.654217e+062.017050e+132.054620e+07NaN1.5376341.53763440.734209-74.0042404.344086...2480800244320024301002452900.0245120024419002460900249490024984002491600
4100211.022891e+072.017050e+133.568867e+07NaN1.5263161.52631640.768441-73.9566284.263158...1668300166480016595001656000.0164370016498001688500173140017741001815600
5100229.963782e+062.017050e+134.129974e+07NaN1.3947371.39473740.758886-73.9667005.447368...1773200176060017620001776800.0177520017745001812700191460019978002031600
6100238.424752e+062.017050e+133.053048e+07NaN2.8888892.88888940.777581-73.9814864.666667...1993500198070019609001951300.0193780019298001955000202240020950002142300
7100257.849437e+062.017050e+132.567103e+07NaN1.5714291.57142940.798025-73.9663554.821429...1374400136410013663001354800.0132750013173001333700135210013900001431000
8100281.038785e+072.017050e+133.790560e+07NaN1.3750001.37500040.775367-73.9509344.281250...1814600182040018100001786500.0178710018011001847900192280020157002083900
9100368.401201e+062.017050e+133.853206e+07NaN73.50000073.50000040.754810-73.9878244.750000...1766400174980017441001737900.0172280017366001750100173550017171001712900
10101281.079017e+072.017050e+132.984589e+07NaN1.3214291.32142940.781842-73.9495374.357143...1526000152370015272001541600.0155780015829001598900164610017205001787100
11103041.590640e+062.017050e+137.534770e+06NaN1.0000001.00000040.626721-74.0767213.500000...284500287100290700294700.0299000303800308300313800321300328300
12103051.368595e+072.017050e+135.535834e+07NaN1.5555561.55555640.596360-74.0773714.555556...373500378600382700385300.0387900394500403800412000418900425100
13103068.328929e+062.017050e+135.237069e+07NaN2.0000002.00000040.568879-74.1115655.500000...316100318300321200322900.0325400331700339000343500347800352900
14103121.800434e+072.017050e+131.197988e+08NaN1.0000001.00000040.546331-74.1837012.000000...325400326600328400330300.0333600339300345000348400351700355000
15112019.298929e+062.017050e+132.327364e+07NaN1.4516131.45161340.692611-73.9905764.451613...1340200133870013506001375600.0139020013981001399900140050014073001420700
16112159.035422e+062.017050e+132.460656e+07NaN1.4227641.42276440.666241-73.9845274.266129...98220099200010026001021400.0103930010408001035800105000010662001070800
17112176.866520e+062.017050e+131.988437e+07NaN1.2833331.28333340.681377-73.9790683.983333...1207600120980012162001221400.0122560012250001219600123810012764001302300
18112317.697324e+062.017050e+132.171201e+07NaN1.5507251.55072540.680632-74.0000494.391304...1128000115240011660001166500.0116660011829001202200121320012117001202900
19112341.066553e+072.017050e+132.752097e+07NaN1.3333331.33333340.623074-73.9259434.166667...448400452300457200461200.0464400466400470900475700477100476900
20114349.374263e+062.017050e+134.863844e+07NaN1.0000001.00000040.662033-73.7698004.000000...342100348300356100358400.0357500361900370800377100380200382300
\n", "

21 rows × 295 columns

\n", "
" ], "text/plain": [ " zipcode id scrape_id host_id host_acceptance_rate \\\n", "0 10003 9.124661e+06 2.017050e+13 2.496037e+07 NaN \n", "1 10011 9.889107e+06 2.017050e+13 3.005599e+07 NaN \n", "2 10013 1.054726e+07 2.017050e+13 2.783653e+07 NaN \n", "3 10014 8.654217e+06 2.017050e+13 2.054620e+07 NaN \n", "4 10021 1.022891e+07 2.017050e+13 3.568867e+07 NaN \n", "5 10022 9.963782e+06 2.017050e+13 4.129974e+07 NaN \n", "6 10023 8.424752e+06 2.017050e+13 3.053048e+07 NaN \n", "7 10025 7.849437e+06 2.017050e+13 2.567103e+07 NaN \n", "8 10028 1.038785e+07 2.017050e+13 3.790560e+07 NaN \n", "9 10036 8.401201e+06 2.017050e+13 3.853206e+07 NaN \n", "10 10128 1.079017e+07 2.017050e+13 2.984589e+07 NaN \n", "11 10304 1.590640e+06 2.017050e+13 7.534770e+06 NaN \n", "12 10305 1.368595e+07 2.017050e+13 5.535834e+07 NaN \n", "13 10306 8.328929e+06 2.017050e+13 5.237069e+07 NaN \n", "14 10312 1.800434e+07 2.017050e+13 1.197988e+08 NaN \n", "15 11201 9.298929e+06 2.017050e+13 2.327364e+07 NaN \n", "16 11215 9.035422e+06 2.017050e+13 2.460656e+07 NaN \n", "17 11217 6.866520e+06 2.017050e+13 1.988437e+07 NaN \n", "18 11231 7.697324e+06 2.017050e+13 2.171201e+07 NaN \n", "19 11234 1.066553e+07 2.017050e+13 2.752097e+07 NaN \n", "20 11434 9.374263e+06 2.017050e+13 4.863844e+07 NaN \n", "\n", " host_listings_count host_total_listings_count latitude longitude \\\n", "0 1.646018 1.646018 40.728902 -73.988258 \n", "1 1.448276 1.448276 40.742371 -73.999752 \n", "2 1.412698 1.412698 40.719555 -74.004075 \n", "3 1.537634 1.537634 40.734209 -74.004240 \n", "4 1.526316 1.526316 40.768441 -73.956628 \n", "5 1.394737 1.394737 40.758886 -73.966700 \n", "6 2.888889 2.888889 40.777581 -73.981486 \n", "7 1.571429 1.571429 40.798025 -73.966355 \n", "8 1.375000 1.375000 40.775367 -73.950934 \n", "9 73.500000 73.500000 40.754810 -73.987824 \n", "10 1.321429 1.321429 40.781842 -73.949537 \n", "11 1.000000 1.000000 40.626721 -74.076721 \n", "12 1.555556 1.555556 40.596360 -74.077371 \n", "13 2.000000 2.000000 40.568879 -74.111565 \n", "14 1.000000 1.000000 40.546331 -74.183701 \n", "15 1.451613 1.451613 40.692611 -73.990576 \n", "16 1.422764 1.422764 40.666241 -73.984527 \n", "17 1.283333 1.283333 40.681377 -73.979068 \n", "18 1.550725 1.550725 40.680632 -74.000049 \n", "19 1.333333 1.333333 40.623074 -73.925943 \n", "20 1.000000 1.000000 40.662033 -73.769800 \n", "\n", " accommodates ... 2016-09 2016-10 2016-11 2016-12 2017-01 \\\n", "0 4.566372 ... 1932800 1930400 1937500 1935100.0 1915700 \n", "1 4.517241 ... 2354000 2355500 2352200 2332100.0 2313300 \n", "2 4.281250 ... 3347100 3305500 3261100 3244000.0 3231400 \n", "3 4.344086 ... 2480800 2443200 2430100 2452900.0 2451200 \n", "4 4.263158 ... 1668300 1664800 1659500 1656000.0 1643700 \n", "5 5.447368 ... 1773200 1760600 1762000 1776800.0 1775200 \n", "6 4.666667 ... 1993500 1980700 1960900 1951300.0 1937800 \n", "7 4.821429 ... 1374400 1364100 1366300 1354800.0 1327500 \n", "8 4.281250 ... 1814600 1820400 1810000 1786500.0 1787100 \n", "9 4.750000 ... 1766400 1749800 1744100 1737900.0 1722800 \n", "10 4.357143 ... 1526000 1523700 1527200 1541600.0 1557800 \n", "11 3.500000 ... 284500 287100 290700 294700.0 299000 \n", "12 4.555556 ... 373500 378600 382700 385300.0 387900 \n", "13 5.500000 ... 316100 318300 321200 322900.0 325400 \n", "14 2.000000 ... 325400 326600 328400 330300.0 333600 \n", "15 4.451613 ... 1340200 1338700 1350600 1375600.0 1390200 \n", "16 4.266129 ... 982200 992000 1002600 1021400.0 1039300 \n", "17 3.983333 ... 1207600 1209800 1216200 1221400.0 1225600 \n", "18 4.391304 ... 1128000 1152400 1166000 1166500.0 1166600 \n", "19 4.166667 ... 448400 452300 457200 461200.0 464400 \n", "20 4.000000 ... 342100 348300 356100 358400.0 357500 \n", "\n", " 2017-02 2017-03 2017-04 2017-05 2017-06 \n", "0 1916500 1965700 2045300 2109100 2147000 \n", "1 2319600 2342100 2365900 2419700 2480400 \n", "2 3183300 3160200 3193500 3262200 3316500 \n", "3 2441900 2460900 2494900 2498400 2491600 \n", "4 1649800 1688500 1731400 1774100 1815600 \n", "5 1774500 1812700 1914600 1997800 2031600 \n", "6 1929800 1955000 2022400 2095000 2142300 \n", "7 1317300 1333700 1352100 1390000 1431000 \n", "8 1801100 1847900 1922800 2015700 2083900 \n", "9 1736600 1750100 1735500 1717100 1712900 \n", "10 1582900 1598900 1646100 1720500 1787100 \n", "11 303800 308300 313800 321300 328300 \n", "12 394500 403800 412000 418900 425100 \n", "13 331700 339000 343500 347800 352900 \n", "14 339300 345000 348400 351700 355000 \n", "15 1398100 1399900 1400500 1407300 1420700 \n", "16 1040800 1035800 1050000 1066200 1070800 \n", "17 1225000 1219600 1238100 1276400 1302300 \n", "18 1182900 1202200 1213200 1211700 1202900 \n", "19 466400 470900 475700 477100 476900 \n", "20 361900 370800 377100 380200 382300 \n", "\n", "[21 rows x 295 columns]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Storing it in a Variable Called \"df\"\n", "\n", "df= group_join(airbnb, zillow)\n", "df" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['zipcode',\n", " 'id',\n", " 'scrape_id',\n", " 'host_id',\n", " 'host_acceptance_rate',\n", " 'host_listings_count',\n", " 'host_total_listings_count',\n", " 'latitude',\n", " 'longitude',\n", " 'accommodates',\n", " 'bathrooms',\n", " 'bedrooms',\n", " 'beds',\n", " 'square_feet',\n", " 'price',\n", " 'guests_included',\n", " 'minimum_nights',\n", " 'maximum_nights',\n", " 'has_availability',\n", " 'availability_30',\n", " 'availability_60',\n", " 'availability_90',\n", " 'availability_365',\n", " 'number_of_reviews',\n", " 'review_scores_rating',\n", " 'review_scores_accuracy',\n", " 'review_scores_cleanliness',\n", " 'review_scores_checkin',\n", " 'review_scores_communication',\n", " 'review_scores_location',\n", " 'review_scores_value',\n", " 'license',\n", " 'calculated_host_listings_count',\n", " 'reviews_per_month',\n", " 'RegionID',\n", " 'City',\n", " 'State',\n", " 'Metro',\n", " 'CountyName',\n", " 'SizeRank',\n", " '1996-04',\n", " '1996-05',\n", " '1996-06',\n", " '1996-07',\n", " '1996-08',\n", " '1996-09',\n", " '1996-10',\n", " '1996-11',\n", " '1996-12',\n", " '1997-01',\n", " '1997-02',\n", " '1997-03',\n", " '1997-04',\n", " '1997-05',\n", " '1997-06',\n", " '1997-07',\n", " '1997-08',\n", " '1997-09',\n", " '1997-10',\n", " '1997-11',\n", " '1997-12',\n", " '1998-01',\n", " '1998-02',\n", " '1998-03',\n", " '1998-04',\n", " '1998-05',\n", " '1998-06',\n", " '1998-07',\n", " '1998-08',\n", " '1998-09',\n", " '1998-10',\n", " '1998-11',\n", " '1998-12',\n", " '1999-01',\n", " '1999-02',\n", " '1999-03',\n", " '1999-04',\n", " '1999-05',\n", " '1999-06',\n", " '1999-07',\n", " '1999-08',\n", " '1999-09',\n", " '1999-10',\n", " '1999-11',\n", " '1999-12',\n", " '2000-01',\n", " '2000-02',\n", " '2000-03',\n", " '2000-04',\n", " '2000-05',\n", " '2000-06',\n", " '2000-07',\n", " '2000-08',\n", " '2000-09',\n", " '2000-10',\n", " '2000-11',\n", " '2000-12',\n", " '2001-01',\n", " '2001-02',\n", " '2001-03',\n", " '2001-04',\n", " '2001-05',\n", " '2001-06',\n", " '2001-07',\n", " '2001-08',\n", " '2001-09',\n", " '2001-10',\n", " '2001-11',\n", " '2001-12',\n", " '2002-01',\n", " '2002-02',\n", " '2002-03',\n", " '2002-04',\n", " '2002-05',\n", " '2002-06',\n", " '2002-07',\n", " '2002-08',\n", " '2002-09',\n", " '2002-10',\n", " '2002-11',\n", " '2002-12',\n", " '2003-01',\n", " '2003-02',\n", " '2003-03',\n", " '2003-04',\n", " '2003-05',\n", " '2003-06',\n", " '2003-07',\n", " '2003-08',\n", " '2003-09',\n", " '2003-10',\n", " '2003-11',\n", " '2003-12',\n", " '2004-01',\n", " '2004-02',\n", " '2004-03',\n", " '2004-04',\n", " '2004-05',\n", " '2004-06',\n", " '2004-07',\n", " '2004-08',\n", " '2004-09',\n", " '2004-10',\n", " '2004-11',\n", " '2004-12',\n", " '2005-01',\n", " '2005-02',\n", " '2005-03',\n", " '2005-04',\n", " '2005-05',\n", " '2005-06',\n", " '2005-07',\n", " '2005-08',\n", " '2005-09',\n", " '2005-10',\n", " '2005-11',\n", " '2005-12',\n", " '2006-01',\n", " '2006-02',\n", " '2006-03',\n", " '2006-04',\n", " '2006-05',\n", " '2006-06',\n", " '2006-07',\n", " '2006-08',\n", " '2006-09',\n", " '2006-10',\n", " '2006-11',\n", " '2006-12',\n", " '2007-01',\n", " '2007-02',\n", " '2007-03',\n", " '2007-04',\n", " '2007-05',\n", " '2007-06',\n", " '2007-07',\n", " '2007-08',\n", " '2007-09',\n", " '2007-10',\n", " '2007-11',\n", " '2007-12',\n", " '2008-01',\n", " '2008-02',\n", " '2008-03',\n", " '2008-04',\n", " '2008-05',\n", " '2008-06',\n", " '2008-07',\n", " '2008-08',\n", " '2008-09',\n", " '2008-10',\n", " '2008-11',\n", " '2008-12',\n", " '2009-01',\n", " '2009-02',\n", " '2009-03',\n", " '2009-04',\n", " '2009-05',\n", " '2009-06',\n", " '2009-07',\n", " '2009-08',\n", " '2009-09',\n", " '2009-10',\n", " '2009-11',\n", " '2009-12',\n", " '2010-01',\n", " '2010-02',\n", " '2010-03',\n", " '2010-04',\n", " '2010-05',\n", " '2010-06',\n", " '2010-07',\n", " '2010-08',\n", " '2010-09',\n", " '2010-10',\n", " '2010-11',\n", " '2010-12',\n", " '2011-01',\n", " '2011-02',\n", " '2011-03',\n", " '2011-04',\n", " '2011-05',\n", " '2011-06',\n", " '2011-07',\n", " '2011-08',\n", " '2011-09',\n", " '2011-10',\n", " '2011-11',\n", " '2011-12',\n", " '2012-01',\n", " '2012-02',\n", " '2012-03',\n", " '2012-04',\n", " '2012-05',\n", " '2012-06',\n", " '2012-07',\n", " '2012-08',\n", " '2012-09',\n", " '2012-10',\n", " '2012-11',\n", " '2012-12',\n", " '2013-01',\n", " '2013-02',\n", " '2013-03',\n", " '2013-04',\n", " '2013-05',\n", " '2013-06',\n", " '2013-07',\n", " '2013-08',\n", " '2013-09',\n", " '2013-10',\n", " '2013-11',\n", " '2013-12',\n", " '2014-01',\n", " '2014-02',\n", " '2014-03',\n", " '2014-04',\n", " '2014-05',\n", " '2014-06',\n", " '2014-07',\n", " '2014-08',\n", " '2014-09',\n", " '2014-10',\n", " '2014-11',\n", " '2014-12',\n", " '2015-01',\n", " '2015-02',\n", " '2015-03',\n", " '2015-04',\n", " '2015-05',\n", " '2015-06',\n", " '2015-07',\n", " '2015-08',\n", " '2015-09',\n", " '2015-10',\n", " '2015-11',\n", " '2015-12',\n", " '2016-01',\n", " '2016-02',\n", " '2016-03',\n", " '2016-04',\n", " '2016-05',\n", " '2016-06',\n", " '2016-07',\n", " '2016-08',\n", " '2016-09',\n", " '2016-10',\n", " '2016-11',\n", " '2016-12',\n", " '2017-01',\n", " '2017-02',\n", " '2017-03',\n", " '2017-04',\n", " '2017-05',\n", " '2017-06']" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cols(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Time Series Analysis and Forecasting to determine the Current Month Cost" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shari\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:3: DeprecationWarning:\n", "\n", "\n", ".ix is deprecated. Please use\n", ".loc for label based indexing or\n", ".iloc for positional indexing\n", "\n", "See the documentation here:\n", "http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated\n", "\n" ] }, { "data": { "text/plain": [ "(21, 255)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Zillow data has time series and thus extracting the time series data to perform Time Series analysis and Forecasting\n", "\n", "timeseriesdf= df.ix[:,40:]\n", "timeseriesdf.shape" ] }, { "cell_type": "code", "execution_count": 33, "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", "
1996-041996-051996-061996-071996-081996-091996-101996-111996-121997-01...2016-092016-102016-112016-122017-012017-022017-032017-042017-052017-06
0NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...1932800193040019375001935100.0191570019165001965700204530021091002147000
1NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...2354000235550023522002332100.0231330023196002342100236590024197002480400
2NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...3347100330550032611003244000.0323140031833003160200319350032622003316500
3NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...2480800244320024301002452900.0245120024419002460900249490024984002491600
4NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...1668300166480016595001656000.0164370016498001688500173140017741001815600
\n", "

5 rows × 255 columns

\n", "
" ], "text/plain": [ " 1996-04 1996-05 1996-06 1996-07 1996-08 1996-09 1996-10 1996-11 \\\n", "0 NaN NaN NaN NaN NaN NaN NaN NaN \n", "1 NaN NaN NaN NaN NaN NaN NaN NaN \n", "2 NaN NaN NaN NaN NaN NaN NaN NaN \n", "3 NaN NaN NaN NaN NaN NaN NaN NaN \n", "4 NaN NaN NaN NaN NaN NaN NaN NaN \n", "\n", " 1996-12 1997-01 ... 2016-09 2016-10 2016-11 2016-12 2017-01 \\\n", "0 NaN NaN ... 1932800 1930400 1937500 1935100.0 1915700 \n", "1 NaN NaN ... 2354000 2355500 2352200 2332100.0 2313300 \n", "2 NaN NaN ... 3347100 3305500 3261100 3244000.0 3231400 \n", "3 NaN NaN ... 2480800 2443200 2430100 2452900.0 2451200 \n", "4 NaN NaN ... 1668300 1664800 1659500 1656000.0 1643700 \n", "\n", " 2017-02 2017-03 2017-04 2017-05 2017-06 \n", "0 1916500 1965700 2045300 2109100 2147000 \n", "1 2319600 2342100 2365900 2419700 2480400 \n", "2 3183300 3160200 3193500 3262200 3316500 \n", "3 2441900 2460900 2494900 2498400 2491600 \n", "4 1649800 1688500 1731400 1774100 1815600 \n", "\n", "[5 rows x 255 columns]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeseriesdf.head()" ] }, { "cell_type": "code", "execution_count": 34, "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", "
0123456789...11121314151617181920
1996-04NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...117500.0131900.0138100.0153000.0NaNNaNNaNNaNNaNNaN
1996-05NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...113700.0131900.0136900.0149800.0NaNNaNNaNNaNNaNNaN
1996-06NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...111200.0131400.0135900.0146900.0NaNNaNNaNNaNNaNNaN
1996-07NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...111100.0130800.0134500.0144800.0NaNNaNNaNNaNNaNNaN
1996-08NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...110400.0130200.0132900.0143000.0NaNNaNNaNNaNNaNNaN
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 11 12 \\\n", "1996-04 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 117500.0 131900.0 \n", "1996-05 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 113700.0 131900.0 \n", "1996-06 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 111200.0 131400.0 \n", "1996-07 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 111100.0 130800.0 \n", "1996-08 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 110400.0 130200.0 \n", "\n", " 13 14 15 16 17 18 19 20 \n", "1996-04 138100.0 153000.0 NaN NaN NaN NaN NaN NaN \n", "1996-05 136900.0 149800.0 NaN NaN NaN NaN NaN NaN \n", "1996-06 135900.0 146900.0 NaN NaN NaN NaN NaN NaN \n", "1996-07 134500.0 144800.0 NaN NaN NaN NaN NaN NaN \n", "1996-08 132900.0 143000.0 NaN NaN NaN NaN NaN NaN \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Transposing the Time Series Dataset to arrange it in sequential order so that it becomes easy to perform Time Series analysis\n", "\n", "timeseriesdf= timeseriesdf.T\n", "timeseriesdf.head()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(255, 21)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeseriesdf.shape" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Converting the Index to a DataTime Format\n", "\n", "timeseriesdf.index = pd.to_datetime(timeseriesdf.index)" ] }, { "cell_type": "code", "execution_count": 37, "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", "
0123456789...11121314151617181920
1996-04-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...117500.0131900.0138100.0153000.0NaNNaNNaNNaNNaNNaN
1996-05-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...113700.0131900.0136900.0149800.0NaNNaNNaNNaNNaNNaN
1996-06-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...111200.0131400.0135900.0146900.0NaNNaNNaNNaNNaNNaN
1996-07-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...111100.0130800.0134500.0144800.0NaNNaNNaNNaNNaNNaN
1996-08-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...110400.0130200.0132900.0143000.0NaNNaNNaNNaNNaNNaN
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 11 12 \\\n", "1996-04-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 117500.0 131900.0 \n", "1996-05-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 113700.0 131900.0 \n", "1996-06-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 111200.0 131400.0 \n", "1996-07-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 111100.0 130800.0 \n", "1996-08-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 110400.0 130200.0 \n", "\n", " 13 14 15 16 17 18 19 20 \n", "1996-04-01 138100.0 153000.0 NaN NaN NaN NaN NaN NaN \n", "1996-05-01 136900.0 149800.0 NaN NaN NaN NaN NaN NaN \n", "1996-06-01 135900.0 146900.0 NaN NaN NaN NaN NaN NaN \n", "1996-07-01 134500.0 144800.0 NaN NaN NaN NaN NaN NaN \n", "1996-08-01 132900.0 143000.0 NaN NaN NaN NaN NaN NaN \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeseriesdf.head()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nkiRJktb9P3kXLN7uZk3oAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualizing the Time Series for all the 21 Zipcodes\n", "\n", "# Changing the Figure Size\n", "from pylab import rcParams\n", "rcParams['figure.figsize'] = 15, 7\n", "\n", "# Plotting the Time Series Plot\n", "timeseriesdf.plot()\n", "\n", "# marking the Red Dotted line on 2010-01-01\n", "plt.axvline(pd.to_datetime('2010-01-01'), color='r', linestyle='--', lw=2)\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the plot, there are many irregular patterns and trends along with many missing values before the red vertical line. So the time series data after the vertical line was considered. \n", "\n", "Those Irregular patterns can be attributed to the recession during the period of 2008 and 2009 vitnessing a sudden drop in the costs.\n", "\n", "Also after the vertical line, the trend seems to be linearly increasing without any abrupt changes for all the Zipcodes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Forecasting Current Month Cost" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " Sometimes, pyramid doesn't do Auto ARIMA and throws up an error. So in order for it to work efficiently, it is better to have these versions installed" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.6.3 |Anaconda, Inc.| (default, Oct 15 2017, 03:27:45) [MSC v.1900 64 bit (AMD64)]\n", "1.14.2\n", "1.0.0\n", "0.19.1\n", "0.20.3\n", "0.9.0\n", "0.9.0\n", "19.0.3\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shari\\Anaconda3\\lib\\site-packages\\pyramid\\__init__.py:68: UserWarning:\n", "\n", "\n", " The 'pyramid' package will be migrating to a new namespace beginning in \n", " version 1.0.0: 'pmdarima'. This is due to a package name collision with the\n", " Pyramid web framework. For more information, see Issue #34:\n", " \n", " https://github.com/tgsmith61591/pyramid/issues/34\n", " \n", " The package will subsequently be installable via the name 'pmdarima'; the\n", " only functional change to the user will be the import name. All imports\n", " from 'pyramid' will change to 'pmdarima'.\n", " \n", "\n" ] } ], "source": [ "# Checking Versions\n", "\n", "import sys; print(sys.version)\n", "import numpy; print(numpy.__version__)\n", "import scipy; print(scipy.__version__)\n", "import sklearn; print(sklearn.__version__)\n", "import pandas; print(pandas.__version__)\n", "import statsmodels; print(statsmodels.__version__)\n", "import pyramid; print(pyramid.__version__)\n", "import pip; print(pip.__version__)" ] }, { "cell_type": "code", "execution_count": 40, "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", "
0123456789...11121314151617181920
1996-04-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...117500.0131900.0138100.0153000.0NaNNaNNaNNaNNaNNaN
1996-05-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...113700.0131900.0136900.0149800.0NaNNaNNaNNaNNaNNaN
1996-06-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...111200.0131400.0135900.0146900.0NaNNaNNaNNaNNaNNaN
1996-07-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...111100.0130800.0134500.0144800.0NaNNaNNaNNaNNaNNaN
1996-08-01NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...110400.0130200.0132900.0143000.0NaNNaNNaNNaNNaNNaN
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 11 12 \\\n", "1996-04-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 117500.0 131900.0 \n", "1996-05-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 113700.0 131900.0 \n", "1996-06-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 111200.0 131400.0 \n", "1996-07-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 111100.0 130800.0 \n", "1996-08-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 110400.0 130200.0 \n", "\n", " 13 14 15 16 17 18 19 20 \n", "1996-04-01 138100.0 153000.0 NaN NaN NaN NaN NaN NaN \n", "1996-05-01 136900.0 149800.0 NaN NaN NaN NaN NaN NaN \n", "1996-06-01 135900.0 146900.0 NaN NaN NaN NaN NaN NaN \n", "1996-07-01 134500.0 144800.0 NaN NaN NaN NaN NaN NaN \n", "1996-08-01 132900.0 143000.0 NaN NaN NaN NaN NaN NaN \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeseriesdf.head()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Filtering out the Timeseries Data From 2010-01-01\n", "\n", "timeseriesdf=timeseriesdf[timeseriesdf.index>= '2010-01-01']" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 0.0\n", "1 0.0\n", "2 0.0\n", "3 0.0\n", "4 0.0\n", "5 0.0\n", "6 0.0\n", "7 0.0\n", "8 0.0\n", "9 0.0\n", "10 0.0\n", "11 0.0\n", "12 0.0\n", "13 0.0\n", "14 0.0\n", "15 0.0\n", "16 0.0\n", "17 0.0\n", "18 0.0\n", "19 0.0\n", "20 0.0\n", "dtype: float64" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Check for Missing Values\n", "\n", "mis_value_percent(timeseriesdf)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...11121314151617181920
2010-01-011227800.01378600.02268700.01451800.01163900.01323000.01271900.0813300.01126000.01238600.0...266200.0331100.0297200.0296200.0742800.0529300.0619000.0591300.0378700.0315400.0
2010-02-011202600.01372300.02294100.01454400.01176400.01338500.01252300.0821500.01107300.01227700.0...266100.0330000.0296500.0296400.0747500.0544800.0619300.0589600.0386600.0320300.0
2010-03-011207100.01393100.02273600.01494500.01184500.01344600.01262300.0831700.01116100.01230700.0...264700.0328100.0296100.0296900.0750300.0540900.0612700.0589500.0391600.0315800.0
2010-04-011220100.01430000.02261700.01542200.01192700.01348300.01279200.0845100.01138500.01237300.0...262500.0327200.0295200.0296700.0753800.0538300.0612800.0589300.0392900.0314000.0
2010-05-011252400.01462100.02282800.01587300.01203100.01350800.01309000.0854500.01175900.01250400.0...260800.0324500.0293600.0295100.0758900.0536800.0614500.0590900.0392900.0311800.0
2010-06-011285700.01476800.02288000.01616000.01203500.01365100.01335300.0858900.01199700.01260500.0...260700.0321600.0292700.0293800.0764600.0539400.0611300.0595800.0393800.0312600.0
2010-07-011278300.01479000.02275700.01612300.01200400.01390900.01353800.0859200.01198700.01260700.0...260900.0321000.0293300.0294500.0767300.0546600.0605900.0599000.0392800.0313100.0
2010-08-011279100.01476600.02281300.01605800.01202900.01402700.01366400.0863500.01205000.01257300.0...259900.0320600.0294400.0295600.0769400.0553100.0604400.0600500.0390800.0307000.0
2010-09-011326700.01461200.02302800.01592500.01210100.01403700.01372100.0876000.01237500.01249000.0...259200.0318900.0294600.0295300.0772400.0553900.0610100.0602700.0390400.0298200.0
2010-10-011376500.01448300.02290900.01584200.01210300.01404900.01381300.0886100.01276200.01234500.0...258000.0316500.0293100.0292900.0779100.0559000.0618000.0607600.0390000.0293200.0
2010-11-011368900.01441600.02267800.01587600.01211700.01403500.01385000.0890000.01304400.01231800.0...256600.0315700.0291800.0291900.0785600.0569100.0624400.0617100.0389900.0290400.0
2010-12-011366000.01444300.02253600.01594300.01219100.01390200.01388100.0894200.01310800.01244100.0...255100.0316200.0290800.0292800.0786700.0573200.0627300.0632300.0388400.0286000.0
2011-01-011381300.01438600.02245300.01611700.01222500.01376600.01399100.0901800.01310700.01255300.0...254000.0316400.0289400.0293900.0782000.0573100.0628500.0642900.0387100.0276800.0
2011-02-011380700.01434100.02264200.01631800.01230600.01372400.01399800.0909500.01318200.01260500.0...253700.0315400.0288400.0293500.0782700.0579600.0630900.0642800.0385300.0263700.0
2011-03-011368500.01439300.02301000.01648800.01247400.01378100.01389300.0913300.01321900.01257500.0...253000.0313000.0288200.0291700.0785800.0588800.0635000.0643000.0380700.0251400.0
2011-04-011372700.01437700.02328600.01670500.01258000.01384600.01384700.0907400.01309200.01246800.0...251400.0308700.0285700.0289300.0784600.0592200.0636700.0646800.0377000.0245500.0
2011-05-011378000.01430300.02337000.01674300.01250800.01389600.01380900.0900000.01298700.01231400.0...250100.0306000.0281900.0287400.0785100.0592700.0635600.0651700.0377900.0243900.0
2011-06-011361700.01426800.02341500.01657100.01251500.01390200.01367900.0897700.01289000.01229400.0...248900.0305400.0279900.0285900.0795300.0600100.0640300.0656400.0377200.0242100.0
2011-07-011357800.01427800.02335200.01659200.01253100.01386600.01365400.0896300.01258400.01247200.0...247400.0304900.0280600.0284700.0799300.0610400.0648100.0665800.0373100.0242000.0
2011-08-011364400.01424600.02316700.01661800.01252000.01393100.01375100.0892300.01238900.01272200.0...245700.0304600.0280700.0283100.0798000.0616600.0652400.0671300.0371400.0245200.0
2011-09-011358000.01432800.02299900.01641600.01253800.01399900.01380400.0890400.01247100.01287700.0...242800.0303000.0279700.0281600.0801800.0619800.0654800.0667600.0370700.0247100.0
2011-10-011329800.01456500.02318700.01637800.01257900.01381500.01377000.0888600.01260600.01296700.0...240400.0300700.0278800.0281000.0808000.0619800.0657100.0656800.0368500.0245300.0
2011-11-011317800.01485100.02396400.01646600.01256600.01363900.01375100.0891700.01255000.01302500.0...238900.0299700.0277500.0280100.0808200.0617100.0655600.0646100.0366600.0244300.0
2011-12-011333200.01500200.02479200.01652100.01253500.01362700.01379000.0899500.01250200.01301800.0...237600.0299400.0276400.0278500.0805600.0611100.0653600.0638800.0365500.0244500.0
2012-01-011348500.01509600.02490300.01674800.01250500.01371500.01395200.0904400.01249200.01298000.0...235800.0297300.0275400.0276700.0805100.0605800.0650300.0638300.0362100.0245000.0
2012-02-011349500.01518500.02466000.01714300.01247700.01372000.01414500.0908200.01253400.01292300.0...233900.0295900.0274100.0275800.0813000.0606000.0650300.0648000.0360400.0247200.0
2012-03-011352200.01530800.02492400.01736800.01256800.01385500.01419000.0914000.01275300.01288500.0...232600.0296700.0273400.0276600.0825500.0611200.0652100.0657000.0361300.0252100.0
2012-04-011354100.01538000.02542800.01736800.01273600.01402800.01403100.0915100.01314200.01286600.0...231600.0297800.0273600.0277700.0835700.0615100.0653000.0661300.0362500.0254900.0
2012-05-011351900.01530500.02585500.01741200.01282200.01411600.01383200.0912300.01329400.01288000.0...230100.0298600.0273500.0278300.0839100.0615000.0654800.0662900.0363700.0256000.0
2012-06-011364200.01524500.02618100.01757700.01278600.01397400.01376700.0914000.01316900.01290900.0...229200.0299700.0273800.0279500.0836700.0616600.0666300.0669900.0365900.0257100.0
..................................................................
2015-01-011716300.01979200.03067600.02082800.01470700.01712000.01717700.01189700.01583200.01706000.0...247700.0316000.0284400.0305400.01253600.0877100.0948800.0955400.0392500.0283800.0
2015-02-011720500.01982900.03047400.02107300.01471900.01706400.01700100.01193700.01553800.01691400.0...249300.0314500.0283800.0304900.01264500.0890000.0958200.0959400.0396200.0285900.0
2015-03-011721800.02001600.03054500.02142400.01458700.01696900.01680400.01199900.01518000.01688700.0...251800.0312900.0282200.0304000.01270500.0907400.0978600.0960700.0401200.0287300.0
2015-04-011741800.02014700.03071700.02167100.01442700.01672900.01676400.01201400.01508800.01694400.0...254600.0313100.0283700.0304600.01276300.0920600.01013600.0969000.0404900.0287900.0
2015-05-011775800.02023500.03078300.02189400.01436400.01656300.01685600.01202600.01515900.01703200.0...257700.0315500.0287800.0306600.01289600.0925700.01028300.0987700.0409000.0288800.0
2015-06-011796500.02055300.03073100.02220100.01445800.01670900.01708100.01214200.01532800.01709600.0...260900.0318700.0291800.0308700.01303800.0936300.01020200.01004400.0414500.0289900.0
2015-07-011821500.02078300.03089400.02250300.01471800.01696900.01730400.01235200.01548500.01709900.0...262400.0322000.0294500.0310200.01305300.0954000.01024200.01022900.0419000.0294300.0
2015-08-011870100.02083600.03121700.02275700.01493700.01713900.01751800.01258000.01550500.01703200.0...262700.0324900.0297100.0311300.01298900.0969700.01052400.01044200.0423300.0302500.0
2015-09-011901000.02088800.03134200.02301600.01515100.01718600.01778300.01287700.01550200.01697700.0...263300.0326600.0299300.0312400.01301000.0973200.01090500.01064800.0428700.0309300.0
2015-10-011904900.02110600.03152400.02314700.01542600.01721000.01810400.01307200.01560600.01693000.0...264900.0328800.0301500.0313800.01314200.0971300.01113800.01090400.0432500.0311600.0
2015-11-011914000.02127500.03173600.02322000.01556500.01717000.01831600.01313900.01575700.01685400.0...266200.0332100.0303600.0315100.01322800.0974100.01123100.01125400.0433400.0313100.0
2015-12-011926400.02168900.03195000.02334500.01551500.01721700.01844400.01317100.01587100.01694300.0...267000.0336700.0304400.0315800.01320500.0978100.01137000.01144400.0435600.0315500.0
2016-01-011932200.02204700.03234600.02360300.01558800.01746200.01861600.01327400.01610900.01725400.0...267700.0341300.0303800.0316100.01318800.0975400.01161200.01138100.0437800.0318200.0
2016-02-011936700.02216100.03302400.02384700.01577200.01763200.01889600.01338800.01646100.01742000.0...268600.0344700.0304200.0316300.01325600.0967200.01179700.01121800.0436200.0320800.0
2016-03-011945200.02212500.03335800.02388200.01584500.01743800.01901500.01350400.01659500.01734500.0...269600.0347800.0306200.0316300.01333000.0963800.01192500.01103900.0434600.0325400.0
2016-04-011935600.02222600.03324200.02358300.01587300.01709600.01895300.01356600.01648100.01729700.0...271300.0351700.0307900.0317000.01334800.0962500.01194700.01082200.0437600.0329400.0
2016-05-011911200.02231900.03285100.02345800.01594100.01703500.01890200.01358500.01654800.01741800.0...273000.0356200.0309600.0318500.01333100.0966100.01198400.01067000.0440100.0331700.0
2016-06-011918700.02250800.03274100.02381700.01613000.01731000.01898400.01364000.01693800.01764700.0...274600.0359400.0312700.0320400.01334600.0971500.01203700.01077200.0437900.0332700.0
2016-07-011947600.02285200.03298600.02439700.01636600.01762600.01924500.01373300.01745600.01777000.0...277600.0363100.0315800.0322500.01339000.0975300.01206000.01093200.0438700.0334900.0
2016-08-011951300.02329100.03341100.02483000.01657500.01778100.01967300.01382600.01790400.01776200.0...281400.0367900.0316400.0324200.01343000.0976200.01206100.01108300.0443600.0338000.0
2016-09-011932800.02354000.03347100.02480800.01668300.01773200.01993500.01374400.01814600.01766400.0...284500.0373500.0316100.0325400.01340200.0982200.01207600.01128000.0448400.0342100.0
2016-10-011930400.02355500.03305500.02443200.01664800.01760600.01980700.01364100.01820400.01749800.0...287100.0378600.0318300.0326600.01338700.0992000.01209800.01152400.0452300.0348300.0
2016-11-011937500.02352200.03261100.02430100.01659500.01762000.01960900.01366300.01810000.01744100.0...290700.0382700.0321200.0328400.01350600.01002600.01216200.01166000.0457200.0356100.0
2016-12-011935100.02332100.03244000.02452900.01656000.01776800.01951300.01354800.01786500.01737900.0...294700.0385300.0322900.0330300.01375600.01021400.01221400.01166500.0461200.0358400.0
2017-01-011915700.02313300.03231400.02451200.01643700.01775200.01937800.01327500.01787100.01722800.0...299000.0387900.0325400.0333600.01390200.01039300.01225600.01166600.0464400.0357500.0
2017-02-011916500.02319600.03183300.02441900.01649800.01774500.01929800.01317300.01801100.01736600.0...303800.0394500.0331700.0339300.01398100.01040800.01225000.01182900.0466400.0361900.0
2017-03-011965700.02342100.03160200.02460900.01688500.01812700.01955000.01333700.01847900.01750100.0...308300.0403800.0339000.0345000.01399900.01035800.01219600.01202200.0470900.0370800.0
2017-04-012045300.02365900.03193500.02494900.01731400.01914600.02022400.01352100.01922800.01735500.0...313800.0412000.0343500.0348400.01400500.01050000.01238100.01213200.0475700.0377100.0
2017-05-012109100.02419700.03262200.02498400.01774100.01997800.02095000.01390000.02015700.01717100.0...321300.0418900.0347800.0351700.01407300.01066200.01276400.01211700.0477100.0380200.0
2017-06-012147000.02480400.03316500.02491600.01815600.02031600.02142300.01431000.02083900.01712900.0...328300.0425100.0352900.0355000.01420700.01070800.01302300.01202900.0476900.0382300.0
\n", "

90 rows × 21 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 \\\n", "2010-01-01 1227800.0 1378600.0 2268700.0 1451800.0 1163900.0 1323000.0 \n", "2010-02-01 1202600.0 1372300.0 2294100.0 1454400.0 1176400.0 1338500.0 \n", "2010-03-01 1207100.0 1393100.0 2273600.0 1494500.0 1184500.0 1344600.0 \n", "2010-04-01 1220100.0 1430000.0 2261700.0 1542200.0 1192700.0 1348300.0 \n", "2010-05-01 1252400.0 1462100.0 2282800.0 1587300.0 1203100.0 1350800.0 \n", "2010-06-01 1285700.0 1476800.0 2288000.0 1616000.0 1203500.0 1365100.0 \n", "2010-07-01 1278300.0 1479000.0 2275700.0 1612300.0 1200400.0 1390900.0 \n", "2010-08-01 1279100.0 1476600.0 2281300.0 1605800.0 1202900.0 1402700.0 \n", "2010-09-01 1326700.0 1461200.0 2302800.0 1592500.0 1210100.0 1403700.0 \n", "2010-10-01 1376500.0 1448300.0 2290900.0 1584200.0 1210300.0 1404900.0 \n", "2010-11-01 1368900.0 1441600.0 2267800.0 1587600.0 1211700.0 1403500.0 \n", "2010-12-01 1366000.0 1444300.0 2253600.0 1594300.0 1219100.0 1390200.0 \n", "2011-01-01 1381300.0 1438600.0 2245300.0 1611700.0 1222500.0 1376600.0 \n", "2011-02-01 1380700.0 1434100.0 2264200.0 1631800.0 1230600.0 1372400.0 \n", "2011-03-01 1368500.0 1439300.0 2301000.0 1648800.0 1247400.0 1378100.0 \n", "2011-04-01 1372700.0 1437700.0 2328600.0 1670500.0 1258000.0 1384600.0 \n", "2011-05-01 1378000.0 1430300.0 2337000.0 1674300.0 1250800.0 1389600.0 \n", "2011-06-01 1361700.0 1426800.0 2341500.0 1657100.0 1251500.0 1390200.0 \n", "2011-07-01 1357800.0 1427800.0 2335200.0 1659200.0 1253100.0 1386600.0 \n", "2011-08-01 1364400.0 1424600.0 2316700.0 1661800.0 1252000.0 1393100.0 \n", "2011-09-01 1358000.0 1432800.0 2299900.0 1641600.0 1253800.0 1399900.0 \n", "2011-10-01 1329800.0 1456500.0 2318700.0 1637800.0 1257900.0 1381500.0 \n", "2011-11-01 1317800.0 1485100.0 2396400.0 1646600.0 1256600.0 1363900.0 \n", "2011-12-01 1333200.0 1500200.0 2479200.0 1652100.0 1253500.0 1362700.0 \n", "2012-01-01 1348500.0 1509600.0 2490300.0 1674800.0 1250500.0 1371500.0 \n", "2012-02-01 1349500.0 1518500.0 2466000.0 1714300.0 1247700.0 1372000.0 \n", "2012-03-01 1352200.0 1530800.0 2492400.0 1736800.0 1256800.0 1385500.0 \n", "2012-04-01 1354100.0 1538000.0 2542800.0 1736800.0 1273600.0 1402800.0 \n", "2012-05-01 1351900.0 1530500.0 2585500.0 1741200.0 1282200.0 1411600.0 \n", "2012-06-01 1364200.0 1524500.0 2618100.0 1757700.0 1278600.0 1397400.0 \n", "... ... ... ... ... ... ... \n", "2015-01-01 1716300.0 1979200.0 3067600.0 2082800.0 1470700.0 1712000.0 \n", "2015-02-01 1720500.0 1982900.0 3047400.0 2107300.0 1471900.0 1706400.0 \n", "2015-03-01 1721800.0 2001600.0 3054500.0 2142400.0 1458700.0 1696900.0 \n", "2015-04-01 1741800.0 2014700.0 3071700.0 2167100.0 1442700.0 1672900.0 \n", "2015-05-01 1775800.0 2023500.0 3078300.0 2189400.0 1436400.0 1656300.0 \n", "2015-06-01 1796500.0 2055300.0 3073100.0 2220100.0 1445800.0 1670900.0 \n", "2015-07-01 1821500.0 2078300.0 3089400.0 2250300.0 1471800.0 1696900.0 \n", "2015-08-01 1870100.0 2083600.0 3121700.0 2275700.0 1493700.0 1713900.0 \n", "2015-09-01 1901000.0 2088800.0 3134200.0 2301600.0 1515100.0 1718600.0 \n", "2015-10-01 1904900.0 2110600.0 3152400.0 2314700.0 1542600.0 1721000.0 \n", "2015-11-01 1914000.0 2127500.0 3173600.0 2322000.0 1556500.0 1717000.0 \n", "2015-12-01 1926400.0 2168900.0 3195000.0 2334500.0 1551500.0 1721700.0 \n", "2016-01-01 1932200.0 2204700.0 3234600.0 2360300.0 1558800.0 1746200.0 \n", "2016-02-01 1936700.0 2216100.0 3302400.0 2384700.0 1577200.0 1763200.0 \n", "2016-03-01 1945200.0 2212500.0 3335800.0 2388200.0 1584500.0 1743800.0 \n", "2016-04-01 1935600.0 2222600.0 3324200.0 2358300.0 1587300.0 1709600.0 \n", "2016-05-01 1911200.0 2231900.0 3285100.0 2345800.0 1594100.0 1703500.0 \n", "2016-06-01 1918700.0 2250800.0 3274100.0 2381700.0 1613000.0 1731000.0 \n", "2016-07-01 1947600.0 2285200.0 3298600.0 2439700.0 1636600.0 1762600.0 \n", "2016-08-01 1951300.0 2329100.0 3341100.0 2483000.0 1657500.0 1778100.0 \n", "2016-09-01 1932800.0 2354000.0 3347100.0 2480800.0 1668300.0 1773200.0 \n", "2016-10-01 1930400.0 2355500.0 3305500.0 2443200.0 1664800.0 1760600.0 \n", "2016-11-01 1937500.0 2352200.0 3261100.0 2430100.0 1659500.0 1762000.0 \n", "2016-12-01 1935100.0 2332100.0 3244000.0 2452900.0 1656000.0 1776800.0 \n", "2017-01-01 1915700.0 2313300.0 3231400.0 2451200.0 1643700.0 1775200.0 \n", "2017-02-01 1916500.0 2319600.0 3183300.0 2441900.0 1649800.0 1774500.0 \n", "2017-03-01 1965700.0 2342100.0 3160200.0 2460900.0 1688500.0 1812700.0 \n", "2017-04-01 2045300.0 2365900.0 3193500.0 2494900.0 1731400.0 1914600.0 \n", "2017-05-01 2109100.0 2419700.0 3262200.0 2498400.0 1774100.0 1997800.0 \n", "2017-06-01 2147000.0 2480400.0 3316500.0 2491600.0 1815600.0 2031600.0 \n", "\n", " 6 7 8 9 ... 11 \\\n", "2010-01-01 1271900.0 813300.0 1126000.0 1238600.0 ... 266200.0 \n", "2010-02-01 1252300.0 821500.0 1107300.0 1227700.0 ... 266100.0 \n", "2010-03-01 1262300.0 831700.0 1116100.0 1230700.0 ... 264700.0 \n", "2010-04-01 1279200.0 845100.0 1138500.0 1237300.0 ... 262500.0 \n", "2010-05-01 1309000.0 854500.0 1175900.0 1250400.0 ... 260800.0 \n", "2010-06-01 1335300.0 858900.0 1199700.0 1260500.0 ... 260700.0 \n", "2010-07-01 1353800.0 859200.0 1198700.0 1260700.0 ... 260900.0 \n", "2010-08-01 1366400.0 863500.0 1205000.0 1257300.0 ... 259900.0 \n", "2010-09-01 1372100.0 876000.0 1237500.0 1249000.0 ... 259200.0 \n", "2010-10-01 1381300.0 886100.0 1276200.0 1234500.0 ... 258000.0 \n", "2010-11-01 1385000.0 890000.0 1304400.0 1231800.0 ... 256600.0 \n", "2010-12-01 1388100.0 894200.0 1310800.0 1244100.0 ... 255100.0 \n", "2011-01-01 1399100.0 901800.0 1310700.0 1255300.0 ... 254000.0 \n", "2011-02-01 1399800.0 909500.0 1318200.0 1260500.0 ... 253700.0 \n", "2011-03-01 1389300.0 913300.0 1321900.0 1257500.0 ... 253000.0 \n", "2011-04-01 1384700.0 907400.0 1309200.0 1246800.0 ... 251400.0 \n", "2011-05-01 1380900.0 900000.0 1298700.0 1231400.0 ... 250100.0 \n", "2011-06-01 1367900.0 897700.0 1289000.0 1229400.0 ... 248900.0 \n", "2011-07-01 1365400.0 896300.0 1258400.0 1247200.0 ... 247400.0 \n", "2011-08-01 1375100.0 892300.0 1238900.0 1272200.0 ... 245700.0 \n", "2011-09-01 1380400.0 890400.0 1247100.0 1287700.0 ... 242800.0 \n", "2011-10-01 1377000.0 888600.0 1260600.0 1296700.0 ... 240400.0 \n", "2011-11-01 1375100.0 891700.0 1255000.0 1302500.0 ... 238900.0 \n", "2011-12-01 1379000.0 899500.0 1250200.0 1301800.0 ... 237600.0 \n", "2012-01-01 1395200.0 904400.0 1249200.0 1298000.0 ... 235800.0 \n", "2012-02-01 1414500.0 908200.0 1253400.0 1292300.0 ... 233900.0 \n", "2012-03-01 1419000.0 914000.0 1275300.0 1288500.0 ... 232600.0 \n", "2012-04-01 1403100.0 915100.0 1314200.0 1286600.0 ... 231600.0 \n", "2012-05-01 1383200.0 912300.0 1329400.0 1288000.0 ... 230100.0 \n", "2012-06-01 1376700.0 914000.0 1316900.0 1290900.0 ... 229200.0 \n", "... ... ... ... ... ... ... \n", "2015-01-01 1717700.0 1189700.0 1583200.0 1706000.0 ... 247700.0 \n", "2015-02-01 1700100.0 1193700.0 1553800.0 1691400.0 ... 249300.0 \n", "2015-03-01 1680400.0 1199900.0 1518000.0 1688700.0 ... 251800.0 \n", "2015-04-01 1676400.0 1201400.0 1508800.0 1694400.0 ... 254600.0 \n", "2015-05-01 1685600.0 1202600.0 1515900.0 1703200.0 ... 257700.0 \n", "2015-06-01 1708100.0 1214200.0 1532800.0 1709600.0 ... 260900.0 \n", "2015-07-01 1730400.0 1235200.0 1548500.0 1709900.0 ... 262400.0 \n", "2015-08-01 1751800.0 1258000.0 1550500.0 1703200.0 ... 262700.0 \n", "2015-09-01 1778300.0 1287700.0 1550200.0 1697700.0 ... 263300.0 \n", "2015-10-01 1810400.0 1307200.0 1560600.0 1693000.0 ... 264900.0 \n", "2015-11-01 1831600.0 1313900.0 1575700.0 1685400.0 ... 266200.0 \n", "2015-12-01 1844400.0 1317100.0 1587100.0 1694300.0 ... 267000.0 \n", "2016-01-01 1861600.0 1327400.0 1610900.0 1725400.0 ... 267700.0 \n", "2016-02-01 1889600.0 1338800.0 1646100.0 1742000.0 ... 268600.0 \n", "2016-03-01 1901500.0 1350400.0 1659500.0 1734500.0 ... 269600.0 \n", "2016-04-01 1895300.0 1356600.0 1648100.0 1729700.0 ... 271300.0 \n", "2016-05-01 1890200.0 1358500.0 1654800.0 1741800.0 ... 273000.0 \n", "2016-06-01 1898400.0 1364000.0 1693800.0 1764700.0 ... 274600.0 \n", "2016-07-01 1924500.0 1373300.0 1745600.0 1777000.0 ... 277600.0 \n", "2016-08-01 1967300.0 1382600.0 1790400.0 1776200.0 ... 281400.0 \n", "2016-09-01 1993500.0 1374400.0 1814600.0 1766400.0 ... 284500.0 \n", "2016-10-01 1980700.0 1364100.0 1820400.0 1749800.0 ... 287100.0 \n", "2016-11-01 1960900.0 1366300.0 1810000.0 1744100.0 ... 290700.0 \n", "2016-12-01 1951300.0 1354800.0 1786500.0 1737900.0 ... 294700.0 \n", "2017-01-01 1937800.0 1327500.0 1787100.0 1722800.0 ... 299000.0 \n", "2017-02-01 1929800.0 1317300.0 1801100.0 1736600.0 ... 303800.0 \n", "2017-03-01 1955000.0 1333700.0 1847900.0 1750100.0 ... 308300.0 \n", "2017-04-01 2022400.0 1352100.0 1922800.0 1735500.0 ... 313800.0 \n", "2017-05-01 2095000.0 1390000.0 2015700.0 1717100.0 ... 321300.0 \n", "2017-06-01 2142300.0 1431000.0 2083900.0 1712900.0 ... 328300.0 \n", "\n", " 12 13 14 15 16 17 \\\n", "2010-01-01 331100.0 297200.0 296200.0 742800.0 529300.0 619000.0 \n", "2010-02-01 330000.0 296500.0 296400.0 747500.0 544800.0 619300.0 \n", "2010-03-01 328100.0 296100.0 296900.0 750300.0 540900.0 612700.0 \n", "2010-04-01 327200.0 295200.0 296700.0 753800.0 538300.0 612800.0 \n", "2010-05-01 324500.0 293600.0 295100.0 758900.0 536800.0 614500.0 \n", "2010-06-01 321600.0 292700.0 293800.0 764600.0 539400.0 611300.0 \n", "2010-07-01 321000.0 293300.0 294500.0 767300.0 546600.0 605900.0 \n", "2010-08-01 320600.0 294400.0 295600.0 769400.0 553100.0 604400.0 \n", "2010-09-01 318900.0 294600.0 295300.0 772400.0 553900.0 610100.0 \n", "2010-10-01 316500.0 293100.0 292900.0 779100.0 559000.0 618000.0 \n", "2010-11-01 315700.0 291800.0 291900.0 785600.0 569100.0 624400.0 \n", "2010-12-01 316200.0 290800.0 292800.0 786700.0 573200.0 627300.0 \n", "2011-01-01 316400.0 289400.0 293900.0 782000.0 573100.0 628500.0 \n", "2011-02-01 315400.0 288400.0 293500.0 782700.0 579600.0 630900.0 \n", "2011-03-01 313000.0 288200.0 291700.0 785800.0 588800.0 635000.0 \n", "2011-04-01 308700.0 285700.0 289300.0 784600.0 592200.0 636700.0 \n", "2011-05-01 306000.0 281900.0 287400.0 785100.0 592700.0 635600.0 \n", "2011-06-01 305400.0 279900.0 285900.0 795300.0 600100.0 640300.0 \n", "2011-07-01 304900.0 280600.0 284700.0 799300.0 610400.0 648100.0 \n", "2011-08-01 304600.0 280700.0 283100.0 798000.0 616600.0 652400.0 \n", "2011-09-01 303000.0 279700.0 281600.0 801800.0 619800.0 654800.0 \n", "2011-10-01 300700.0 278800.0 281000.0 808000.0 619800.0 657100.0 \n", "2011-11-01 299700.0 277500.0 280100.0 808200.0 617100.0 655600.0 \n", "2011-12-01 299400.0 276400.0 278500.0 805600.0 611100.0 653600.0 \n", "2012-01-01 297300.0 275400.0 276700.0 805100.0 605800.0 650300.0 \n", "2012-02-01 295900.0 274100.0 275800.0 813000.0 606000.0 650300.0 \n", "2012-03-01 296700.0 273400.0 276600.0 825500.0 611200.0 652100.0 \n", "2012-04-01 297800.0 273600.0 277700.0 835700.0 615100.0 653000.0 \n", "2012-05-01 298600.0 273500.0 278300.0 839100.0 615000.0 654800.0 \n", "2012-06-01 299700.0 273800.0 279500.0 836700.0 616600.0 666300.0 \n", "... ... ... ... ... ... ... \n", "2015-01-01 316000.0 284400.0 305400.0 1253600.0 877100.0 948800.0 \n", "2015-02-01 314500.0 283800.0 304900.0 1264500.0 890000.0 958200.0 \n", "2015-03-01 312900.0 282200.0 304000.0 1270500.0 907400.0 978600.0 \n", "2015-04-01 313100.0 283700.0 304600.0 1276300.0 920600.0 1013600.0 \n", "2015-05-01 315500.0 287800.0 306600.0 1289600.0 925700.0 1028300.0 \n", "2015-06-01 318700.0 291800.0 308700.0 1303800.0 936300.0 1020200.0 \n", "2015-07-01 322000.0 294500.0 310200.0 1305300.0 954000.0 1024200.0 \n", "2015-08-01 324900.0 297100.0 311300.0 1298900.0 969700.0 1052400.0 \n", "2015-09-01 326600.0 299300.0 312400.0 1301000.0 973200.0 1090500.0 \n", "2015-10-01 328800.0 301500.0 313800.0 1314200.0 971300.0 1113800.0 \n", "2015-11-01 332100.0 303600.0 315100.0 1322800.0 974100.0 1123100.0 \n", "2015-12-01 336700.0 304400.0 315800.0 1320500.0 978100.0 1137000.0 \n", "2016-01-01 341300.0 303800.0 316100.0 1318800.0 975400.0 1161200.0 \n", "2016-02-01 344700.0 304200.0 316300.0 1325600.0 967200.0 1179700.0 \n", "2016-03-01 347800.0 306200.0 316300.0 1333000.0 963800.0 1192500.0 \n", "2016-04-01 351700.0 307900.0 317000.0 1334800.0 962500.0 1194700.0 \n", "2016-05-01 356200.0 309600.0 318500.0 1333100.0 966100.0 1198400.0 \n", "2016-06-01 359400.0 312700.0 320400.0 1334600.0 971500.0 1203700.0 \n", "2016-07-01 363100.0 315800.0 322500.0 1339000.0 975300.0 1206000.0 \n", "2016-08-01 367900.0 316400.0 324200.0 1343000.0 976200.0 1206100.0 \n", "2016-09-01 373500.0 316100.0 325400.0 1340200.0 982200.0 1207600.0 \n", "2016-10-01 378600.0 318300.0 326600.0 1338700.0 992000.0 1209800.0 \n", "2016-11-01 382700.0 321200.0 328400.0 1350600.0 1002600.0 1216200.0 \n", "2016-12-01 385300.0 322900.0 330300.0 1375600.0 1021400.0 1221400.0 \n", "2017-01-01 387900.0 325400.0 333600.0 1390200.0 1039300.0 1225600.0 \n", "2017-02-01 394500.0 331700.0 339300.0 1398100.0 1040800.0 1225000.0 \n", "2017-03-01 403800.0 339000.0 345000.0 1399900.0 1035800.0 1219600.0 \n", "2017-04-01 412000.0 343500.0 348400.0 1400500.0 1050000.0 1238100.0 \n", "2017-05-01 418900.0 347800.0 351700.0 1407300.0 1066200.0 1276400.0 \n", "2017-06-01 425100.0 352900.0 355000.0 1420700.0 1070800.0 1302300.0 \n", "\n", " 18 19 20 \n", "2010-01-01 591300.0 378700.0 315400.0 \n", "2010-02-01 589600.0 386600.0 320300.0 \n", "2010-03-01 589500.0 391600.0 315800.0 \n", "2010-04-01 589300.0 392900.0 314000.0 \n", "2010-05-01 590900.0 392900.0 311800.0 \n", "2010-06-01 595800.0 393800.0 312600.0 \n", "2010-07-01 599000.0 392800.0 313100.0 \n", "2010-08-01 600500.0 390800.0 307000.0 \n", "2010-09-01 602700.0 390400.0 298200.0 \n", "2010-10-01 607600.0 390000.0 293200.0 \n", "2010-11-01 617100.0 389900.0 290400.0 \n", "2010-12-01 632300.0 388400.0 286000.0 \n", "2011-01-01 642900.0 387100.0 276800.0 \n", "2011-02-01 642800.0 385300.0 263700.0 \n", "2011-03-01 643000.0 380700.0 251400.0 \n", "2011-04-01 646800.0 377000.0 245500.0 \n", "2011-05-01 651700.0 377900.0 243900.0 \n", "2011-06-01 656400.0 377200.0 242100.0 \n", "2011-07-01 665800.0 373100.0 242000.0 \n", "2011-08-01 671300.0 371400.0 245200.0 \n", "2011-09-01 667600.0 370700.0 247100.0 \n", "2011-10-01 656800.0 368500.0 245300.0 \n", "2011-11-01 646100.0 366600.0 244300.0 \n", "2011-12-01 638800.0 365500.0 244500.0 \n", "2012-01-01 638300.0 362100.0 245000.0 \n", "2012-02-01 648000.0 360400.0 247200.0 \n", "2012-03-01 657000.0 361300.0 252100.0 \n", "2012-04-01 661300.0 362500.0 254900.0 \n", "2012-05-01 662900.0 363700.0 256000.0 \n", "2012-06-01 669900.0 365900.0 257100.0 \n", "... ... ... ... \n", "2015-01-01 955400.0 392500.0 283800.0 \n", "2015-02-01 959400.0 396200.0 285900.0 \n", "2015-03-01 960700.0 401200.0 287300.0 \n", "2015-04-01 969000.0 404900.0 287900.0 \n", "2015-05-01 987700.0 409000.0 288800.0 \n", "2015-06-01 1004400.0 414500.0 289900.0 \n", "2015-07-01 1022900.0 419000.0 294300.0 \n", "2015-08-01 1044200.0 423300.0 302500.0 \n", "2015-09-01 1064800.0 428700.0 309300.0 \n", "2015-10-01 1090400.0 432500.0 311600.0 \n", "2015-11-01 1125400.0 433400.0 313100.0 \n", "2015-12-01 1144400.0 435600.0 315500.0 \n", "2016-01-01 1138100.0 437800.0 318200.0 \n", "2016-02-01 1121800.0 436200.0 320800.0 \n", "2016-03-01 1103900.0 434600.0 325400.0 \n", "2016-04-01 1082200.0 437600.0 329400.0 \n", "2016-05-01 1067000.0 440100.0 331700.0 \n", "2016-06-01 1077200.0 437900.0 332700.0 \n", "2016-07-01 1093200.0 438700.0 334900.0 \n", "2016-08-01 1108300.0 443600.0 338000.0 \n", "2016-09-01 1128000.0 448400.0 342100.0 \n", "2016-10-01 1152400.0 452300.0 348300.0 \n", "2016-11-01 1166000.0 457200.0 356100.0 \n", "2016-12-01 1166500.0 461200.0 358400.0 \n", "2017-01-01 1166600.0 464400.0 357500.0 \n", "2017-02-01 1182900.0 466400.0 361900.0 \n", "2017-03-01 1202200.0 470900.0 370800.0 \n", "2017-04-01 1213200.0 475700.0 377100.0 \n", "2017-05-01 1211700.0 477100.0 380200.0 \n", "2017-06-01 1202900.0 476900.0 382300.0 \n", "\n", "[90 rows x 21 columns]" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "timeseriesdf" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Importing the Library for performing the Auto ARIMA:\n", "\n", "from pyramid.arima import auto_arima" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Creating a Function to Perform Auto ARIMA\n", "\n", "def auto_arima_func(dataset):\n", " stepwise_model = auto_arima(dataset, start_p=1, start_q=1,\n", " max_p=3, max_q=3, m=12,\n", " seasonal=True,\n", " trace=True,\n", " error_action='ignore', \n", " suppress_warnings=True, \n", " stepwise=True)\n", " # Here it is essential to forecast the values upto 22 periods to obtain the Current Cost (For April 2019)\n", " # If the Current Month changes if using this in the future, the n_periods value below will change accordingly counting from July 2017.\n", " \n", " future_forecast = stepwise_model.predict(n_periods=22)\n", " return future_forecast" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=2073.591, BIC=2088.523, Fit time=0.441 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2024.471, BIC=2029.448, Fit time=0.010 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2048.337, BIC=2058.291, Fit time=0.291 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=2301.472, BIC=2311.426, Fit time=0.265 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2026.429, BIC=2033.895, Fit time=0.091 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=2026.435, BIC=2033.901, Fit time=0.031 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=2028.368, BIC=2038.323, Fit time=0.053 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2046.404, BIC=2053.870, Fit time=0.067 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2310.301, BIC=2317.767, Fit time=0.067 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2072.606, BIC=2082.561, Fit time=0.113 seconds\n", "Total fit time: 1.440 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=2049.476, BIC=2064.408, Fit time=0.361 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1994.220, BIC=1999.197, Fit time=0.010 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2069.662, BIC=2079.616, Fit time=0.072 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=2013.937, BIC=2023.892, Fit time=0.145 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1994.735, BIC=2002.201, Fit time=0.216 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=1994.615, BIC=2002.081, Fit time=0.045 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=1996.250, BIC=2006.205, Fit time=0.087 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2068.013, BIC=2075.479, Fit time=0.034 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2013.788, BIC=2021.254, Fit time=0.076 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2054.437, BIC=2064.392, Fit time=0.125 seconds\n", "Total fit time: 1.174 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2072.449, BIC=2077.426, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2089.155, BIC=2099.110, Fit time=0.058 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2073.418, BIC=2080.884, Fit time=0.038 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=2073.356, BIC=2080.822, Fit time=0.038 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=2074.935, BIC=2084.890, Fit time=0.156 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2087.809, BIC=2095.275, Fit time=0.045 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Total fit time: 0.357 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=2153.670, BIC=2168.602, Fit time=0.430 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2072.641, BIC=2077.619, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2113.746, BIC=2123.700, Fit time=0.059 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2074.542, BIC=2082.008, Fit time=0.092 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=2074.544, BIC=2082.010, Fit time=0.040 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=2076.540, BIC=2086.495, Fit time=0.209 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2111.802, BIC=2119.268, Fit time=0.078 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2151.444, BIC=2161.399, Fit time=0.155 seconds\n", "Total fit time: 1.078 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=2029.024, BIC=2043.956, Fit time=0.426 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1955.196, BIC=1960.173, Fit time=0.012 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2009.863, BIC=2019.817, Fit time=0.074 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1956.970, BIC=1964.436, Fit time=0.028 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=1956.951, BIC=1964.417, Fit time=0.104 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=1958.811, BIC=1968.765, Fit time=0.229 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2007.865, BIC=2015.331, Fit time=0.035 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1958.940, BIC=1968.894, Fit time=0.280 seconds\n", "Total fit time: 1.197 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=2099.666, BIC=2114.598, Fit time=0.506 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2023.957, BIC=2028.934, Fit time=0.011 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2049.482, BIC=2059.437, Fit time=0.062 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2024.348, BIC=2031.814, Fit time=0.224 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=2024.313, BIC=2031.779, Fit time=0.038 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=2026.232, BIC=2036.186, Fit time=0.202 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2049.004, BIC=2056.470, Fit time=0.045 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2107.801, BIC=2117.756, Fit time=0.208 seconds\n", "Total fit time: 1.305 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=2124.294, BIC=2139.226, Fit time=0.475 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2000.033, BIC=2005.010, Fit time=0.010 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2076.713, BIC=2086.668, Fit time=0.074 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2002.008, BIC=2009.474, Fit time=0.034 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=2002.010, BIC=2009.476, Fit time=0.075 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=2003.999, BIC=2013.954, Fit time=0.184 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2075.098, BIC=2082.564, Fit time=0.037 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2129.996, BIC=2139.951, Fit time=0.173 seconds\n", "Total fit time: 1.069 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=1958.550, BIC=1973.482, Fit time=0.474 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1914.629, BIC=1919.606, Fit time=0.008 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1967.119, BIC=1977.074, Fit time=0.068 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=1938.367, BIC=1948.322, Fit time=0.189 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1916.621, BIC=1924.086, Fit time=0.039 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=1916.621, BIC=1924.087, Fit time=0.081 seconds\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=1918.617, BIC=1928.571, Fit time=0.103 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1965.819, BIC=1973.285, Fit time=0.032 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1936.399, BIC=1943.865, Fit time=0.074 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1958.698, BIC=1968.652, Fit time=0.145 seconds\n", "Total fit time: 1.215 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=2138.392, BIC=2153.324, Fit time=0.458 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2036.481, BIC=2041.458, Fit time=0.013 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2098.283, BIC=2108.237, Fit time=0.077 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=2038.117, BIC=2045.583, Fit time=0.031 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=2038.137, BIC=2045.603, Fit time=0.038 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=2040.066, BIC=2050.020, Fit time=0.224 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=2096.309, BIC=2103.775, Fit time=0.031 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=2138.882, BIC=2148.837, Fit time=0.215 seconds\n", "Total fit time: 1.098 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=1986.413, BIC=2001.345, Fit time=0.436 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1941.134, BIC=1946.112, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1970.275, BIC=1980.230, Fit time=0.065 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1942.996, BIC=1950.462, Fit time=0.040 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=1943.007, BIC=1950.473, Fit time=0.038 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=1944.801, BIC=1954.756, Fit time=0.179 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1944.876, BIC=1952.342, Fit time=0.113 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1985.697, BIC=1995.652, Fit time=0.171 seconds\n", "Total fit time: 1.057 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1900.633, BIC=1915.497, Fit time=0.450 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1894.129, BIC=1899.084, Fit time=0.010 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1897.932, BIC=1907.841, Fit time=0.118 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1898.675, BIC=1908.584, Fit time=0.089 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1895.925, BIC=1903.357, Fit time=0.048 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1895.920, BIC=1903.352, Fit time=0.050 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1897.343, BIC=1907.252, Fit time=0.235 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1896.138, BIC=1903.570, Fit time=0.026 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1896.913, BIC=1904.345, Fit time=0.069 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1898.024, BIC=1907.933, Fit time=0.100 seconds\n", "Total fit time: 1.199 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1430.055, BIC=1444.919, Fit time=0.350 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1426.192, BIC=1431.147, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1425.517, BIC=1435.426, Fit time=0.126 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1426.566, BIC=1436.475, Fit time=0.065 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1424.291, BIC=1431.723, Fit time=0.144 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1425.512, BIC=1435.421, Fit time=0.124 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1427.499, BIC=1439.886, Fit time=0.255 seconds\n", "Fit ARIMA: order=(2, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1425.368, BIC=1435.277, Fit time=0.188 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1427.004, BIC=1436.913, Fit time=0.107 seconds\n", "Fit ARIMA: order=(2, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1435.623, BIC=1448.009, Fit time=0.190 seconds\n", "Total fit time: 1.562 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1493.631, BIC=1508.495, Fit time=0.499 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1488.721, BIC=1493.676, Fit time=0.010 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1491.254, BIC=1501.163, Fit time=0.139 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1491.474, BIC=1501.383, Fit time=0.066 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1490.077, BIC=1497.509, Fit time=0.050 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1490.067, BIC=1497.499, Fit time=0.061 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1491.472, BIC=1501.381, Fit time=0.056 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1489.928, BIC=1497.360, Fit time=0.052 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1490.198, BIC=1497.630, Fit time=0.065 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1490.968, BIC=1500.878, Fit time=0.245 seconds\n", "Total fit time: 1.248 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1514.459, BIC=1529.323, Fit time=0.099 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1506.264, BIC=1511.219, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1510.116, BIC=1520.025, Fit time=0.138 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1510.352, BIC=1520.262, Fit time=0.059 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1508.104, BIC=1515.536, Fit time=0.033 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1508.104, BIC=1515.536, Fit time=0.035 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1510.102, BIC=1520.011, Fit time=0.105 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1508.281, BIC=1515.713, Fit time=0.073 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1508.530, BIC=1515.962, Fit time=0.034 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1510.655, BIC=1520.565, Fit time=0.047 seconds\n", "Total fit time: 0.636 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1448.639, BIC=1463.503, Fit time=0.190 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1443.675, BIC=1448.630, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1445.062, BIC=1454.972, Fit time=0.115 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1445.241, BIC=1455.151, Fit time=0.061 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1443.040, BIC=1450.472, Fit time=0.075 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1444.481, BIC=1454.391, Fit time=0.206 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(2, 0, 1, 12); AIC=1445.108, BIC=1457.494, Fit time=0.719 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(1, 0, 0, 12); AIC=1445.299, BIC=1455.208, Fit time=0.137 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 0, 12); AIC=1447.307, BIC=1459.694, Fit time=0.086 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(2, 0, 0, 12); AIC=1443.580, BIC=1453.490, Fit time=0.253 seconds\n", "Total fit time: 1.857 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=1934.729, BIC=1949.661, Fit time=0.385 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1861.785, BIC=1866.762, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1986.297, BIC=1996.251, Fit time=0.087 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1862.165, BIC=1869.631, Fit time=0.180 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=1861.954, BIC=1869.419, Fit time=0.047 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=1862.995, BIC=1872.950, Fit time=0.227 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1984.309, BIC=1991.775, Fit time=0.033 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1865.780, BIC=1875.734, Fit time=0.322 seconds\n", "Total fit time: 1.297 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=1860.451, BIC=1875.382, Fit time=0.423 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1824.686, BIC=1829.664, Fit time=0.014 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1833.945, BIC=1843.900, Fit time=0.333 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=1849.111, BIC=1859.065, Fit time=0.193 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1825.803, BIC=1833.269, Fit time=0.081 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=1825.650, BIC=1833.116, Fit time=0.055 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=1827.039, BIC=1836.994, Fit time=0.130 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1874.773, BIC=1882.239, Fit time=0.058 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1848.255, BIC=1855.721, Fit time=0.079 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1881.852, BIC=1891.807, Fit time=0.129 seconds\n", "Total fit time: 1.497 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1835.562, BIC=1850.426, Fit time=0.457 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1829.614, BIC=1834.569, Fit time=0.010 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1832.050, BIC=1841.959, Fit time=0.180 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1832.283, BIC=1842.192, Fit time=0.134 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1831.401, BIC=1838.833, Fit time=0.053 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1831.400, BIC=1838.832, Fit time=0.062 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1833.349, BIC=1843.258, Fit time=0.088 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1830.273, BIC=1837.705, Fit time=0.046 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1830.517, BIC=1837.949, Fit time=0.062 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1831.983, BIC=1841.892, Fit time=0.199 seconds\n", "Total fit time: 1.294 seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(1, 0, 1, 12); AIC=1927.213, BIC=1942.145, Fit time=0.671 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1910.265, BIC=1915.242, Fit time=0.009 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1993.788, BIC=2003.743, Fit time=0.072 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 1, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 0, 12); AIC=1912.182, BIC=1919.648, Fit time=0.040 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(0, 0, 1, 12); AIC=1912.203, BIC=1919.669, Fit time=0.036 seconds\n", "Fit ARIMA: order=(0, 1, 0) seasonal_order=(1, 0, 1, 12); AIC=1913.990, BIC=1923.944, Fit time=0.107 seconds\n", "Fit ARIMA: order=(1, 1, 0) seasonal_order=(0, 0, 0, 12); AIC=1920.071, BIC=1927.537, Fit time=0.105 seconds\n", "Fit ARIMA: order=(0, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=nan, BIC=nan, Fit time=nan seconds\n", "Fit ARIMA: order=(1, 1, 1) seasonal_order=(0, 0, 0, 12); AIC=1995.354, BIC=2005.308, Fit time=0.107 seconds\n", "Total fit time: 1.158 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1584.520, BIC=1599.384, Fit time=0.674 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1581.597, BIC=1586.552, Fit time=0.017 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1583.223, BIC=1593.132, Fit time=0.085 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1583.506, BIC=1593.415, Fit time=0.153 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1583.551, BIC=1590.983, Fit time=0.191 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1583.550, BIC=1590.982, Fit time=0.053 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1584.344, BIC=1594.253, Fit time=0.321 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1581.266, BIC=1588.698, Fit time=0.024 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1581.886, BIC=1591.796, Fit time=0.177 seconds\n", "Fit ARIMA: order=(2, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1609.935, BIC=1622.322, Fit time=0.309 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1583.222, BIC=1593.131, Fit time=0.064 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1584.088, BIC=1596.474, Fit time=0.273 seconds\n", "Fit ARIMA: order=(2, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1592.641, BIC=1602.551, Fit time=0.225 seconds\n", "Total fit time: 2.574 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(1, 0, 1, 12); AIC=1623.058, BIC=1637.922, Fit time=0.270 seconds\n", "Fit ARIMA: order=(0, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1633.266, BIC=1638.220, Fit time=0.012 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 0, 12); AIC=1620.803, BIC=1630.713, Fit time=0.054 seconds\n", "Fit ARIMA: order=(0, 2, 1) seasonal_order=(0, 0, 1, 12); AIC=1621.313, BIC=1631.222, Fit time=0.134 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1618.816, BIC=1626.248, Fit time=0.042 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(0, 0, 1, 12); AIC=1620.803, BIC=1630.713, Fit time=0.062 seconds\n", "Fit ARIMA: order=(1, 2, 0) seasonal_order=(1, 0, 1, 12); AIC=1622.816, BIC=1635.202, Fit time=0.080 seconds\n", "Fit ARIMA: order=(2, 2, 0) seasonal_order=(0, 0, 0, 12); AIC=1625.331, BIC=1635.241, Fit time=0.038 seconds\n", "Fit ARIMA: order=(1, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1619.049, BIC=1628.958, Fit time=0.161 seconds\n", "Fit ARIMA: order=(2, 2, 1) seasonal_order=(0, 0, 0, 12); AIC=1639.944, BIC=1652.330, Fit time=0.133 seconds\n", "Total fit time: 0.987 seconds\n" ] } ], "source": [ "final_forecast=[]\n", "\n", "# Here it is required to forecast for 21 Zipcodes. If the number of Zipcodes change in the future, the range in for loop also changes\n", "for i in range(0,21,1):\n", " final_forecast.append(auto_arima_func(timeseriesdf[i]))" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def join_forecast_values(original_dataset, forecast_dataset):\n", " \n", " # Converting the Forecast values to a Dataframe\n", " forecast = pd.DataFrame(forecast_dataset)\n", " \n", " # Changing the Column Names to Date\n", " forecast.columns= pd.date_range(start= '2017-07-01', end='2019-04-01', freq='MS')\n", " \n", " #Concatenating the Forecasted Dataframe to the Original Dataframe\n", " final_df=pd.concat([original_dataset,forecast], axis=1)\n", " \n", " # Converting the final month column to String and then Renaming\n", " final_df.columns = final_df.columns.astype(str)\n", " final_df.rename( columns={\"2019-04-01 00:00:00\": \"Current Month Cost\"}, inplace=True)\n", " \n", " return final_df" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
zipcodeidscrape_idhost_idhost_acceptance_ratehost_listings_counthost_total_listings_countlatitudelongitudeaccommodates...2018-07-01 00:00:002018-08-01 00:00:002018-09-01 00:00:002018-10-01 00:00:002018-11-01 00:00:002018-12-01 00:00:002019-01-01 00:00:002019-02-01 00:00:002019-03-01 00:00:00Current Month Cost
0100039.124661e+062.017050e+132.496037e+07NaN1.6460181.64601840.728902-73.9882584.566372...2.281265e+062.291593e+062.301921e+062.312249e+062.322578e+062.332906e+062.343234e+062.353562e+062.363890e+062.374218e+06
1100119.889107e+062.017050e+133.005599e+07NaN1.4482761.44827640.742371-73.9997524.517241...2.641337e+062.653717e+062.666097e+062.678476e+062.690856e+062.703236e+062.715616e+062.727996e+062.740375e+062.752755e+06
2100131.054726e+072.017050e+132.783653e+07NaN1.4126981.41269840.719555-74.0040754.281250...3.469549e+063.481322e+063.493096e+063.504869e+063.516642e+063.528415e+063.540188e+063.551961e+063.563734e+063.575507e+06
3100148.654217e+062.017050e+132.054620e+07NaN1.5376341.53763440.734209-74.0042404.344086...2.643481e+062.655164e+062.666847e+062.678530e+062.690213e+062.701897e+062.713580e+062.725263e+062.736946e+062.748629e+06
4100211.022891e+072.017050e+133.568867e+07NaN1.5263161.52631640.768441-73.9566284.263158...1.910792e+061.918115e+061.925437e+061.932760e+061.940082e+061.947404e+061.954727e+061.962049e+061.969372e+061.976694e+06
5100229.963782e+062.017050e+134.129974e+07NaN1.3947371.39473740.758886-73.9667005.447368...2.135103e+062.143065e+062.151027e+062.158989e+062.166951e+062.174912e+062.182874e+062.190836e+062.198798e+062.206760e+06
6100238.424752e+062.017050e+133.053048e+07NaN2.8888892.88888940.777581-73.9814864.666667...2.269437e+062.279217e+062.288997e+062.298776e+062.308556e+062.318336e+062.328116e+062.337896e+062.347675e+062.357455e+06
7100257.849437e+062.017050e+132.567103e+07NaN1.5714291.57142940.798025-73.9663554.821429...1.521226e+061.528166e+061.535107e+061.542047e+061.548988e+061.555928e+061.562869e+061.569809e+061.576749e+061.583690e+06
8100281.038785e+072.017050e+133.790560e+07NaN1.3750001.37500040.775367-73.9509344.281250...2.223818e+062.234581e+062.245344e+062.256107e+062.266870e+062.277633e+062.288396e+062.299158e+062.309921e+062.320684e+06
9100368.401201e+062.017050e+133.853206e+07NaN73.50000073.50000040.754810-73.9878244.750000...1.782180e+061.787509e+061.792838e+061.798167e+061.803497e+061.808826e+061.814155e+061.819484e+061.824813e+061.830143e+06
10101281.079017e+072.017050e+132.984589e+07NaN1.3214291.32142940.781842-73.9495374.357143...2.723528e+062.800994e+062.879236e+062.958255e+063.038049e+063.118619e+063.199966e+063.282089e+063.364987e+063.448662e+06
11103041.590640e+062.017050e+137.534770e+06NaN1.0000001.00000040.626721-74.0767213.500000...4.259331e+054.339654e+054.420723e+054.502538e+054.585099e+054.668406e+054.752459e+054.837257e+054.922802e+055.009092e+05
12103051.368595e+072.017050e+135.535834e+07NaN1.5555561.55555640.596360-74.0773714.555556...5.132489e+055.206102e+055.280545e+055.355818e+055.431920e+055.508852e+055.586614e+055.665205e+055.744625e+055.824875e+05
13103068.328929e+062.017050e+135.237069e+07NaN2.0000002.00000040.568879-74.1115655.500000...4.251977e+054.312205e+054.373091e+054.434636e+054.496841e+054.559705e+054.623227e+054.687409e+054.752250e+054.817750e+05
14103121.800434e+072.017050e+131.197988e+08NaN1.0000001.00000040.546331-74.1837012.000000...4.012734e+054.050852e+054.089326e+054.128157e+054.167345e+054.206890e+054.246794e+054.287059e+054.327680e+054.368654e+05
15112019.298929e+062.017050e+132.327364e+07NaN1.4516131.45161340.692611-73.9905764.451613...1.519719e+061.527336e+061.534953e+061.542570e+061.550187e+061.557803e+061.565420e+061.573037e+061.580654e+061.588271e+06
16112159.035422e+062.017050e+132.460656e+07NaN1.4227641.42276440.666241-73.9845274.266129...1.149896e+061.155980e+061.162064e+061.168148e+061.174233e+061.180317e+061.186401e+061.192485e+061.198570e+061.204654e+06
17112176.866520e+062.017050e+131.988437e+07NaN1.2833331.28333340.681377-73.9790683.983333...1.665473e+061.695445e+061.725709e+061.756264e+061.787109e+061.818245e+061.849673e+061.881391e+061.913400e+061.945700e+06
18112317.697324e+062.017050e+132.171201e+07NaN1.5507251.55072540.680632-74.0000494.391304...1.292235e+061.299107e+061.305979e+061.312851e+061.319722e+061.326594e+061.333466e+061.340338e+061.347210e+061.354082e+06
19112341.066553e+072.017050e+132.752097e+07NaN1.3333331.33333340.623074-73.9259434.166667...4.688470e+054.678265e+054.667486e+054.656135e+054.644211e+054.631714e+054.618644e+054.605001e+054.590786e+054.575997e+05
20114349.374263e+062.017050e+134.863844e+07NaN1.0000001.00000040.662033-73.7698004.000000...4.165402e+054.197565e+054.230561e+054.264390e+054.299051e+054.334544e+054.370870e+054.408028e+054.446019e+054.484842e+05
\n", "

21 rows × 317 columns

\n", "
" ], "text/plain": [ " zipcode id scrape_id host_id host_acceptance_rate \\\n", "0 10003 9.124661e+06 2.017050e+13 2.496037e+07 NaN \n", "1 10011 9.889107e+06 2.017050e+13 3.005599e+07 NaN \n", "2 10013 1.054726e+07 2.017050e+13 2.783653e+07 NaN \n", "3 10014 8.654217e+06 2.017050e+13 2.054620e+07 NaN \n", "4 10021 1.022891e+07 2.017050e+13 3.568867e+07 NaN \n", "5 10022 9.963782e+06 2.017050e+13 4.129974e+07 NaN \n", "6 10023 8.424752e+06 2.017050e+13 3.053048e+07 NaN \n", "7 10025 7.849437e+06 2.017050e+13 2.567103e+07 NaN \n", "8 10028 1.038785e+07 2.017050e+13 3.790560e+07 NaN \n", "9 10036 8.401201e+06 2.017050e+13 3.853206e+07 NaN \n", "10 10128 1.079017e+07 2.017050e+13 2.984589e+07 NaN \n", "11 10304 1.590640e+06 2.017050e+13 7.534770e+06 NaN \n", "12 10305 1.368595e+07 2.017050e+13 5.535834e+07 NaN \n", "13 10306 8.328929e+06 2.017050e+13 5.237069e+07 NaN \n", "14 10312 1.800434e+07 2.017050e+13 1.197988e+08 NaN \n", "15 11201 9.298929e+06 2.017050e+13 2.327364e+07 NaN \n", "16 11215 9.035422e+06 2.017050e+13 2.460656e+07 NaN \n", "17 11217 6.866520e+06 2.017050e+13 1.988437e+07 NaN \n", "18 11231 7.697324e+06 2.017050e+13 2.171201e+07 NaN \n", "19 11234 1.066553e+07 2.017050e+13 2.752097e+07 NaN \n", "20 11434 9.374263e+06 2.017050e+13 4.863844e+07 NaN \n", "\n", " host_listings_count host_total_listings_count latitude longitude \\\n", "0 1.646018 1.646018 40.728902 -73.988258 \n", "1 1.448276 1.448276 40.742371 -73.999752 \n", "2 1.412698 1.412698 40.719555 -74.004075 \n", "3 1.537634 1.537634 40.734209 -74.004240 \n", "4 1.526316 1.526316 40.768441 -73.956628 \n", "5 1.394737 1.394737 40.758886 -73.966700 \n", "6 2.888889 2.888889 40.777581 -73.981486 \n", "7 1.571429 1.571429 40.798025 -73.966355 \n", "8 1.375000 1.375000 40.775367 -73.950934 \n", "9 73.500000 73.500000 40.754810 -73.987824 \n", "10 1.321429 1.321429 40.781842 -73.949537 \n", "11 1.000000 1.000000 40.626721 -74.076721 \n", "12 1.555556 1.555556 40.596360 -74.077371 \n", "13 2.000000 2.000000 40.568879 -74.111565 \n", "14 1.000000 1.000000 40.546331 -74.183701 \n", "15 1.451613 1.451613 40.692611 -73.990576 \n", "16 1.422764 1.422764 40.666241 -73.984527 \n", "17 1.283333 1.283333 40.681377 -73.979068 \n", "18 1.550725 1.550725 40.680632 -74.000049 \n", "19 1.333333 1.333333 40.623074 -73.925943 \n", "20 1.000000 1.000000 40.662033 -73.769800 \n", "\n", " accommodates ... 2018-07-01 00:00:00 \\\n", "0 4.566372 ... 2.281265e+06 \n", "1 4.517241 ... 2.641337e+06 \n", "2 4.281250 ... 3.469549e+06 \n", "3 4.344086 ... 2.643481e+06 \n", "4 4.263158 ... 1.910792e+06 \n", "5 5.447368 ... 2.135103e+06 \n", "6 4.666667 ... 2.269437e+06 \n", "7 4.821429 ... 1.521226e+06 \n", "8 4.281250 ... 2.223818e+06 \n", "9 4.750000 ... 1.782180e+06 \n", "10 4.357143 ... 2.723528e+06 \n", "11 3.500000 ... 4.259331e+05 \n", "12 4.555556 ... 5.132489e+05 \n", "13 5.500000 ... 4.251977e+05 \n", "14 2.000000 ... 4.012734e+05 \n", "15 4.451613 ... 1.519719e+06 \n", "16 4.266129 ... 1.149896e+06 \n", "17 3.983333 ... 1.665473e+06 \n", "18 4.391304 ... 1.292235e+06 \n", "19 4.166667 ... 4.688470e+05 \n", "20 4.000000 ... 4.165402e+05 \n", "\n", " 2018-08-01 00:00:00 2018-09-01 00:00:00 2018-10-01 00:00:00 \\\n", "0 2.291593e+06 2.301921e+06 2.312249e+06 \n", "1 2.653717e+06 2.666097e+06 2.678476e+06 \n", "2 3.481322e+06 3.493096e+06 3.504869e+06 \n", "3 2.655164e+06 2.666847e+06 2.678530e+06 \n", "4 1.918115e+06 1.925437e+06 1.932760e+06 \n", "5 2.143065e+06 2.151027e+06 2.158989e+06 \n", "6 2.279217e+06 2.288997e+06 2.298776e+06 \n", "7 1.528166e+06 1.535107e+06 1.542047e+06 \n", "8 2.234581e+06 2.245344e+06 2.256107e+06 \n", "9 1.787509e+06 1.792838e+06 1.798167e+06 \n", "10 2.800994e+06 2.879236e+06 2.958255e+06 \n", "11 4.339654e+05 4.420723e+05 4.502538e+05 \n", "12 5.206102e+05 5.280545e+05 5.355818e+05 \n", "13 4.312205e+05 4.373091e+05 4.434636e+05 \n", "14 4.050852e+05 4.089326e+05 4.128157e+05 \n", "15 1.527336e+06 1.534953e+06 1.542570e+06 \n", "16 1.155980e+06 1.162064e+06 1.168148e+06 \n", "17 1.695445e+06 1.725709e+06 1.756264e+06 \n", "18 1.299107e+06 1.305979e+06 1.312851e+06 \n", "19 4.678265e+05 4.667486e+05 4.656135e+05 \n", "20 4.197565e+05 4.230561e+05 4.264390e+05 \n", "\n", " 2018-11-01 00:00:00 2018-12-01 00:00:00 2019-01-01 00:00:00 \\\n", "0 2.322578e+06 2.332906e+06 2.343234e+06 \n", "1 2.690856e+06 2.703236e+06 2.715616e+06 \n", "2 3.516642e+06 3.528415e+06 3.540188e+06 \n", "3 2.690213e+06 2.701897e+06 2.713580e+06 \n", "4 1.940082e+06 1.947404e+06 1.954727e+06 \n", "5 2.166951e+06 2.174912e+06 2.182874e+06 \n", "6 2.308556e+06 2.318336e+06 2.328116e+06 \n", "7 1.548988e+06 1.555928e+06 1.562869e+06 \n", "8 2.266870e+06 2.277633e+06 2.288396e+06 \n", "9 1.803497e+06 1.808826e+06 1.814155e+06 \n", "10 3.038049e+06 3.118619e+06 3.199966e+06 \n", "11 4.585099e+05 4.668406e+05 4.752459e+05 \n", "12 5.431920e+05 5.508852e+05 5.586614e+05 \n", "13 4.496841e+05 4.559705e+05 4.623227e+05 \n", "14 4.167345e+05 4.206890e+05 4.246794e+05 \n", "15 1.550187e+06 1.557803e+06 1.565420e+06 \n", "16 1.174233e+06 1.180317e+06 1.186401e+06 \n", "17 1.787109e+06 1.818245e+06 1.849673e+06 \n", "18 1.319722e+06 1.326594e+06 1.333466e+06 \n", "19 4.644211e+05 4.631714e+05 4.618644e+05 \n", "20 4.299051e+05 4.334544e+05 4.370870e+05 \n", "\n", " 2019-02-01 00:00:00 2019-03-01 00:00:00 Current Month Cost \n", "0 2.353562e+06 2.363890e+06 2.374218e+06 \n", "1 2.727996e+06 2.740375e+06 2.752755e+06 \n", "2 3.551961e+06 3.563734e+06 3.575507e+06 \n", "3 2.725263e+06 2.736946e+06 2.748629e+06 \n", "4 1.962049e+06 1.969372e+06 1.976694e+06 \n", "5 2.190836e+06 2.198798e+06 2.206760e+06 \n", "6 2.337896e+06 2.347675e+06 2.357455e+06 \n", "7 1.569809e+06 1.576749e+06 1.583690e+06 \n", "8 2.299158e+06 2.309921e+06 2.320684e+06 \n", "9 1.819484e+06 1.824813e+06 1.830143e+06 \n", "10 3.282089e+06 3.364987e+06 3.448662e+06 \n", "11 4.837257e+05 4.922802e+05 5.009092e+05 \n", "12 5.665205e+05 5.744625e+05 5.824875e+05 \n", "13 4.687409e+05 4.752250e+05 4.817750e+05 \n", "14 4.287059e+05 4.327680e+05 4.368654e+05 \n", "15 1.573037e+06 1.580654e+06 1.588271e+06 \n", "16 1.192485e+06 1.198570e+06 1.204654e+06 \n", "17 1.881391e+06 1.913400e+06 1.945700e+06 \n", "18 1.340338e+06 1.347210e+06 1.354082e+06 \n", "19 4.605001e+05 4.590786e+05 4.575997e+05 \n", "20 4.408028e+05 4.446019e+05 4.484842e+05 \n", "\n", "[21 rows x 317 columns]" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Joining the Forecasted Data to the Actual Group Joined Data created before\n", "\n", "final_df=join_forecast_values(df, final_forecast)\n", "final_df" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(21, 317)" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### NOTE: Now since the Airbnb data was grouped by Zipcode and averaged, only the variables with numerical\n", "### values will be included in that. The same data was used for Joining with the Zillows Dataset." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Thus some categorical string variables like \"neighbourhood_group_cleansed\" are missing here in final_df" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to Extract the Neighbours\n", "\n", "def extract_neighbours(from_data, to_data):\n", " \n", " # Since a particular zipcode has only a particular \"neighbourhood_group_cleansed\", I am using the .first() method to \n", " # extract the neighbourhood and convert them to a Dataframe\n", " neighbours=from_data.groupby('zipcode').first()['neighbourhood_group_cleansed'].to_frame().reset_index()\n", " \n", " # Merging the Extracted data to the to_data\n", " to_data=to_data.merge(neighbours, on='zipcode')\n", " \n", " return(to_data)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "scrolled": true }, "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", "
zipcodeidscrape_idhost_idhost_acceptance_ratehost_listings_counthost_total_listings_countlatitudelongitudeaccommodates...2018-08-01 00:00:002018-09-01 00:00:002018-10-01 00:00:002018-11-01 00:00:002018-12-01 00:00:002019-01-01 00:00:002019-02-01 00:00:002019-03-01 00:00:00Current Month Costneighbourhood_group_cleansed
0100039.124661e+062.017050e+132.496037e+07NaN1.6460181.64601840.728902-73.9882584.566372...2.291593e+062.301921e+062.312249e+062.322578e+062.332906e+062.343234e+062.353562e+062.363890e+062.374218e+06Manhattan
1100119.889107e+062.017050e+133.005599e+07NaN1.4482761.44827640.742371-73.9997524.517241...2.653717e+062.666097e+062.678476e+062.690856e+062.703236e+062.715616e+062.727996e+062.740375e+062.752755e+06Manhattan
2100131.054726e+072.017050e+132.783653e+07NaN1.4126981.41269840.719555-74.0040754.281250...3.481322e+063.493096e+063.504869e+063.516642e+063.528415e+063.540188e+063.551961e+063.563734e+063.575507e+06Manhattan
3100148.654217e+062.017050e+132.054620e+07NaN1.5376341.53763440.734209-74.0042404.344086...2.655164e+062.666847e+062.678530e+062.690213e+062.701897e+062.713580e+062.725263e+062.736946e+062.748629e+06Manhattan
4100211.022891e+072.017050e+133.568867e+07NaN1.5263161.52631640.768441-73.9566284.263158...1.918115e+061.925437e+061.932760e+061.940082e+061.947404e+061.954727e+061.962049e+061.969372e+061.976694e+06Manhattan
\n", "

5 rows × 318 columns

\n", "
" ], "text/plain": [ " zipcode id scrape_id host_id host_acceptance_rate \\\n", "0 10003 9.124661e+06 2.017050e+13 2.496037e+07 NaN \n", "1 10011 9.889107e+06 2.017050e+13 3.005599e+07 NaN \n", "2 10013 1.054726e+07 2.017050e+13 2.783653e+07 NaN \n", "3 10014 8.654217e+06 2.017050e+13 2.054620e+07 NaN \n", "4 10021 1.022891e+07 2.017050e+13 3.568867e+07 NaN \n", "\n", " host_listings_count host_total_listings_count latitude longitude \\\n", "0 1.646018 1.646018 40.728902 -73.988258 \n", "1 1.448276 1.448276 40.742371 -73.999752 \n", "2 1.412698 1.412698 40.719555 -74.004075 \n", "3 1.537634 1.537634 40.734209 -74.004240 \n", "4 1.526316 1.526316 40.768441 -73.956628 \n", "\n", " accommodates ... 2018-08-01 00:00:00 \\\n", "0 4.566372 ... 2.291593e+06 \n", "1 4.517241 ... 2.653717e+06 \n", "2 4.281250 ... 3.481322e+06 \n", "3 4.344086 ... 2.655164e+06 \n", "4 4.263158 ... 1.918115e+06 \n", "\n", " 2018-09-01 00:00:00 2018-10-01 00:00:00 2018-11-01 00:00:00 \\\n", "0 2.301921e+06 2.312249e+06 2.322578e+06 \n", "1 2.666097e+06 2.678476e+06 2.690856e+06 \n", "2 3.493096e+06 3.504869e+06 3.516642e+06 \n", "3 2.666847e+06 2.678530e+06 2.690213e+06 \n", "4 1.925437e+06 1.932760e+06 1.940082e+06 \n", "\n", " 2018-12-01 00:00:00 2019-01-01 00:00:00 2019-02-01 00:00:00 \\\n", "0 2.332906e+06 2.343234e+06 2.353562e+06 \n", "1 2.703236e+06 2.715616e+06 2.727996e+06 \n", "2 3.528415e+06 3.540188e+06 3.551961e+06 \n", "3 2.701897e+06 2.713580e+06 2.725263e+06 \n", "4 1.947404e+06 1.954727e+06 1.962049e+06 \n", "\n", " 2019-03-01 00:00:00 Current Month Cost neighbourhood_group_cleansed \n", "0 2.363890e+06 2.374218e+06 Manhattan \n", "1 2.740375e+06 2.752755e+06 Manhattan \n", "2 3.563734e+06 3.575507e+06 Manhattan \n", "3 2.736946e+06 2.748629e+06 Manhattan \n", "4 1.969372e+06 1.976694e+06 Manhattan \n", "\n", "[5 rows x 318 columns]" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Storing it as \"final_df\"\n", "\n", "final_df= extract_neighbours(airbnb, final_df)\n", "final_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Quality Check Phase II" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "zipcode 0.000000\n", "id 0.000000\n", "scrape_id 0.000000\n", "host_id 0.000000\n", "host_acceptance_rate 100.000000\n", "host_listings_count 0.000000\n", "host_total_listings_count 0.000000\n", "latitude 0.000000\n", "longitude 0.000000\n", "accommodates 0.000000\n", "bathrooms 0.000000\n", "bedrooms 0.000000\n", "beds 0.000000\n", "square_feet 47.619048\n", "price 0.000000\n", "guests_included 0.000000\n", "minimum_nights 0.000000\n", "maximum_nights 0.000000\n", "has_availability 100.000000\n", "availability_30 0.000000\n", "availability_60 0.000000\n", "availability_90 0.000000\n", "availability_365 0.000000\n", "number_of_reviews 0.000000\n", "review_scores_rating 0.000000\n", "review_scores_accuracy 0.000000\n", "review_scores_cleanliness 4.761905\n", "review_scores_checkin 4.761905\n", "review_scores_communication 4.761905\n", "review_scores_location 4.761905\n", " ... \n", "2016-12 0.000000\n", "2017-01 0.000000\n", "2017-02 0.000000\n", "2017-03 0.000000\n", "2017-04 0.000000\n", "2017-05 0.000000\n", "2017-06 0.000000\n", "2017-07-01 00:00:00 0.000000\n", "2017-08-01 00:00:00 0.000000\n", "2017-09-01 00:00:00 0.000000\n", "2017-10-01 00:00:00 0.000000\n", "2017-11-01 00:00:00 0.000000\n", "2017-12-01 00:00:00 0.000000\n", "2018-01-01 00:00:00 0.000000\n", "2018-02-01 00:00:00 0.000000\n", "2018-03-01 00:00:00 0.000000\n", "2018-04-01 00:00:00 0.000000\n", "2018-05-01 00:00:00 0.000000\n", "2018-06-01 00:00:00 0.000000\n", "2018-07-01 00:00:00 0.000000\n", "2018-08-01 00:00:00 0.000000\n", "2018-09-01 00:00:00 0.000000\n", "2018-10-01 00:00:00 0.000000\n", "2018-11-01 00:00:00 0.000000\n", "2018-12-01 00:00:00 0.000000\n", "2019-01-01 00:00:00 0.000000\n", "2019-02-01 00:00:00 0.000000\n", "2019-03-01 00:00:00 0.000000\n", "Current Month Cost 0.000000\n", "neighbourhood_group_cleansed 0.000000\n", "Length: 318, dtype: float64" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mis_value_percent(final_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### It is to be noted, that the Null values present here were not used for any analysis and thus they were removed instead of imputing with Mean." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": true }, "outputs": [], "source": [ "final_df=final_df.dropna(axis=1)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "zipcode 0.0\n", "id 0.0\n", "scrape_id 0.0\n", "host_id 0.0\n", "host_listings_count 0.0\n", "host_total_listings_count 0.0\n", "latitude 0.0\n", "longitude 0.0\n", "accommodates 0.0\n", "bathrooms 0.0\n", "bedrooms 0.0\n", "beds 0.0\n", "price 0.0\n", "guests_included 0.0\n", "minimum_nights 0.0\n", "maximum_nights 0.0\n", "availability_30 0.0\n", "availability_60 0.0\n", "availability_90 0.0\n", "availability_365 0.0\n", "number_of_reviews 0.0\n", "review_scores_rating 0.0\n", "review_scores_accuracy 0.0\n", "calculated_host_listings_count 0.0\n", "RegionID 0.0\n", "City 0.0\n", "State 0.0\n", "Metro 0.0\n", "CountyName 0.0\n", "SizeRank 0.0\n", " ... \n", "2016-12 0.0\n", "2017-01 0.0\n", "2017-02 0.0\n", "2017-03 0.0\n", "2017-04 0.0\n", "2017-05 0.0\n", "2017-06 0.0\n", "2017-07-01 00:00:00 0.0\n", "2017-08-01 00:00:00 0.0\n", "2017-09-01 00:00:00 0.0\n", "2017-10-01 00:00:00 0.0\n", "2017-11-01 00:00:00 0.0\n", "2017-12-01 00:00:00 0.0\n", "2018-01-01 00:00:00 0.0\n", "2018-02-01 00:00:00 0.0\n", "2018-03-01 00:00:00 0.0\n", "2018-04-01 00:00:00 0.0\n", "2018-05-01 00:00:00 0.0\n", "2018-06-01 00:00:00 0.0\n", "2018-07-01 00:00:00 0.0\n", "2018-08-01 00:00:00 0.0\n", "2018-09-01 00:00:00 0.0\n", "2018-10-01 00:00:00 0.0\n", "2018-11-01 00:00:00 0.0\n", "2018-12-01 00:00:00 0.0\n", "2019-01-01 00:00:00 0.0\n", "2019-02-01 00:00:00 0.0\n", "2019-03-01 00:00:00 0.0\n", "Current Month Cost 0.0\n", "neighbourhood_group_cleansed 0.0\n", "Length: 174, dtype: float64" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mis_value_percent(final_df)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Renaming the Price column to Revenue to make it clear\n", "\n", "final_df.rename(columns={'price':'Revenue'}, inplace=True)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 False\n", "1 False\n", "2 False\n", "3 False\n", "4 False\n", "5 False\n", "6 False\n", "7 False\n", "8 False\n", "9 False\n", "10 False\n", "11 False\n", "12 False\n", "13 False\n", "14 False\n", "15 False\n", "16 False\n", "17 False\n", "18 False\n", "19 False\n", "20 False\n", "dtype: bool" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Check for duplicate values\n", "\n", "final_df.duplicated()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Now the data is clean and there are no more missing data values in the final data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ---------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visual Narrative" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualizing the Zipcodes in Map" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "lat": [ 40.728901940796455, 40.742370868735634, 40.71955466156251, 40.73420932107527, 40.76844115578947, 40.75888597184211, 40.77758059492063, 40.798025117053555, 40.7753669890625, 40.754810299166664, 40.78184155374999, 40.626720555000006, 40.596360087777775, 40.568878725000005, 40.54633149, 40.69261064741934, 40.66624076870966, 40.68137690216667, 40.68063242840581, 40.62307418833334, 40.66203338 ], "lon": [ -73.9882578099115, -73.99975193206895, -74.00407486906252, -74.0042401108602, -73.95662805578948, -73.9667001713158, -73.98148638841269, -73.96635482160715, -73.9509343671875, -73.98782434666667, -73.94953672053568, -74.07672088000001, -74.07737053222223, -74.11156492999999, -74.18370056, -73.99057626854841, -73.98452717411286, -73.97906801133335, -74.00004876927538, -73.925943205, -73.7698003 ], "marker": { "size": 9 }, "mode": "markers", "text": [ "10003 Manhattan", "10011 Manhattan", "10013 Manhattan", "10014 Manhattan", "10021 Manhattan", "10022 Manhattan", "10023 Manhattan", "10025 Manhattan", "10028 Manhattan", "10036 Manhattan", "10128 Manhattan", "10304 Staten Island", "10305 Staten Island", "10306 Staten Island", "10312 Staten Island", "11201 Brooklyn", "11215 Brooklyn", "11217 Brooklyn", "11231 Brooklyn", "11234 Brooklyn", "11434 Queens" ], "type": "scattermapbox", "uid": "54d2a3ba-5c97-11e9-a75d-3cf862c2ea5b" } ], "layout": { "autosize": true, "hovermode": "closest", "mapbox": { "accesstoken": "pk.eyJ1IjoiaGFyaXNoMjMiLCJhIjoiY2p1N2h5bzliMXVrbDQwb2J3NmF1N3JoMSJ9.7BrKDWLpEdewUnq47GWOKA", "bearing": 0, "center": { "lat": 40.666, "lon": -73.98 }, "pitch": 0, "zoom": 9 } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "# First an account in Mapbox was created and the Public access token from that was used.\n", "\n", "mapbox_access_token = 'pk.eyJ1IjoiaGFyaXNoMjMiLCJhIjoiY2p1N2h5bzliMXVrbDQwb2J3NmF1N3JoMSJ9.7BrKDWLpEdewUnq47GWOKA'\n", "\n", "# Inside the Scattermapbox, I have specified the longitude and the latitude column for the map\n", "data = [\n", " go.Scattermapbox(\n", " lat=final_df.latitude,\n", " lon=final_df.longitude,\n", " mode='markers',\n", " marker=go.scattermapbox.Marker(\n", " size=9\n", " ),text= final_df.zipcode.map(str) + \" \" + final_df.neighbourhood_group_cleansed # To Display both the Zipcode and Neighbourhood \n", " ,\n", " )\n", "]\n", "\n", "\n", "# And then the access token defined above was assigned and then the center point of the map is specified\n", "layout = go.Layout(\n", " autosize=True,\n", " hovermode='closest',\n", " mapbox=go.layout.Mapbox(\n", " accesstoken=mapbox_access_token,\n", " bearing=0,\n", " center=go.layout.mapbox.Center(\n", " lat=40.666,\n", " lon=-73.98\n", " ),\n", " pitch=0,\n", " zoom=9\n", " ),\n", ")\n", "\n", "fig = go.Figure(data=data, layout=layout)\n", "iplot(fig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminary Analysis- Review Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### NOTE: An important thing to note here is the review analysis won't be considered fully because some empty values are filled with their group mean in order to plot the graph. However, this review analysis will taken as a support for our conclusion." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Manhattan 11\n", "Brooklyn 5\n", "Staten Island 4\n", "Queens 1\n", "Name: neighbourhood_group_cleansed, dtype: int64" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df.neighbourhood_group_cleansed.value_counts()" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 92.514445\n", "1 93.691141\n", "2 91.690927\n", "3 93.658104\n", "4 93.153286\n", "5 88.233652\n", "6 94.411979\n", "7 92.062500\n", "8 94.200047\n", "9 90.763228\n", "10 91.747068\n", "Name: review_scores_rating, dtype: float64" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df[final_df['neighbourhood_group_cleansed']=='Manhattan']['review_scores_rating']" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#Function to Create a Scatterplot for Different Neighbours\n", "\n", "def scatterplot(xaxis, yaxis, title):\n", "\n", " data=[]\n", " neighbours=['Manhattan', 'Brooklyn', 'Staten Island', 'Queens']\n", " \n", " # Now looping over the Neighbours List\n", " for i in neighbours:\n", "\n", " trace = go.Scatter(x= final_df[final_df['neighbourhood_group_cleansed']==i][xaxis],\n", " y = final_df[final_df['neighbourhood_group_cleansed']==i][yaxis],\n", " mode= 'markers',\n", " name= i,\n", " marker = dict(symbol='circle', size=16),\n", " text= final_df[final_df['neighbourhood_group_cleansed']==i]['zipcode'])\n", "\n", " data.append(trace)\n", " # The above loop will create 4 traces for 4 different neighbourhoods and append it to the data list\n", " \n", " layout= go.Layout(title=title,\n", " hovermode= 'closest',\n", " xaxis= dict(\n", " title= xaxis),\n", " yaxis=dict(\n", " title= yaxis\n", " ))\n", " fig =go.Figure(data=data, layout=layout)\n", " iplot(fig)\n" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Manhattan", "text": [ 10003, 10011, 10013, 10014, 10021, 10022, 10023, 10025, 10028, 10036, 10128 ], "type": "scatter", "uid": "578a7d68-5c97-11e9-b6bc-3cf862c2ea5b", "x": [ 9.54045302701752, 9.504465799886944, 9.519472947761196, 9.600039100684263, 9.605263157894736, 8.956676626062976, 9.529610144341023, 9.398517829796546, 9.572679924242426, 9.164021164021165, 9.399700598802394 ], "y": [ 92.51444452570757, 93.69114133604228, 91.69092704460968, 93.65810361681334, 93.15328644191122, 88.23365231259969, 94.41197895588829, 92.06249999999999, 94.20004734848487, 90.7632275132275, 91.74706823027716 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Brooklyn", "text": [ 11201, 11215, 11217, 11231, 11234 ], "type": "scatter", "uid": "578a7d69-5c97-11e9-89aa-3cf862c2ea5b", "x": [ 9.723076923076922, 9.68092764716603, 9.61124497991968, 9.574980292280635, 9.666666666666666 ], "y": [ 95.51756823821339, 95.11184210526315, 94.70993333333334, 94.35398550724638, 88 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Staten Island", "text": [ 10304, 10305, 10306, 10312 ], "type": "scatter", "uid": "578a7d6a-5c97-11e9-96d7-3cf862c2ea5b", "x": [ 9, 9.333333333333334, 9.5, 10 ], "y": [ 80, 93.33333333333333, 95.5, 97.85714285714286 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Queens", "text": [ 11434 ], "type": "scatter", "uid": "578a7d6b-5c97-11e9-8065-3cf862c2ea5b", "x": [ 10 ], "y": [ 95 ] } ], "layout": { "hovermode": "closest", "title": "Review Analysis", "xaxis": { "title": "review_scores_accuracy" }, "yaxis": { "title": "review_scores_rating" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scatterplot('review_scores_accuracy','review_scores_rating', 'Review Analysis')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### This is one basic analysis in which shows how accurate are the reviews. We see that Brooklyn in general has more review score accuracy and review rating value. Besides, 10312 and 11434 tops the graph with both high accuracy and 10312 tops with highest rating." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### It is very important to know on an average how many reviews a zipcode gets and analyze the scores further" ] }, { "cell_type": "code", "execution_count": 62, "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", "
zipcodereview_scores_ratingnumber_of_reviews
01000392.51444531.292486
11001193.69114115.945257
21001391.69092718.906767
31001493.65810417.774297
41002193.15328618.810971
51002288.23365229.905702
61002394.41197916.877034
71002592.06250020.180494
81002894.20004711.622623
91003690.76322822.604651
101012891.7470689.917482
111030480.0000001.000000
121030593.3333338.261438
131030695.50000071.500000
141031297.85714323.222222
151120195.51756822.670683
161121595.11184216.446481
171121794.70993320.022059
181123194.35398619.016645
191123488.00000013.833333
201143495.00000042.000000
\n", "
" ], "text/plain": [ " zipcode review_scores_rating number_of_reviews\n", "0 10003 92.514445 31.292486\n", "1 10011 93.691141 15.945257\n", "2 10013 91.690927 18.906767\n", "3 10014 93.658104 17.774297\n", "4 10021 93.153286 18.810971\n", "5 10022 88.233652 29.905702\n", "6 10023 94.411979 16.877034\n", "7 10025 92.062500 20.180494\n", "8 10028 94.200047 11.622623\n", "9 10036 90.763228 22.604651\n", "10 10128 91.747068 9.917482\n", "11 10304 80.000000 1.000000\n", "12 10305 93.333333 8.261438\n", "13 10306 95.500000 71.500000\n", "14 10312 97.857143 23.222222\n", "15 11201 95.517568 22.670683\n", "16 11215 95.111842 16.446481\n", "17 11217 94.709933 20.022059\n", "18 11231 94.353986 19.016645\n", "19 11234 88.000000 13.833333\n", "20 11434 95.000000 42.000000" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df[['zipcode','review_scores_rating', 'number_of_reviews']]" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# This function is used to create a plot with xaxis, yaxis and a variable whose size will change in the plot depending on the values\n", "\n", "def size_scatter(xaxis, yaxis, size):\n", " \n", " data=[]\n", " neighbours=['Manhattan', 'Brooklyn', 'Staten Island', 'Queens']\n", "\n", " for i in neighbours:\n", "\n", " trace = go.Scatter(x= final_df[final_df['neighbourhood_group_cleansed']==i][xaxis],\n", " y = final_df[final_df['neighbourhood_group_cleansed']==i][yaxis],\n", " mode='markers',\n", " marker=dict(\n", " size=final_df[final_df['neighbourhood_group_cleansed']==i][size]\n", " ),\n", " text = \"%s\"%(size)+'='+ final_df[final_df['neighbourhood_group_cleansed']==i][size].map(str) + '
' + \"Zipcode =\"+ final_df[final_df['neighbourhood_group_cleansed']==i]['zipcode'].map(str)\n", " )\n", " data.append(trace)\n", "\n", " layout= go.Layout(\n", " title= 'Scatter Plot with Size = %s' %(size),\n", " hovermode= 'closest',\n", " xaxis= dict(type='category',\n", " ticklen= 5,\n", " zeroline= False,\n", " gridwidth= 2,\n", " ),\n", " yaxis=dict(\n", " title= '%s'%(yaxis),\n", " ticklen= 5,\n", " gridwidth= 2,\n", " ),\n", " showlegend= False\n", " )\n", "\n", " fig = go.Figure(data=data, layout=layout)\n", " iplot(fig)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "size": [ 31.29248596316921, 15.945256943512682, 18.90676652892562, 17.774296797793415, 18.810971089696075, 29.905701754385962, 16.877033937703395, 20.180494356833645, 11.622623239436619, 22.6046511627907, 9.917482061317681 ] }, "mode": "markers", "text": [ "number_of_reviews=31.29248596316921
Zipcode =10003", "number_of_reviews=15.945256943512682
Zipcode =10011", "number_of_reviews=18.90676652892562
Zipcode =10013", "number_of_reviews=17.774296797793415
Zipcode =10014", "number_of_reviews=18.810971089696075
Zipcode =10021", "number_of_reviews=29.905701754385962
Zipcode =10022", "number_of_reviews=16.877033937703395
Zipcode =10023", "number_of_reviews=20.180494356833645
Zipcode =10025", "number_of_reviews=11.622623239436619
Zipcode =10028", "number_of_reviews=22.6046511627907
Zipcode =10036", "number_of_reviews=9.917482061317681
Zipcode =10128" ], "type": "scatter", "uid": "57d81a28-5c97-11e9-bb68-3cf862c2ea5b", "x": [ "Manhattan", "Manhattan", "Manhattan", "Manhattan", "Manhattan", "Manhattan", "Manhattan", "Manhattan", "Manhattan", "Manhattan", "Manhattan" ], "y": [ 92.51444452570757, 93.69114133604228, 91.69092704460968, 93.65810361681334, 93.15328644191122, 88.23365231259969, 94.41197895588829, 92.06249999999999, 94.20004734848487, 90.7632275132275, 91.74706823027716 ] }, { "marker": { "size": [ 22.67068288551852, 16.446480938416418, 20.022058823529406, 19.016645142775143, 13.833333333333334 ] }, "mode": "markers", "text": [ "number_of_reviews=22.67068288551852
Zipcode =11201", "number_of_reviews=16.446480938416418
Zipcode =11215", "number_of_reviews=20.022058823529406
Zipcode =11217", "number_of_reviews=19.016645142775143
Zipcode =11231", "number_of_reviews=13.833333333333334
Zipcode =11234" ], "type": "scatter", "uid": "57d81a29-5c97-11e9-9f16-3cf862c2ea5b", "x": [ "Brooklyn", "Brooklyn", "Brooklyn", "Brooklyn", "Brooklyn" ], "y": [ 95.51756823821339, 95.11184210526315, 94.70993333333334, 94.35398550724638, 88 ] }, { "marker": { "size": [ 1, 8.261437908496731, 71.5, 23.22222222222222 ] }, "mode": "markers", "text": [ "number_of_reviews=1.0
Zipcode =10304", "number_of_reviews=8.261437908496731
Zipcode =10305", "number_of_reviews=71.5
Zipcode =10306", "number_of_reviews=23.22222222222222
Zipcode =10312" ], "type": "scatter", "uid": "57d81a2a-5c97-11e9-8dd0-3cf862c2ea5b", "x": [ "Staten Island", "Staten Island", "Staten Island", "Staten Island" ], "y": [ 80, 93.33333333333333, 95.5, 97.85714285714286 ] }, { "marker": { "size": [ 42 ] }, "mode": "markers", "text": [ "number_of_reviews=42.0
Zipcode =11434" ], "type": "scatter", "uid": "57d81a2b-5c97-11e9-be5c-3cf862c2ea5b", "x": [ "Queens" ], "y": [ 95 ] } ], "layout": { "hovermode": "closest", "showlegend": false, "title": "Scatter Plot with Size = number_of_reviews", "xaxis": { "gridwidth": 2, "ticklen": 5, "type": "category", "zeroline": false }, "yaxis": { "gridwidth": 2, "ticklen": 5, "title": "review_scores_rating" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "size_scatter('neighbourhood_group_cleansed', 'review_scores_rating', 'number_of_reviews' )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### One important trend to note here is that 10306 from Staten Island has both higher number of reviews and higher review score. Also 10312 from Staten Island has higher review score." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Also 11201 from Brooklyn and 11434 from Queens also show higher number of reviews with higher review scores." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Also it can be seen that Manhattan on an average receives more reviews for all their zipcodes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### However as discussed at the beginning of this section, review analysis will only be taken as a support." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### -----------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analysis of Availability" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['zipcode',\n", " 'id',\n", " 'scrape_id',\n", " 'host_id',\n", " 'host_listings_count',\n", " 'host_total_listings_count',\n", " 'latitude',\n", " 'longitude',\n", " 'accommodates',\n", " 'bathrooms',\n", " 'bedrooms',\n", " 'beds',\n", " 'Revenue',\n", " 'guests_included',\n", " 'minimum_nights',\n", " 'maximum_nights',\n", " 'availability_30',\n", " 'availability_60',\n", " 'availability_90',\n", " 'availability_365',\n", " 'number_of_reviews',\n", " 'review_scores_rating',\n", " 'review_scores_accuracy',\n", " 'calculated_host_listings_count',\n", " 'RegionID',\n", " 'City',\n", " 'State',\n", " 'Metro',\n", " 'CountyName',\n", " 'SizeRank',\n", " '2007-06',\n", " '2007-07',\n", " '2007-08',\n", " '2007-09',\n", " '2007-10',\n", " '2007-11',\n", " '2007-12',\n", " '2008-01',\n", " '2008-02',\n", " '2008-03',\n", " '2008-04',\n", " '2008-05',\n", " '2008-06',\n", " '2008-07',\n", " '2008-08',\n", " '2008-09',\n", " '2008-10',\n", " '2008-11',\n", " '2008-12',\n", " '2009-01',\n", " '2009-02',\n", " '2009-03',\n", " '2009-04',\n", " '2009-05',\n", " '2009-06',\n", " '2009-07',\n", " '2009-08',\n", " '2009-09',\n", " '2009-10',\n", " '2009-11',\n", " '2009-12',\n", " '2010-01',\n", " '2010-02',\n", " '2010-03',\n", " '2010-04',\n", " '2010-05',\n", " '2010-06',\n", " '2010-07',\n", " '2010-08',\n", " '2010-09',\n", " '2010-10',\n", " '2010-11',\n", " '2010-12',\n", " '2011-01',\n", " '2011-02',\n", " '2011-03',\n", " '2011-04',\n", " '2011-05',\n", " '2011-06',\n", " '2011-07',\n", " '2011-08',\n", " '2011-09',\n", " '2011-10',\n", " '2011-11',\n", " '2011-12',\n", " '2012-01',\n", " '2012-02',\n", " '2012-03',\n", " '2012-04',\n", " '2012-05',\n", " '2012-06',\n", " '2012-07',\n", " '2012-08',\n", " '2012-09',\n", " '2012-10',\n", " '2012-11',\n", " '2012-12',\n", " '2013-01',\n", " '2013-02',\n", " '2013-03',\n", " '2013-04',\n", " '2013-05',\n", " '2013-06',\n", " '2013-07',\n", " '2013-08',\n", " '2013-09',\n", " '2013-10',\n", " '2013-11',\n", " '2013-12',\n", " '2014-01',\n", " '2014-02',\n", " '2014-03',\n", " '2014-04',\n", " '2014-05',\n", " '2014-06',\n", " '2014-07',\n", " '2014-08',\n", " '2014-09',\n", " '2014-10',\n", " '2014-11',\n", " '2014-12',\n", " '2015-01',\n", " '2015-02',\n", " '2015-03',\n", " '2015-04',\n", " '2015-05',\n", " '2015-06',\n", " '2015-07',\n", " '2015-08',\n", " '2015-09',\n", " '2015-10',\n", " '2015-11',\n", " '2015-12',\n", " '2016-01',\n", " '2016-02',\n", " '2016-03',\n", " '2016-04',\n", " '2016-05',\n", " '2016-06',\n", " '2016-07',\n", " '2016-08',\n", " '2016-09',\n", " '2016-10',\n", " '2016-11',\n", " '2016-12',\n", " '2017-01',\n", " '2017-02',\n", " '2017-03',\n", " '2017-04',\n", " '2017-05',\n", " '2017-06',\n", " '2017-07-01 00:00:00',\n", " '2017-08-01 00:00:00',\n", " '2017-09-01 00:00:00',\n", " '2017-10-01 00:00:00',\n", " '2017-11-01 00:00:00',\n", " '2017-12-01 00:00:00',\n", " '2018-01-01 00:00:00',\n", " '2018-02-01 00:00:00',\n", " '2018-03-01 00:00:00',\n", " '2018-04-01 00:00:00',\n", " '2018-05-01 00:00:00',\n", " '2018-06-01 00:00:00',\n", " '2018-07-01 00:00:00',\n", " '2018-08-01 00:00:00',\n", " '2018-09-01 00:00:00',\n", " '2018-10-01 00:00:00',\n", " '2018-11-01 00:00:00',\n", " '2018-12-01 00:00:00',\n", " '2019-01-01 00:00:00',\n", " '2019-02-01 00:00:00',\n", " '2019-03-01 00:00:00',\n", " 'Current Month Cost',\n", " 'neighbourhood_group_cleansed']" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cols(final_df)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 4.566372\n", "1 4.517241\n", "2 4.281250\n", "3 4.344086\n", "4 4.263158\n", "5 5.447368\n", "6 4.666667\n", "7 4.821429\n", "8 4.281250\n", "9 4.750000\n", "10 4.357143\n", "11 3.500000\n", "12 4.555556\n", "13 5.500000\n", "14 2.000000\n", "15 4.451613\n", "16 4.266129\n", "17 3.983333\n", "18 4.391304\n", "19 4.166667\n", "20 4.000000\n", "Name: accommodates, dtype: float64" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df['accommodates']" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to Create Barplots based on the Column Name Input\n", "\n", "def barplots_with_columnnames(columnlist, title):\n", " data=[]\n", " columns= columnlist\n", " \n", " # This loops over the column list which is specified while using the function and create a trace for each of them\n", " \n", " for i in columns:\n", " trace= go.Bar(x= final_df.zipcode.astype(str).tolist(),\n", " y= final_df[i],\n", " name=i)\n", " data.append(trace)\n", " \n", " # In the Layout, xaxis type='category' will convert the numerical Zipcodes in Xaxis as Categories\n", " \n", " layout=go.Layout(title='Bar Plot of %s'%(title) , xaxis=dict(type='category'), yaxis= dict( title='Days Available'))\n", " fig= go.Figure(data=data, layout=layout)\n", " iplot(fig)" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "name": "availability_30", "type": "bar", "uid": "59eb9ad4-5c97-11e9-a38b-3cf862c2ea5b", "x": [ "10003", "10011", "10013", "10014", "10021", "10022", "10023", "10025", "10028", "10036", "10128", "10304", "10305", "10306", "10312", "11201", "11215", "11217", "11231", "11234", "11434" ], "y": [ 6.31858407079646, 7.379310344827586, 10.484375, 5.634408602150538, 2.5789473684210527, 5.947368421052632, 6.079365079365079, 4.901785714285714, 5.375, 15.916666666666666, 4.142857142857143, 0.5, 6.888888888888889, 25, 30, 4.032258064516129, 3.0161290322580645, 2.783333333333333, 4.159420289855072, 20.166666666666668, 13 ] }, { "name": "availability_60", "type": "bar", "uid": "59eb9ad5-5c97-11e9-926a-3cf862c2ea5b", "x": [ "10003", "10011", "10013", "10014", "10021", "10022", "10023", "10025", "10028", "10036", "10128", "10304", "10305", "10306", "10312", "11201", "11215", "11217", "11231", "11234", "11434" ], "y": [ 16.56637168141593, 18.344827586206897, 25.375, 14.021505376344086, 6.526315789473684, 15.052631578947368, 13.492063492063492, 12.267857142857142, 11.75, 32.166666666666664, 12.839285714285714, 15.5, 19.333333333333332, 36, 60, 10.919354838709678, 8.661290322580646, 6.866666666666666, 12.63768115942029, 41.666666666666664, 43 ] }, { "name": "availability_90", "type": "bar", "uid": "59eb9ad6-5c97-11e9-8671-3cf862c2ea5b", "x": [ "10003", "10011", "10013", "10014", "10021", "10022", "10023", "10025", "10028", "10036", "10128", "10304", "10305", "10306", "10312", "11201", "11215", "11217", "11231", "11234", "11434" ], "y": [ 28.8141592920354, 30.79310344827586, 41.03125, 24.537634408602152, 12.736842105263158, 28.42105263157895, 22.095238095238095, 21.571428571428573, 18.4375, 48.25, 21.678571428571427, 30.5, 36.55555555555556, 44, 90, 20.161290322580644, 17.056451612903224, 13.366666666666667, 25.202898550724637, 58.833333333333336, 73 ] }, { "name": "availability_365", "type": "bar", "uid": "59eb9ad7-5c97-11e9-8e89-3cf862c2ea5b", "x": [ "10003", "10011", "10013", "10014", "10021", "10022", "10023", "10025", "10028", "10036", "10128", "10304", "10305", "10306", "10312", "11201", "11215", "11217", "11231", "11234", "11434" ], "y": [ 134.55752212389382, 129.44827586206895, 154.046875, 116.05376344086021, 58.526315789473685, 159.94736842105263, 108.26984126984127, 105.35714285714286, 72, 187, 106.55357142857143, 30.5, 168.44444444444446, 219, 90, 91.45161290322581, 82.2258064516129, 89.26666666666667, 128.7826086956522, 324.6666666666667, 348 ] } ], "layout": { "title": "Bar Plot of Availability", "xaxis": { "type": "category" }, "yaxis": { "title": "Days Available" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "barplots_with_columnnames(['availability_30','availability_60','availability_90','availability_365'], 'Availability')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### This chart shows that the zipcode 10312 is mostly available for the 30 day, 60 day and 90 day period. A data error is present for its availability for 365 day period. Since it is fully available during the 30,60 and 90 day period, it is not a good property to invest. This substantiates the above statement in the review analysis where 10312 seemes better during the review analysis but it is fully available. This shows that 10312 might have been with 0 reviews and have performed better in review analysis due to the fact that it is replaced with their group mean." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### It is the same with 10304 where the 365 day period is an error. But 10304 has lesser availability during the 30, 60 and 90 day period making it a potential investment. But nothing can be concluded before performing the economic analysis." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Also 10021 and 10028 seems to have very less availability which could also be considered." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 11434 from Queens has higher availability and hence it is also not a potential investment" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Manhattan", "text": [ 10003, 10011, 10013, 10014, 10021, 10022, 10023, 10025, 10028, 10036, 10128 ], "type": "scatter", "uid": "5aac4222-5c97-11e9-bb48-3cf862c2ea5b", "x": [ 28.8141592920354, 30.79310344827586, 41.03125, 24.537634408602152, 12.736842105263158, 28.42105263157895, 22.095238095238095, 21.571428571428573, 18.4375, 48.25, 21.678571428571427 ], "y": [ 310.8141592920354, 363.58620689655174, 389.84375, 325.2903225806452, 273.8421052631579, 367.2894736842105, 284.6984126984127, 286, 270.46875, 445.6666666666667, 225.375 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Brooklyn", "text": [ 11201, 11215, 11217, 11231, 11234 ], "type": "scatter", "uid": "5aac4223-5c97-11e9-a3a7-3cf862c2ea5b", "x": [ 20.161290322580644, 17.056451612903224, 13.366666666666667, 25.202898550724637, 58.833333333333336 ], "y": [ 208.6290322580645, 177.68548387096774, 203.11666666666667, 200.53623188405797, 107.33333333333333 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Staten Island", "text": [ 10304, 10305, 10306, 10312 ], "type": "scatter", "uid": "5aac6914-5c97-11e9-8e01-3cf862c2ea5b", "x": [ 30.5, 36.55555555555556, 44, 90 ], "y": [ 97, 111.22222222222223, 93, 215 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Queens", "text": [ 11434 ], "type": "scatter", "uid": "5aac6915-5c97-11e9-bcce-3cf862c2ea5b", "x": [ 73 ], "y": [ 155 ] } ], "layout": { "hovermode": "closest", "title": "Availability-Revenue Analysis", "xaxis": { "title": "availability_90" }, "yaxis": { "title": "Revenue" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Using the scatterplot function create above to plot the graph between availability and revenue\n", "\n", "scatterplot('availability_90','Revenue', 'Availability-Revenue Analysis')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### This plot shows that houses which charge more have lesser availability compared to the houses which charge less." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### It is pleasing to know that people are ready to spent more on houses." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### One important trend to note here is that the revenue for Brooklyn is only slightly lesser than Manhattan but also has equally low availability as Manhattan. " ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Manhattan", "text": [ 10003, 10011, 10013, 10014, 10021, 10022, 10023, 10025, 10028, 10036, 10128 ], "type": "scatter", "uid": "5b7fd92e-5c97-11e9-8149-3cf862c2ea5b", "x": [ 28.8141592920354, 30.79310344827586, 41.03125, 24.537634408602152, 12.736842105263158, 28.42105263157895, 22.095238095238095, 21.571428571428573, 18.4375, 48.25, 21.678571428571427 ], "y": [ 2374217.9775280897, 2752755.056179776, 3575506.741573031, 2748629.2134831483, 1976694.3820224707, 2206759.550561795, 2357455.056179776, 1583689.8876404483, 2320684.2696629236, 1830142.6966292155, 3448662.4999999967 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Brooklyn", "text": [ 11201, 11215, 11217, 11231, 11234 ], "type": "scatter", "uid": "5b7fd92f-5c97-11e9-acd2-3cf862c2ea5b", "x": [ 20.161290322580644, 17.056451612903224, 13.366666666666667, 25.202898550724637, 58.833333333333336 ], "y": [ 1588270.7865168517, 1204653.932584269, 1945700.0000000016, 1354082.0224719103, 457599.69604294165 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Staten Island", "text": [ 10304, 10305, 10306, 10312 ], "type": "scatter", "uid": "5b7fd930-5c97-11e9-b221-3cf862c2ea5b", "x": [ 30.5, 36.55555555555556, 44, 90 ], "y": [ 500909.2119367609, 582487.5000000007, 481775, 436865.44943987636 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Queens", "text": [ 11434 ], "type": "scatter", "uid": "5b7fd931-5c97-11e9-bf60-3cf862c2ea5b", "x": [ 73 ], "y": [ 448484.1523794591 ] } ], "layout": { "hovermode": "closest", "title": "Availability-Cost Analysis", "xaxis": { "title": "availability_90" }, "yaxis": { "title": "Current Month Cost" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Using the scatterplot function create above to plot the graph between availability and Cost\n", "\n", "scatterplot('availability_90','Current Month Cost', 'Availability-Cost Analysis')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Similar to the Revenue, the houses with higher cost has lesser availability. It also supports the logic that higher cost houses are more sophisticated and bring better living experience making it higher in demand." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### This shows that people are willing to rent houses which are more expensive. Thus this should be considered while deciding to invest." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The above two plots also indiate that there could be some correlation between Price and Cost. Let's check that!!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ------------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Correlation between Revenue, Cost, Reviews and Availability" ] }, { "cell_type": "code", "execution_count": 71, "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", "
zipcodeidscrape_idhost_idhost_listings_counthost_total_listings_countlatitudelongitudeaccommodatesbathrooms...2018-08-01 00:00:002018-09-01 00:00:002018-10-01 00:00:002018-11-01 00:00:002018-12-01 00:00:002019-01-01 00:00:002019-02-01 00:00:002019-03-01 00:00:00Current Month Costneighbourhood_group_cleansed
0100039.124661e+062.017050e+132.496037e+071.6460181.64601840.728902-73.9882584.5663721.225664...2.291593e+062.301921e+062.312249e+062.322578e+062.332906e+062.343234e+062.353562e+062.363890e+062.374218e+06Manhattan
1100119.889107e+062.017050e+133.005599e+071.4482761.44827640.742371-73.9997524.5172411.337209...2.653717e+062.666097e+062.678476e+062.690856e+062.703236e+062.715616e+062.727996e+062.740375e+062.752755e+06Manhattan
2100131.054726e+072.017050e+132.783653e+071.4126981.41269840.719555-74.0040754.2812501.359375...3.481322e+063.493096e+063.504869e+063.516642e+063.528415e+063.540188e+063.551961e+063.563734e+063.575507e+06Manhattan
3100148.654217e+062.017050e+132.054620e+071.5376341.53763440.734209-74.0042404.3440861.182796...2.655164e+062.666847e+062.678530e+062.690213e+062.701897e+062.713580e+062.725263e+062.736946e+062.748629e+06Manhattan
4100211.022891e+072.017050e+133.568867e+071.5263161.52631640.768441-73.9566284.2631581.052632...1.918115e+061.925437e+061.932760e+061.940082e+061.947404e+061.954727e+061.962049e+061.969372e+061.976694e+06Manhattan
\n", "

5 rows × 174 columns

\n", "
" ], "text/plain": [ " zipcode id scrape_id host_id host_listings_count \\\n", "0 10003 9.124661e+06 2.017050e+13 2.496037e+07 1.646018 \n", "1 10011 9.889107e+06 2.017050e+13 3.005599e+07 1.448276 \n", "2 10013 1.054726e+07 2.017050e+13 2.783653e+07 1.412698 \n", "3 10014 8.654217e+06 2.017050e+13 2.054620e+07 1.537634 \n", "4 10021 1.022891e+07 2.017050e+13 3.568867e+07 1.526316 \n", "\n", " host_total_listings_count latitude longitude accommodates bathrooms \\\n", "0 1.646018 40.728902 -73.988258 4.566372 1.225664 \n", "1 1.448276 40.742371 -73.999752 4.517241 1.337209 \n", "2 1.412698 40.719555 -74.004075 4.281250 1.359375 \n", "3 1.537634 40.734209 -74.004240 4.344086 1.182796 \n", "4 1.526316 40.768441 -73.956628 4.263158 1.052632 \n", "\n", " ... 2018-08-01 00:00:00 2018-09-01 00:00:00 \\\n", "0 ... 2.291593e+06 2.301921e+06 \n", "1 ... 2.653717e+06 2.666097e+06 \n", "2 ... 3.481322e+06 3.493096e+06 \n", "3 ... 2.655164e+06 2.666847e+06 \n", "4 ... 1.918115e+06 1.925437e+06 \n", "\n", " 2018-10-01 00:00:00 2018-11-01 00:00:00 2018-12-01 00:00:00 \\\n", "0 2.312249e+06 2.322578e+06 2.332906e+06 \n", "1 2.678476e+06 2.690856e+06 2.703236e+06 \n", "2 3.504869e+06 3.516642e+06 3.528415e+06 \n", "3 2.678530e+06 2.690213e+06 2.701897e+06 \n", "4 1.932760e+06 1.940082e+06 1.947404e+06 \n", "\n", " 2019-01-01 00:00:00 2019-02-01 00:00:00 2019-03-01 00:00:00 \\\n", "0 2.343234e+06 2.353562e+06 2.363890e+06 \n", "1 2.715616e+06 2.727996e+06 2.740375e+06 \n", "2 3.540188e+06 3.551961e+06 3.563734e+06 \n", "3 2.713580e+06 2.725263e+06 2.736946e+06 \n", "4 1.954727e+06 1.962049e+06 1.969372e+06 \n", "\n", " Current Month Cost neighbourhood_group_cleansed \n", "0 2.374218e+06 Manhattan \n", "1 2.752755e+06 Manhattan \n", "2 3.575507e+06 Manhattan \n", "3 2.748629e+06 Manhattan \n", "4 1.976694e+06 Manhattan \n", "\n", "[5 rows x 174 columns]" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df.head()" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# For plotting the Correlation, a function to normalize columns was created\n", "\n", "def normalize(dataset):\n", " return((dataset- min(dataset))/ (max(dataset)- min(dataset)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since all the variables are in different units, it will be essential to conver them to a range between 0-1 and then compare" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Normalizing the Revenue, Cost and Review:\n", "\n", "normalized_revenue= normalize(final_df['Revenue'])\n", "normalized_cost= normalize(final_df['Current Month Cost'])\n", "normalized_review= normalize(final_df['review_scores_rating'])\n", "normalized_availability= normalize(final_df['availability_90'])\n", "scatter_df = pd.concat([normalized_revenue, normalized_cost, normalized_review,normalized_availability], axis=1)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "color": "rgb(12, 51, 131)" }, "showlegend": false, "type": "box", "uid": "5dab0a36-5c97-11e9-92a3-3cf862c2ea5b", "xaxis": "x", "y": [ 0.6176204894859227, 0.7672576755100711, 0.8417119565217391, 0.6586682114763096, 0.5127847975325839, 0.7777584319968162, 0.5435682779728148, 0.5472589792060492, 0.503219517958412, 1, 0.37535444234404536, 0.011342155009451795, 0.051669817265280416, 0, 0.34593572778827975, 0.3278706018659674, 0.2401289712787365, 0.31224007561436673, 0.3049231527903345, 0.040642722117202254, 0.17580340264650282 ], "yaxis": "y" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": true, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5daba60a-5c97-11e9-bc3a-3cf862c2ea5b", "x": [ 0.6172583445403873, 0.7378637414044604, 1, 0.7365492099519594, 0.4906036686773024, 0.5639045486204711, 0.6119175235327975, 0.36538882002063416, 0.6002020125538856, 0.44391095302337286, 0.9595862573110974, 0.020404932114226306, 0.0463965254408392, 0.014308596102615213, 0, 0.3668483365598084, 0.24462447654302372, 0.4807285733294666, 0.292233641139875, 0.006606121781114211, 0.0037018256812922346 ], "xaxis": "x2", "y": [ 0.6176204894859227, 0.7672576755100711, 0.8417119565217391, 0.6586682114763096, 0.5127847975325839, 0.7777584319968162, 0.5435682779728148, 0.5472589792060492, 0.503219517958412, 1, 0.37535444234404536, 0.011342155009451795, 0.051669817265280416, 0, 0.34593572778827975, 0.3278706018659674, 0.2401289712787365, 0.31224007561436673, 0.3049231527903345, 0.040642722117202254, 0.17580340264650282 ], "yaxis": "y2" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5dac1aee-5c97-11e9-b689-3cf862c2ea5b", "x": [ 0.700808893439624, 0.7667039148183674, 0.6546919144981419, 0.7648538025415466, 0.7365840407470282, 0.46108452950558243, 0.8070708215297439, 0.6754999999999991, 0.7952026515151527, 0.6027407407407401, 0.6578358208955211, 0, 0.7466666666666663, 0.8679999999999998, 1, 0.8689838213399494, 0.8462631578947363, 0.8237562666666668, 0.803823188405797, 0.4479999999999999, 0.8399999999999999 ], "xaxis": "x3", "y": [ 0.6176204894859227, 0.7672576755100711, 0.8417119565217391, 0.6586682114763096, 0.5127847975325839, 0.7777584319968162, 0.5435682779728148, 0.5472589792060492, 0.503219517958412, 1, 0.37535444234404536, 0.011342155009451795, 0.051669817265280416, 0, 0.34593572778827975, 0.3278706018659674, 0.2401289712787365, 0.31224007561436673, 0.3049231527903345, 0.040642722117202254, 0.17580340264650282 ], "yaxis": "y3" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5dac68d8-5c97-11e9-a117-3cf862c2ea5b", "x": [ 0.20808516794868703, 0.23369820539321617, 0.3662082765667575, 0.15273505024757553, 0, 0.20299727520435967, 0.1211236538212015, 0.11434410276372131, 0.07378235694822888, 0.45963896457765663, 0.11573082911638767, 0.22990463215258855, 0.30828035119588254, 0.40463215258855584, 1, 0.09609299463830534, 0.05590775248307988, 0.008151680290644878, 0.1613454172096513, 0.5966167120799273, 0.7799727520435966 ], "xaxis": "x4", "y": [ 0.6176204894859227, 0.7672576755100711, 0.8417119565217391, 0.6586682114763096, 0.5127847975325839, 0.7777584319968162, 0.5435682779728148, 0.5472589792060492, 0.503219517958412, 1, 0.37535444234404536, 0.011342155009451795, 0.051669817265280416, 0, 0.34593572778827975, 0.3278706018659674, 0.2401289712787365, 0.31224007561436673, 0.3049231527903345, 0.040642722117202254, 0.17580340264650282 ], "yaxis": "y4" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5dacddb6-5c97-11e9-b9f7-3cf862c2ea5b", "x": [ 0.6176204894859227, 0.7672576755100711, 0.8417119565217391, 0.6586682114763096, 0.5127847975325839, 0.7777584319968162, 0.5435682779728148, 0.5472589792060492, 0.503219517958412, 1, 0.37535444234404536, 0.011342155009451795, 0.051669817265280416, 0, 0.34593572778827975, 0.3278706018659674, 0.2401289712787365, 0.31224007561436673, 0.3049231527903345, 0.040642722117202254, 0.17580340264650282 ], "xaxis": "x5", "y": [ 0.6172583445403873, 0.7378637414044604, 1, 0.7365492099519594, 0.4906036686773024, 0.5639045486204711, 0.6119175235327975, 0.36538882002063416, 0.6002020125538856, 0.44391095302337286, 0.9595862573110974, 0.020404932114226306, 0.0463965254408392, 0.014308596102615213, 0, 0.3668483365598084, 0.24462447654302372, 0.4807285733294666, 0.292233641139875, 0.006606121781114211, 0.0037018256812922346 ], "yaxis": "y5" }, { "marker": { "color": "rgb(12, 51, 131)" }, "showlegend": false, "type": "box", "uid": "5dad529c-5c97-11e9-b5bf-3cf862c2ea5b", "xaxis": "x6", "y": [ 0.6172583445403873, 0.7378637414044604, 1, 0.7365492099519594, 0.4906036686773024, 0.5639045486204711, 0.6119175235327975, 0.36538882002063416, 0.6002020125538856, 0.44391095302337286, 0.9595862573110974, 0.020404932114226306, 0.0463965254408392, 0.014308596102615213, 0, 0.3668483365598084, 0.24462447654302372, 0.4807285733294666, 0.292233641139875, 0.006606121781114211, 0.0037018256812922346 ], "yaxis": "y6" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5dadee6e-5c97-11e9-a917-3cf862c2ea5b", "x": [ 0.700808893439624, 0.7667039148183674, 0.6546919144981419, 0.7648538025415466, 0.7365840407470282, 0.46108452950558243, 0.8070708215297439, 0.6754999999999991, 0.7952026515151527, 0.6027407407407401, 0.6578358208955211, 0, 0.7466666666666663, 0.8679999999999998, 1, 0.8689838213399494, 0.8462631578947363, 0.8237562666666668, 0.803823188405797, 0.4479999999999999, 0.8399999999999999 ], "xaxis": "x7", "y": [ 0.6172583445403873, 0.7378637414044604, 1, 0.7365492099519594, 0.4906036686773024, 0.5639045486204711, 0.6119175235327975, 0.36538882002063416, 0.6002020125538856, 0.44391095302337286, 0.9595862573110974, 0.020404932114226306, 0.0463965254408392, 0.014308596102615213, 0, 0.3668483365598084, 0.24462447654302372, 0.4807285733294666, 0.292233641139875, 0.006606121781114211, 0.0037018256812922346 ], "yaxis": "y7" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5dae634a-5c97-11e9-ae0e-3cf862c2ea5b", "x": [ 0.20808516794868703, 0.23369820539321617, 0.3662082765667575, 0.15273505024757553, 0, 0.20299727520435967, 0.1211236538212015, 0.11434410276372131, 0.07378235694822888, 0.45963896457765663, 0.11573082911638767, 0.22990463215258855, 0.30828035119588254, 0.40463215258855584, 1, 0.09609299463830534, 0.05590775248307988, 0.008151680290644878, 0.1613454172096513, 0.5966167120799273, 0.7799727520435966 ], "xaxis": "x8", "y": [ 0.6172583445403873, 0.7378637414044604, 1, 0.7365492099519594, 0.4906036686773024, 0.5639045486204711, 0.6119175235327975, 0.36538882002063416, 0.6002020125538856, 0.44391095302337286, 0.9595862573110974, 0.020404932114226306, 0.0463965254408392, 0.014308596102615213, 0, 0.3668483365598084, 0.24462447654302372, 0.4807285733294666, 0.292233641139875, 0.006606121781114211, 0.0037018256812922346 ], "yaxis": "y8" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5daed890-5c97-11e9-97cc-3cf862c2ea5b", "x": [ 0.6176204894859227, 0.7672576755100711, 0.8417119565217391, 0.6586682114763096, 0.5127847975325839, 0.7777584319968162, 0.5435682779728148, 0.5472589792060492, 0.503219517958412, 1, 0.37535444234404536, 0.011342155009451795, 0.051669817265280416, 0, 0.34593572778827975, 0.3278706018659674, 0.2401289712787365, 0.31224007561436673, 0.3049231527903345, 0.040642722117202254, 0.17580340264650282 ], "xaxis": "x9", "y": [ 0.700808893439624, 0.7667039148183674, 0.6546919144981419, 0.7648538025415466, 0.7365840407470282, 0.46108452950558243, 0.8070708215297439, 0.6754999999999991, 0.7952026515151527, 0.6027407407407401, 0.6578358208955211, 0, 0.7466666666666663, 0.8679999999999998, 1, 0.8689838213399494, 0.8462631578947363, 0.8237562666666668, 0.803823188405797, 0.4479999999999999, 0.8399999999999999 ], "yaxis": "y9" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5dafc278-5c97-11e9-a6ae-3cf862c2ea5b", "x": [ 0.6172583445403873, 0.7378637414044604, 1, 0.7365492099519594, 0.4906036686773024, 0.5639045486204711, 0.6119175235327975, 0.36538882002063416, 0.6002020125538856, 0.44391095302337286, 0.9595862573110974, 0.020404932114226306, 0.0463965254408392, 0.014308596102615213, 0, 0.3668483365598084, 0.24462447654302372, 0.4807285733294666, 0.292233641139875, 0.006606121781114211, 0.0037018256812922346 ], "xaxis": "x10", "y": [ 0.700808893439624, 0.7667039148183674, 0.6546919144981419, 0.7648538025415466, 0.7365840407470282, 0.46108452950558243, 0.8070708215297439, 0.6754999999999991, 0.7952026515151527, 0.6027407407407401, 0.6578358208955211, 0, 0.7466666666666663, 0.8679999999999998, 1, 0.8689838213399494, 0.8462631578947363, 0.8237562666666668, 0.803823188405797, 0.4479999999999999, 0.8399999999999999 ], "yaxis": "y10" }, { "marker": { "color": "rgb(12, 51, 131)" }, "showlegend": false, "type": "box", "uid": "5db00fd8-5c97-11e9-a6e0-3cf862c2ea5b", "xaxis": "x11", "y": [ 0.700808893439624, 0.7667039148183674, 0.6546919144981419, 0.7648538025415466, 0.7365840407470282, 0.46108452950558243, 0.8070708215297439, 0.6754999999999991, 0.7952026515151527, 0.6027407407407401, 0.6578358208955211, 0, 0.7466666666666663, 0.8679999999999998, 1, 0.8689838213399494, 0.8462631578947363, 0.8237562666666668, 0.803823188405797, 0.4479999999999999, 0.8399999999999999 ], "yaxis": "y11" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5db084b6-5c97-11e9-a9ea-3cf862c2ea5b", "x": [ 0.20808516794868703, 0.23369820539321617, 0.3662082765667575, 0.15273505024757553, 0, 0.20299727520435967, 0.1211236538212015, 0.11434410276372131, 0.07378235694822888, 0.45963896457765663, 0.11573082911638767, 0.22990463215258855, 0.30828035119588254, 0.40463215258855584, 1, 0.09609299463830534, 0.05590775248307988, 0.008151680290644878, 0.1613454172096513, 0.5966167120799273, 0.7799727520435966 ], "xaxis": "x12", "y": [ 0.700808893439624, 0.7667039148183674, 0.6546919144981419, 0.7648538025415466, 0.7365840407470282, 0.46108452950558243, 0.8070708215297439, 0.6754999999999991, 0.7952026515151527, 0.6027407407407401, 0.6578358208955211, 0, 0.7466666666666663, 0.8679999999999998, 1, 0.8689838213399494, 0.8462631578947363, 0.8237562666666668, 0.803823188405797, 0.4479999999999999, 0.8399999999999999 ], "yaxis": "y12" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5db0f998-5c97-11e9-b22d-3cf862c2ea5b", "x": [ 0.6176204894859227, 0.7672576755100711, 0.8417119565217391, 0.6586682114763096, 0.5127847975325839, 0.7777584319968162, 0.5435682779728148, 0.5472589792060492, 0.503219517958412, 1, 0.37535444234404536, 0.011342155009451795, 0.051669817265280416, 0, 0.34593572778827975, 0.3278706018659674, 0.2401289712787365, 0.31224007561436673, 0.3049231527903345, 0.040642722117202254, 0.17580340264650282 ], "xaxis": "x13", "y": [ 0.20808516794868703, 0.23369820539321617, 0.3662082765667575, 0.15273505024757553, 0, 0.20299727520435967, 0.1211236538212015, 0.11434410276372131, 0.07378235694822888, 0.45963896457765663, 0.11573082911638767, 0.22990463215258855, 0.30828035119588254, 0.40463215258855584, 1, 0.09609299463830534, 0.05590775248307988, 0.008151680290644878, 0.1613454172096513, 0.5966167120799273, 0.7799727520435966 ], "yaxis": "y13" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5db16e76-5c97-11e9-8046-3cf862c2ea5b", "x": [ 0.6172583445403873, 0.7378637414044604, 1, 0.7365492099519594, 0.4906036686773024, 0.5639045486204711, 0.6119175235327975, 0.36538882002063416, 0.6002020125538856, 0.44391095302337286, 0.9595862573110974, 0.020404932114226306, 0.0463965254408392, 0.014308596102615213, 0, 0.3668483365598084, 0.24462447654302372, 0.4807285733294666, 0.292233641139875, 0.006606121781114211, 0.0037018256812922346 ], "xaxis": "x14", "y": [ 0.20808516794868703, 0.23369820539321617, 0.3662082765667575, 0.15273505024757553, 0, 0.20299727520435967, 0.1211236538212015, 0.11434410276372131, 0.07378235694822888, 0.45963896457765663, 0.11573082911638767, 0.22990463215258855, 0.30828035119588254, 0.40463215258855584, 1, 0.09609299463830534, 0.05590775248307988, 0.008151680290644878, 0.1613454172096513, 0.5966167120799273, 0.7799727520435966 ], "yaxis": "y14" }, { "marker": { "color": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ], "colorscale": [ [ 0, "rgb(12, 51, 131)" ], [ 1, "rgb(217, 30, 30)" ] ], "showscale": false, "size": 6 }, "mode": "markers", "showlegend": false, "type": "scatter", "uid": "5db1e354-5c97-11e9-9c3c-3cf862c2ea5b", "x": [ 0.700808893439624, 0.7667039148183674, 0.6546919144981419, 0.7648538025415466, 0.7365840407470282, 0.46108452950558243, 0.8070708215297439, 0.6754999999999991, 0.7952026515151527, 0.6027407407407401, 0.6578358208955211, 0, 0.7466666666666663, 0.8679999999999998, 1, 0.8689838213399494, 0.8462631578947363, 0.8237562666666668, 0.803823188405797, 0.4479999999999999, 0.8399999999999999 ], "xaxis": "x15", "y": [ 0.20808516794868703, 0.23369820539321617, 0.3662082765667575, 0.15273505024757553, 0, 0.20299727520435967, 0.1211236538212015, 0.11434410276372131, 0.07378235694822888, 0.45963896457765663, 0.11573082911638767, 0.22990463215258855, 0.30828035119588254, 0.40463215258855584, 1, 0.09609299463830534, 0.05590775248307988, 0.008151680290644878, 0.1613454172096513, 0.5966167120799273, 0.7799727520435966 ], "yaxis": "y15" }, { "marker": { "color": "rgb(12, 51, 131)" }, "showlegend": false, "type": "box", "uid": "5db23142-5c97-11e9-abfa-3cf862c2ea5b", "xaxis": "x16", "y": [ 0.20808516794868703, 0.23369820539321617, 0.3662082765667575, 0.15273505024757553, 0, 0.20299727520435967, 0.1211236538212015, 0.11434410276372131, 0.07378235694822888, 0.45963896457765663, 0.11573082911638767, 0.22990463215258855, 0.30828035119588254, 0.40463215258855584, 1, 0.09609299463830534, 0.05590775248307988, 0.008151680290644878, 0.1613454172096513, 0.5966167120799273, 0.7799727520435966 ], "yaxis": "y16" } ], "layout": { "height": 900, "showlegend": true, "title": "Scatterplot Matrix", "width": 900, "xaxis": { "anchor": "y", "domain": [ 0, 0.2125 ], "showticklabels": false }, "xaxis10": { "anchor": "y10", "domain": [ 0.2625, 0.475 ] }, "xaxis11": { "anchor": "y11", "domain": [ 0.525, 0.7375 ], "showticklabels": false }, "xaxis12": { "anchor": "y12", "domain": [ 0.7875, 1 ] }, "xaxis13": { "anchor": "y13", "domain": [ 0, 0.2125 ], "title": "Revenue" }, "xaxis14": { "anchor": "y14", "domain": [ 0.2625, 0.475 ], "title": "Current Month Cost" }, "xaxis15": { "anchor": "y15", "domain": [ 0.525, 0.7375 ], "title": "review_scores_rating" }, "xaxis16": { "anchor": "y16", "domain": [ 0.7875, 1 ], "showticklabels": false, "title": "availability_90" }, "xaxis2": { "anchor": "y2", "domain": [ 0.2625, 0.475 ] }, "xaxis3": { "anchor": "y3", "domain": [ 0.525, 0.7375 ] }, "xaxis4": { "anchor": "y4", "domain": [ 0.7875, 1 ] }, "xaxis5": { "anchor": "y5", "domain": [ 0, 0.2125 ] }, "xaxis6": { "anchor": "y6", "domain": [ 0.2625, 0.475 ], "showticklabels": false }, "xaxis7": { "anchor": "y7", "domain": [ 0.525, 0.7375 ] }, "xaxis8": { "anchor": "y8", "domain": [ 0.7875, 1 ] }, "xaxis9": { "anchor": "y9", "domain": [ 0, 0.2125 ] }, "yaxis": { "anchor": "x", "domain": [ 0.80625, 1 ], "title": "Revenue" }, "yaxis10": { "anchor": "x10", "domain": [ 0.26875, 0.4625 ] }, "yaxis11": { "anchor": "x11", "domain": [ 0.26875, 0.4625 ] }, "yaxis12": { "anchor": "x12", "domain": [ 0.26875, 0.4625 ] }, "yaxis13": { "anchor": "x13", "domain": [ 0, 0.19375 ], "title": "availability_90" }, "yaxis14": { "anchor": "x14", "domain": [ 0, 0.19375 ] }, "yaxis15": { "anchor": "x15", "domain": [ 0, 0.19375 ] }, "yaxis16": { "anchor": "x16", "domain": [ 0, 0.19375 ] }, "yaxis2": { "anchor": "x2", "domain": [ 0.80625, 1 ] }, "yaxis3": { "anchor": "x3", "domain": [ 0.80625, 1 ] }, "yaxis4": { "anchor": "x4", "domain": [ 0.80625, 1 ] }, "yaxis5": { "anchor": "x5", "domain": [ 0.5375, 0.73125 ], "title": "Current Month Cost" }, "yaxis6": { "anchor": "x6", "domain": [ 0.5375, 0.73125 ] }, "yaxis7": { "anchor": "x7", "domain": [ 0.5375, 0.73125 ] }, "yaxis8": { "anchor": "x8", "domain": [ 0.5375, 0.73125 ] }, "yaxis9": { "anchor": "x9", "domain": [ 0.26875, 0.4625 ], "title": "review_scores_rating" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plotting the Scatterplot Matrix\n", "\n", "import plotly.figure_factory as ff\n", "\n", "# Here the Index is arranged so that the scale on the side starts from 1 and ends at 21 instead of the default (0 to 21)\n", "scatter_df['index'] = np.arange(1,len(scatter_df)+1)\n", "\n", "\n", "fig = ff.create_scatterplotmatrix(scatter_df, diag ='box', index = 'index' , colormap ='Portland',\n", " colormap_type = 'seq', height = 900, width = 900)\n", "iplot(fig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### There seems to be a good positive correlation between the Cost and the Revenue indicating that when \n", "### the cost is high, the price host charge(revenue) is also high which is logical." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### There is no real correlation between the availability- review scores within each other and also among other variables " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ----------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Distribution of Revenue and Cost" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to Create Violin plots\n", "\n", "def violinplot(columnname):\n", " data=[]\n", " neighbours=['Manhattan', 'Brooklyn', 'Staten Island', 'Queens']\n", " \n", " # Loop to create 4 traces to plot 4 violin plots each for each neighbour.\n", " for i in neighbours:\n", " trace = { \"type\": 'violin',\n", " \"y\": final_df[final_df['neighbourhood_group_cleansed']==i][columnname],\n", " \"name\": i,\n", " \"box\": {\n", " \"visible\": True\n", " },\n", " \"meanline\": {\n", " \"visible\": True\n", " }\n", " }\n", "\n", " data.append(trace)\n", "\n", " fig = {\n", " \"data\": data,\n", " \"layout\" : {\n", " \"title\": \"Violin plot of %s\" %columnname,\n", " \"yaxis\": {\n", " \"zeroline\": False,\n", " }\n", " }\n", " }\n", "\n", " iplot(fig)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Manhattan", "type": "violin", "uid": "62066062-5c97-11e9-bf72-3cf862c2ea5b", "y": [ 310.8141592920354, 363.58620689655174, 389.84375, 325.2903225806452, 273.8421052631579, 367.2894736842105, 284.6984126984127, 286, 270.46875, 445.6666666666667, 225.375 ] }, { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Brooklyn", "type": "violin", "uid": "62066063-5c97-11e9-a0a2-3cf862c2ea5b", "y": [ 208.6290322580645, 177.68548387096774, 203.11666666666667, 200.53623188405797, 107.33333333333333 ] }, { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Staten Island", "type": "violin", "uid": "62066064-5c97-11e9-acc4-3cf862c2ea5b", "y": [ 97, 111.22222222222223, 93, 215 ] }, { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Queens", "type": "violin", "uid": "62066065-5c97-11e9-8c96-3cf862c2ea5b", "y": [ 155 ] } ], "layout": { "title": "Violin plot of Revenue", "yaxis": { "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Violin Plots of Revenue:\n", "\n", "violinplot('Revenue')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The above plot shows that Manhattan has a higher revenue in general and it is followed by Brooklyn, Staten Island and Queens" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Also the revenue range is very broad in case of Manhattan and Staten Island. For queens, since it has just a single zipcode, it shows a line." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Manhattan", "type": "violin", "uid": "629180dc-5c97-11e9-860d-3cf862c2ea5b", "y": [ 2374217.9775280897, 2752755.056179776, 3575506.741573031, 2748629.2134831483, 1976694.3820224707, 2206759.550561795, 2357455.056179776, 1583689.8876404483, 2320684.2696629236, 1830142.6966292155, 3448662.4999999967 ] }, { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Brooklyn", "type": "violin", "uid": "6291a7ca-5c97-11e9-803c-3cf862c2ea5b", "y": [ 1588270.7865168517, 1204653.932584269, 1945700.0000000016, 1354082.0224719103, 457599.69604294165 ] }, { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Staten Island", "type": "violin", "uid": "6291a7cb-5c97-11e9-bf99-3cf862c2ea5b", "y": [ 500909.2119367609, 582487.5000000007, 481775, 436865.44943987636 ] }, { "box": { "visible": true }, "meanline": { "visible": true }, "name": "Queens", "type": "violin", "uid": "6291a7cc-5c97-11e9-9faa-3cf862c2ea5b", "y": [ 448484.1523794591 ] } ], "layout": { "title": "Violin plot of Current Month Cost", "yaxis": { "zeroline": false } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Violin plots of Cost:\n", "\n", "violinplot('Current Month Cost')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In the Cost plot, it follow the same trend where Manhattan is the most expensive, and it is followed by Brooklyn, Staten island and Queens" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### But the most important thing to note here is, the Cost difference between Brooklyn and Staten Island is very high which makes Staten Island to have a lower Breakeven Period and it is discussed in detail in further analyses below" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The distribution of cost for Manhattan is also wide similar to its revenue distribution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The distribution of cost for Staten Island is very narrow compared to its revenue. This shows that people are buying properties within a narrow range of cost and leasing in Airbnb for a wide range of price. It is found below on further analyses of the prices they are charging for the lease." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ----------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Revenue- Cost Analysis" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Manhattan", "text": [ 10003, 10011, 10013, 10014, 10021, 10022, 10023, 10025, 10028, 10036, 10128 ], "type": "scatter", "uid": "636fac18-5c97-11e9-aacf-3cf862c2ea5b", "x": [ 310.8141592920354, 363.58620689655174, 389.84375, 325.2903225806452, 273.8421052631579, 367.2894736842105, 284.6984126984127, 286, 270.46875, 445.6666666666667, 225.375 ], "y": [ 2374217.9775280897, 2752755.056179776, 3575506.741573031, 2748629.2134831483, 1976694.3820224707, 2206759.550561795, 2357455.056179776, 1583689.8876404483, 2320684.2696629236, 1830142.6966292155, 3448662.4999999967 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Brooklyn", "text": [ 11201, 11215, 11217, 11231, 11234 ], "type": "scatter", "uid": "636fac19-5c97-11e9-a41b-3cf862c2ea5b", "x": [ 208.6290322580645, 177.68548387096774, 203.11666666666667, 200.53623188405797, 107.33333333333333 ], "y": [ 1588270.7865168517, 1204653.932584269, 1945700.0000000016, 1354082.0224719103, 457599.69604294165 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Staten Island", "text": [ 10304, 10305, 10306, 10312 ], "type": "scatter", "uid": "636fac1a-5c97-11e9-9732-3cf862c2ea5b", "x": [ 97, 111.22222222222223, 93, 215 ], "y": [ 500909.2119367609, 582487.5000000007, 481775, 436865.44943987636 ] }, { "marker": { "size": 16, "symbol": "circle" }, "mode": "markers", "name": "Queens", "text": [ 11434 ], "type": "scatter", "uid": "636fac1b-5c97-11e9-b1c0-3cf862c2ea5b", "x": [ 155 ], "y": [ 448484.1523794591 ] } ], "layout": { "hovermode": "closest", "title": "Revenue-Cost Analysis", "xaxis": { "title": "Revenue" }, "yaxis": { "title": "Current Month Cost" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Scatterplot between Revenue and Cost and using the function create above to plot the graph\n", "\n", "scatterplot('Revenue','Current Month Cost', 'Revenue-Cost Analysis')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Zipcode 10036 produces more revenue in the longer run and it can also be attributed to the fact that it is located near the Times Square(visible when zoomed in the above map) which has more demand and thus more revenue charged." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The property 10025 from Manhattan also seems to be great performer in the longer run considering its revenue and lower cost." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Also 10312 seems to be good place considering its lower cost and comparitively higher revenue. But again, since it has more availability, it is not advisable to invest in them." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ---------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Break Even Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Expected Return = Revenue × Time × Occupancy Rate\n", "\n", "### Breakeven Period = Total Cost / Expected Return" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Occupancy Rate= 0.75 (Assumption Given)\n", "\n", "### Time= 365 days" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### So different columns separately for Expected Return, and BreakEven Period was created" ] }, { "cell_type": "code", "execution_count": 79, "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", "
zipcodeidscrape_idhost_idhost_listings_counthost_total_listings_countlatitudelongitudeaccommodatesbathrooms...2018-08-01 00:00:002018-09-01 00:00:002018-10-01 00:00:002018-11-01 00:00:002018-12-01 00:00:002019-01-01 00:00:002019-02-01 00:00:002019-03-01 00:00:00Current Month Costneighbourhood_group_cleansed
0100039.124661e+062.017050e+132.496037e+071.6460181.64601840.728902-73.9882584.5663721.225664...2.291593e+062.301921e+062.312249e+062.322578e+062.332906e+062.343234e+062.353562e+062.363890e+062.374218e+06Manhattan
1100119.889107e+062.017050e+133.005599e+071.4482761.44827640.742371-73.9997524.5172411.337209...2.653717e+062.666097e+062.678476e+062.690856e+062.703236e+062.715616e+062.727996e+062.740375e+062.752755e+06Manhattan
2100131.054726e+072.017050e+132.783653e+071.4126981.41269840.719555-74.0040754.2812501.359375...3.481322e+063.493096e+063.504869e+063.516642e+063.528415e+063.540188e+063.551961e+063.563734e+063.575507e+06Manhattan
3100148.654217e+062.017050e+132.054620e+071.5376341.53763440.734209-74.0042404.3440861.182796...2.655164e+062.666847e+062.678530e+062.690213e+062.701897e+062.713580e+062.725263e+062.736946e+062.748629e+06Manhattan
4100211.022891e+072.017050e+133.568867e+071.5263161.52631640.768441-73.9566284.2631581.052632...1.918115e+061.925437e+061.932760e+061.940082e+061.947404e+061.954727e+061.962049e+061.969372e+061.976694e+06Manhattan
\n", "

5 rows × 174 columns

\n", "
" ], "text/plain": [ " zipcode id scrape_id host_id host_listings_count \\\n", "0 10003 9.124661e+06 2.017050e+13 2.496037e+07 1.646018 \n", "1 10011 9.889107e+06 2.017050e+13 3.005599e+07 1.448276 \n", "2 10013 1.054726e+07 2.017050e+13 2.783653e+07 1.412698 \n", "3 10014 8.654217e+06 2.017050e+13 2.054620e+07 1.537634 \n", "4 10021 1.022891e+07 2.017050e+13 3.568867e+07 1.526316 \n", "\n", " host_total_listings_count latitude longitude accommodates bathrooms \\\n", "0 1.646018 40.728902 -73.988258 4.566372 1.225664 \n", "1 1.448276 40.742371 -73.999752 4.517241 1.337209 \n", "2 1.412698 40.719555 -74.004075 4.281250 1.359375 \n", "3 1.537634 40.734209 -74.004240 4.344086 1.182796 \n", "4 1.526316 40.768441 -73.956628 4.263158 1.052632 \n", "\n", " ... 2018-08-01 00:00:00 2018-09-01 00:00:00 \\\n", "0 ... 2.291593e+06 2.301921e+06 \n", "1 ... 2.653717e+06 2.666097e+06 \n", "2 ... 3.481322e+06 3.493096e+06 \n", "3 ... 2.655164e+06 2.666847e+06 \n", "4 ... 1.918115e+06 1.925437e+06 \n", "\n", " 2018-10-01 00:00:00 2018-11-01 00:00:00 2018-12-01 00:00:00 \\\n", "0 2.312249e+06 2.322578e+06 2.332906e+06 \n", "1 2.678476e+06 2.690856e+06 2.703236e+06 \n", "2 3.504869e+06 3.516642e+06 3.528415e+06 \n", "3 2.678530e+06 2.690213e+06 2.701897e+06 \n", "4 1.932760e+06 1.940082e+06 1.947404e+06 \n", "\n", " 2019-01-01 00:00:00 2019-02-01 00:00:00 2019-03-01 00:00:00 \\\n", "0 2.343234e+06 2.353562e+06 2.363890e+06 \n", "1 2.715616e+06 2.727996e+06 2.740375e+06 \n", "2 3.540188e+06 3.551961e+06 3.563734e+06 \n", "3 2.713580e+06 2.725263e+06 2.736946e+06 \n", "4 1.954727e+06 1.962049e+06 1.969372e+06 \n", "\n", " Current Month Cost neighbourhood_group_cleansed \n", "0 2.374218e+06 Manhattan \n", "1 2.752755e+06 Manhattan \n", "2 3.575507e+06 Manhattan \n", "3 2.748629e+06 Manhattan \n", "4 1.976694e+06 Manhattan \n", "\n", "[5 rows x 174 columns]" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df.head()" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['zipcode',\n", " 'id',\n", " 'scrape_id',\n", " 'host_id',\n", " 'host_listings_count',\n", " 'host_total_listings_count',\n", " 'latitude',\n", " 'longitude',\n", " 'accommodates',\n", " 'bathrooms',\n", " 'bedrooms',\n", " 'beds',\n", " 'Revenue',\n", " 'guests_included',\n", " 'minimum_nights',\n", " 'maximum_nights',\n", " 'availability_30',\n", " 'availability_60',\n", " 'availability_90',\n", " 'availability_365',\n", " 'number_of_reviews',\n", " 'review_scores_rating',\n", " 'review_scores_accuracy',\n", " 'calculated_host_listings_count',\n", " 'RegionID',\n", " 'City',\n", " 'State',\n", " 'Metro',\n", " 'CountyName',\n", " 'SizeRank',\n", " '2007-06',\n", " '2007-07',\n", " '2007-08',\n", " '2007-09',\n", " '2007-10',\n", " '2007-11',\n", " '2007-12',\n", " '2008-01',\n", " '2008-02',\n", " '2008-03',\n", " '2008-04',\n", " '2008-05',\n", " '2008-06',\n", " '2008-07',\n", " '2008-08',\n", " '2008-09',\n", " '2008-10',\n", " '2008-11',\n", " '2008-12',\n", " '2009-01',\n", " '2009-02',\n", " '2009-03',\n", " '2009-04',\n", " '2009-05',\n", " '2009-06',\n", " '2009-07',\n", " '2009-08',\n", " '2009-09',\n", " '2009-10',\n", " '2009-11',\n", " '2009-12',\n", " '2010-01',\n", " '2010-02',\n", " '2010-03',\n", " '2010-04',\n", " '2010-05',\n", " '2010-06',\n", " '2010-07',\n", " '2010-08',\n", " '2010-09',\n", " '2010-10',\n", " '2010-11',\n", " '2010-12',\n", " '2011-01',\n", " '2011-02',\n", " '2011-03',\n", " '2011-04',\n", " '2011-05',\n", " '2011-06',\n", " '2011-07',\n", " '2011-08',\n", " '2011-09',\n", " '2011-10',\n", " '2011-11',\n", " '2011-12',\n", " '2012-01',\n", " '2012-02',\n", " '2012-03',\n", " '2012-04',\n", " '2012-05',\n", " '2012-06',\n", " '2012-07',\n", " '2012-08',\n", " '2012-09',\n", " '2012-10',\n", " '2012-11',\n", " '2012-12',\n", " '2013-01',\n", " '2013-02',\n", " '2013-03',\n", " '2013-04',\n", " '2013-05',\n", " '2013-06',\n", " '2013-07',\n", " '2013-08',\n", " '2013-09',\n", " '2013-10',\n", " '2013-11',\n", " '2013-12',\n", " '2014-01',\n", " '2014-02',\n", " '2014-03',\n", " '2014-04',\n", " '2014-05',\n", " '2014-06',\n", " '2014-07',\n", " '2014-08',\n", " '2014-09',\n", " '2014-10',\n", " '2014-11',\n", " '2014-12',\n", " '2015-01',\n", " '2015-02',\n", " '2015-03',\n", " '2015-04',\n", " '2015-05',\n", " '2015-06',\n", " '2015-07',\n", " '2015-08',\n", " '2015-09',\n", " '2015-10',\n", " '2015-11',\n", " '2015-12',\n", " '2016-01',\n", " '2016-02',\n", " '2016-03',\n", " '2016-04',\n", " '2016-05',\n", " '2016-06',\n", " '2016-07',\n", " '2016-08',\n", " '2016-09',\n", " '2016-10',\n", " '2016-11',\n", " '2016-12',\n", " '2017-01',\n", " '2017-02',\n", " '2017-03',\n", " '2017-04',\n", " '2017-05',\n", " '2017-06',\n", " '2017-07-01 00:00:00',\n", " '2017-08-01 00:00:00',\n", " '2017-09-01 00:00:00',\n", " '2017-10-01 00:00:00',\n", " '2017-11-01 00:00:00',\n", " '2017-12-01 00:00:00',\n", " '2018-01-01 00:00:00',\n", " '2018-02-01 00:00:00',\n", " '2018-03-01 00:00:00',\n", " '2018-04-01 00:00:00',\n", " '2018-05-01 00:00:00',\n", " '2018-06-01 00:00:00',\n", " '2018-07-01 00:00:00',\n", " '2018-08-01 00:00:00',\n", " '2018-09-01 00:00:00',\n", " '2018-10-01 00:00:00',\n", " '2018-11-01 00:00:00',\n", " '2018-12-01 00:00:00',\n", " '2019-01-01 00:00:00',\n", " '2019-02-01 00:00:00',\n", " '2019-03-01 00:00:00',\n", " 'Current Month Cost',\n", " 'neighbourhood_group_cleansed']" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cols(final_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### KPIs created for Breakeven period Calculation:" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to create KPIs:\n", "\n", "def breakeven_calc(dataset):\n", " \n", " #Calculating all the KPIs for Breakeven Analysis\n", " dataset['Expected Return']= dataset['Revenue'] * 365 * 0.75\n", " dataset['Breakeven Period']= dataset['Current Month Cost']/dataset['Expected Return'] \n", " \n", " return dataset\n" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "collapsed": true }, "outputs": [], "source": [ "final_df=breakeven_calc(final_df)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
zipcodeidscrape_idhost_idhost_listings_counthost_total_listings_countlatitudelongitudeaccommodatesbathrooms...2018-10-01 00:00:002018-11-01 00:00:002018-12-01 00:00:002019-01-01 00:00:002019-02-01 00:00:002019-03-01 00:00:00Current Month Costneighbourhood_group_cleansedExpected ReturnBreakeven Period
0100039.124661e+062.017050e+132.496037e+071.6460181.64601840.728902-73.9882584.5663721.225664...2.312249e+062.322578e+062.332906e+062.343234e+062.353562e+062.363890e+062.374218e+06Manhattan85085.37610627.903949
1100119.889107e+062.017050e+133.005599e+071.4482761.44827640.742371-73.9997524.5172411.337209...2.678476e+062.690856e+062.703236e+062.715616e+062.727996e+062.740375e+062.752755e+06Manhattan99531.72413827.657062
2100131.054726e+072.017050e+132.783653e+071.4126981.41269840.719555-74.0040754.2812501.359375...3.504869e+063.516642e+063.528415e+063.540188e+063.551961e+063.563734e+063.575507e+06Manhattan106719.72656233.503710
3100148.654217e+062.017050e+132.054620e+071.5376341.53763440.734209-74.0042404.3440861.182796...2.678530e+062.690213e+062.701897e+062.713580e+062.725263e+062.736946e+062.748629e+06Manhattan89048.22580630.866749
4100211.022891e+072.017050e+133.568867e+071.5263161.52631640.768441-73.9566284.2631581.052632...1.932760e+061.940082e+061.947404e+061.954727e+061.962049e+061.969372e+061.976694e+06Manhattan74964.27631626.368485
5100229.963782e+062.017050e+134.129974e+071.3947371.39473740.758886-73.9667005.4473681.276316...2.158989e+062.166951e+062.174912e+062.182874e+062.190836e+062.198798e+062.206760e+06Manhattan100545.49342121.947871
6100238.424752e+062.017050e+133.053048e+072.8888892.88888940.777581-73.9814864.6666671.349206...2.298776e+062.308556e+062.318336e+062.328116e+062.337896e+062.347675e+062.357455e+06Manhattan77936.19047630.248528
7100257.849437e+062.017050e+132.567103e+071.5714291.57142940.798025-73.9663554.8214291.232143...1.542047e+061.548988e+061.555928e+061.562869e+061.569809e+061.576749e+061.583690e+06Manhattan78292.50000020.227862
8100281.038785e+072.017050e+133.790560e+071.3750001.37500040.775367-73.9509344.2812501.258065...2.256107e+062.266870e+062.277633e+062.288396e+062.299158e+062.309921e+062.320684e+06Manhattan74040.82031231.343308
9100368.401201e+062.017050e+133.853206e+0773.50000073.50000040.754810-73.9878244.7500001.416667...1.798167e+061.803497e+061.808826e+061.814155e+061.819484e+061.824813e+061.830143e+06Manhattan122001.25000015.001016
10101281.079017e+072.017050e+132.984589e+071.3214291.32142940.781842-73.9495374.3571431.232143...2.958255e+063.038049e+063.118619e+063.199966e+063.282089e+063.364987e+063.448662e+06Manhattan61696.40625055.897300
11103041.590640e+062.017050e+137.534770e+061.0000001.00000040.626721-74.0767213.5000001.250000...4.502538e+054.585099e+054.668406e+054.752459e+054.837257e+054.922802e+055.009092e+05Staten Island26553.75000018.863973
12103051.368595e+072.017050e+135.535834e+071.5555561.55555640.596360-74.0773714.5555561.111111...5.355818e+055.431920e+055.508852e+055.586614e+055.665205e+055.744625e+055.824875e+05Staten Island30447.08333319.131143
13103068.328929e+062.017050e+135.237069e+072.0000002.00000040.568879-74.1115655.5000001.250000...4.434636e+054.496841e+054.559705e+054.623227e+054.687409e+054.752250e+054.817750e+05Staten Island25458.75000018.923749
14103121.800434e+072.017050e+131.197988e+081.0000001.00000040.546331-74.1837012.0000002.000000...4.128157e+054.167345e+054.206890e+054.246794e+054.287059e+054.327680e+054.368654e+05Staten Island58856.2500007.422584
15112019.298929e+062.017050e+132.327364e+071.4516131.45161340.692611-73.9905764.4516131.250000...1.542570e+061.550187e+061.557803e+061.565420e+061.573037e+061.580654e+061.588271e+06Brooklyn57112.19758127.809660
16112159.035422e+062.017050e+132.460656e+071.4227641.42276440.666241-73.9845274.2661291.189516...1.168148e+061.174233e+061.180317e+061.186401e+061.192485e+061.198570e+061.204654e+06Brooklyn48641.40121024.766020
17112176.866520e+062.017050e+131.988437e+071.2833331.28333340.681377-73.9790683.9833331.228814...1.756264e+061.787109e+061.818245e+061.849673e+061.881391e+061.913400e+061.945700e+06Brooklyn55603.18750034.992598
18112317.697324e+062.017050e+132.171201e+071.5507251.55072540.680632-74.0000494.3913041.176471...1.312851e+061.319722e+061.326594e+061.333466e+061.340338e+061.347210e+061.354082e+06Brooklyn54896.79347824.665958
19112341.066553e+072.017050e+132.752097e+071.3333331.33333340.623074-73.9259434.1666671.083333...4.656135e+054.644211e+054.631714e+054.618644e+054.605001e+054.590786e+054.575997e+05Brooklyn29382.50000015.573886
20114349.374263e+062.017050e+134.863844e+071.0000001.00000040.662033-73.7698004.0000001.000000...4.264390e+054.299051e+054.334544e+054.370870e+054.408028e+054.446019e+054.484842e+05Queens42431.25000010.569666
\n", "

21 rows × 176 columns

\n", "
" ], "text/plain": [ " zipcode id scrape_id host_id host_listings_count \\\n", "0 10003 9.124661e+06 2.017050e+13 2.496037e+07 1.646018 \n", "1 10011 9.889107e+06 2.017050e+13 3.005599e+07 1.448276 \n", "2 10013 1.054726e+07 2.017050e+13 2.783653e+07 1.412698 \n", "3 10014 8.654217e+06 2.017050e+13 2.054620e+07 1.537634 \n", "4 10021 1.022891e+07 2.017050e+13 3.568867e+07 1.526316 \n", "5 10022 9.963782e+06 2.017050e+13 4.129974e+07 1.394737 \n", "6 10023 8.424752e+06 2.017050e+13 3.053048e+07 2.888889 \n", "7 10025 7.849437e+06 2.017050e+13 2.567103e+07 1.571429 \n", "8 10028 1.038785e+07 2.017050e+13 3.790560e+07 1.375000 \n", "9 10036 8.401201e+06 2.017050e+13 3.853206e+07 73.500000 \n", "10 10128 1.079017e+07 2.017050e+13 2.984589e+07 1.321429 \n", "11 10304 1.590640e+06 2.017050e+13 7.534770e+06 1.000000 \n", "12 10305 1.368595e+07 2.017050e+13 5.535834e+07 1.555556 \n", "13 10306 8.328929e+06 2.017050e+13 5.237069e+07 2.000000 \n", "14 10312 1.800434e+07 2.017050e+13 1.197988e+08 1.000000 \n", "15 11201 9.298929e+06 2.017050e+13 2.327364e+07 1.451613 \n", "16 11215 9.035422e+06 2.017050e+13 2.460656e+07 1.422764 \n", "17 11217 6.866520e+06 2.017050e+13 1.988437e+07 1.283333 \n", "18 11231 7.697324e+06 2.017050e+13 2.171201e+07 1.550725 \n", "19 11234 1.066553e+07 2.017050e+13 2.752097e+07 1.333333 \n", "20 11434 9.374263e+06 2.017050e+13 4.863844e+07 1.000000 \n", "\n", " host_total_listings_count latitude longitude accommodates bathrooms \\\n", "0 1.646018 40.728902 -73.988258 4.566372 1.225664 \n", "1 1.448276 40.742371 -73.999752 4.517241 1.337209 \n", "2 1.412698 40.719555 -74.004075 4.281250 1.359375 \n", "3 1.537634 40.734209 -74.004240 4.344086 1.182796 \n", "4 1.526316 40.768441 -73.956628 4.263158 1.052632 \n", "5 1.394737 40.758886 -73.966700 5.447368 1.276316 \n", "6 2.888889 40.777581 -73.981486 4.666667 1.349206 \n", "7 1.571429 40.798025 -73.966355 4.821429 1.232143 \n", "8 1.375000 40.775367 -73.950934 4.281250 1.258065 \n", "9 73.500000 40.754810 -73.987824 4.750000 1.416667 \n", "10 1.321429 40.781842 -73.949537 4.357143 1.232143 \n", "11 1.000000 40.626721 -74.076721 3.500000 1.250000 \n", "12 1.555556 40.596360 -74.077371 4.555556 1.111111 \n", "13 2.000000 40.568879 -74.111565 5.500000 1.250000 \n", "14 1.000000 40.546331 -74.183701 2.000000 2.000000 \n", "15 1.451613 40.692611 -73.990576 4.451613 1.250000 \n", "16 1.422764 40.666241 -73.984527 4.266129 1.189516 \n", "17 1.283333 40.681377 -73.979068 3.983333 1.228814 \n", "18 1.550725 40.680632 -74.000049 4.391304 1.176471 \n", "19 1.333333 40.623074 -73.925943 4.166667 1.083333 \n", "20 1.000000 40.662033 -73.769800 4.000000 1.000000 \n", "\n", " ... 2018-10-01 00:00:00 2018-11-01 00:00:00 \\\n", "0 ... 2.312249e+06 2.322578e+06 \n", "1 ... 2.678476e+06 2.690856e+06 \n", "2 ... 3.504869e+06 3.516642e+06 \n", "3 ... 2.678530e+06 2.690213e+06 \n", "4 ... 1.932760e+06 1.940082e+06 \n", "5 ... 2.158989e+06 2.166951e+06 \n", "6 ... 2.298776e+06 2.308556e+06 \n", "7 ... 1.542047e+06 1.548988e+06 \n", "8 ... 2.256107e+06 2.266870e+06 \n", "9 ... 1.798167e+06 1.803497e+06 \n", "10 ... 2.958255e+06 3.038049e+06 \n", "11 ... 4.502538e+05 4.585099e+05 \n", "12 ... 5.355818e+05 5.431920e+05 \n", "13 ... 4.434636e+05 4.496841e+05 \n", "14 ... 4.128157e+05 4.167345e+05 \n", "15 ... 1.542570e+06 1.550187e+06 \n", "16 ... 1.168148e+06 1.174233e+06 \n", "17 ... 1.756264e+06 1.787109e+06 \n", "18 ... 1.312851e+06 1.319722e+06 \n", "19 ... 4.656135e+05 4.644211e+05 \n", "20 ... 4.264390e+05 4.299051e+05 \n", "\n", " 2018-12-01 00:00:00 2019-01-01 00:00:00 2019-02-01 00:00:00 \\\n", "0 2.332906e+06 2.343234e+06 2.353562e+06 \n", "1 2.703236e+06 2.715616e+06 2.727996e+06 \n", "2 3.528415e+06 3.540188e+06 3.551961e+06 \n", "3 2.701897e+06 2.713580e+06 2.725263e+06 \n", "4 1.947404e+06 1.954727e+06 1.962049e+06 \n", "5 2.174912e+06 2.182874e+06 2.190836e+06 \n", "6 2.318336e+06 2.328116e+06 2.337896e+06 \n", "7 1.555928e+06 1.562869e+06 1.569809e+06 \n", "8 2.277633e+06 2.288396e+06 2.299158e+06 \n", "9 1.808826e+06 1.814155e+06 1.819484e+06 \n", "10 3.118619e+06 3.199966e+06 3.282089e+06 \n", "11 4.668406e+05 4.752459e+05 4.837257e+05 \n", "12 5.508852e+05 5.586614e+05 5.665205e+05 \n", "13 4.559705e+05 4.623227e+05 4.687409e+05 \n", "14 4.206890e+05 4.246794e+05 4.287059e+05 \n", "15 1.557803e+06 1.565420e+06 1.573037e+06 \n", "16 1.180317e+06 1.186401e+06 1.192485e+06 \n", "17 1.818245e+06 1.849673e+06 1.881391e+06 \n", "18 1.326594e+06 1.333466e+06 1.340338e+06 \n", "19 4.631714e+05 4.618644e+05 4.605001e+05 \n", "20 4.334544e+05 4.370870e+05 4.408028e+05 \n", "\n", " 2019-03-01 00:00:00 Current Month Cost neighbourhood_group_cleansed \\\n", "0 2.363890e+06 2.374218e+06 Manhattan \n", "1 2.740375e+06 2.752755e+06 Manhattan \n", "2 3.563734e+06 3.575507e+06 Manhattan \n", "3 2.736946e+06 2.748629e+06 Manhattan \n", "4 1.969372e+06 1.976694e+06 Manhattan \n", "5 2.198798e+06 2.206760e+06 Manhattan \n", "6 2.347675e+06 2.357455e+06 Manhattan \n", "7 1.576749e+06 1.583690e+06 Manhattan \n", "8 2.309921e+06 2.320684e+06 Manhattan \n", "9 1.824813e+06 1.830143e+06 Manhattan \n", "10 3.364987e+06 3.448662e+06 Manhattan \n", "11 4.922802e+05 5.009092e+05 Staten Island \n", "12 5.744625e+05 5.824875e+05 Staten Island \n", "13 4.752250e+05 4.817750e+05 Staten Island \n", "14 4.327680e+05 4.368654e+05 Staten Island \n", "15 1.580654e+06 1.588271e+06 Brooklyn \n", "16 1.198570e+06 1.204654e+06 Brooklyn \n", "17 1.913400e+06 1.945700e+06 Brooklyn \n", "18 1.347210e+06 1.354082e+06 Brooklyn \n", "19 4.590786e+05 4.575997e+05 Brooklyn \n", "20 4.446019e+05 4.484842e+05 Queens \n", "\n", " Expected Return Breakeven Period \n", "0 85085.376106 27.903949 \n", "1 99531.724138 27.657062 \n", "2 106719.726562 33.503710 \n", "3 89048.225806 30.866749 \n", "4 74964.276316 26.368485 \n", "5 100545.493421 21.947871 \n", "6 77936.190476 30.248528 \n", "7 78292.500000 20.227862 \n", "8 74040.820312 31.343308 \n", "9 122001.250000 15.001016 \n", "10 61696.406250 55.897300 \n", "11 26553.750000 18.863973 \n", "12 30447.083333 19.131143 \n", "13 25458.750000 18.923749 \n", "14 58856.250000 7.422584 \n", "15 57112.197581 27.809660 \n", "16 48641.401210 24.766020 \n", "17 55603.187500 34.992598 \n", "18 54896.793478 24.665958 \n", "19 29382.500000 15.573886 \n", "20 42431.250000 10.569666 \n", "\n", "[21 rows x 176 columns]" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "final_df" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to Create Barplots based on the Column Name Input\n", "\n", "def barplots_with_neighbourhoods(xaxis, yaxis, title):\n", " data=[]\n", " neighbours=['Manhattan', 'Brooklyn', 'Staten Island', 'Queens']\n", "\n", " for i in neighbours:\n", " trace= go.Bar(x= final_df[final_df['neighbourhood_group_cleansed']==i][xaxis],\n", " y= final_df[final_df['neighbourhood_group_cleansed']==i][yaxis],\n", " name=i)\n", " data.append(trace)\n", " \n", " # In the Layout, xaxis type='category' will convert the numerical Zipcodes in Xaxis as Categories\n", " \n", " layout=go.Layout(title='Bar Plot of %s'%(title) , xaxis=dict(type='category'), yaxis= dict( title='Breakeven Period(in years)'))\n", " fig= go.Figure(data=data, layout=layout)\n", " iplot(fig)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "name": "Manhattan", "type": "bar", "uid": "6537ebdc-5c97-11e9-834b-3cf862c2ea5b", "x": [ 10003, 10011, 10013, 10014, 10021, 10022, 10023, 10025, 10028, 10036, 10128 ], "y": [ 27.90394878862425, 27.657061906865074, 33.503709733355144, 30.866748759906322, 26.368484819296867, 21.947871311552333, 30.24852820975358, 20.22786202561482, 31.343308459686693, 15.001015945567898, 55.897299528690084 ] }, { "name": "Brooklyn", "type": "bar", "uid": "6537ebdd-5c97-11e9-883e-3cf862c2ea5b", "x": [ 11201, 11215, 11217, 11231, 11234 ], "y": [ 27.80965982396558, 24.766020357665965, 34.99259822110021, 24.665958368007903, 15.573885681713321 ] }, { "name": "Staten Island", "type": "bar", "uid": "6537ebde-5c97-11e9-8a60-3cf862c2ea5b", "x": [ 10304, 10305, 10306, 10312 ], "y": [ 18.863972581528444, 19.131142829772987, 18.92374920214072, 7.422583828223449 ] }, { "name": "Queens", "type": "bar", "uid": "6537ebdf-5c97-11e9-be45-3cf862c2ea5b", "x": [ 11434 ], "y": [ 10.56966628085336 ] } ], "layout": { "title": "Bar Plot of Breakeven Period for Zipcodes", "xaxis": { "type": "category" }, "yaxis": { "title": "Breakeven Period(in years)" } } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Using the above created function to plot the bar chart\n", "\n", "barplots_with_neighbourhoods('zipcode','Breakeven Period', 'Breakeven Period for Zipcodes')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In general, the neighbourhood \"Staten Island\" has a lower break even period" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### From the zipcodes analyzed, 10312 has the least breakdown period considering its ability to make profit quicker. But from the availability analyses conducted above, it is not rented even once. So it should not be considered for investing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Off the remaining, 10036 shows a promising trend with lower breakeven period. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The breakeven period for Brooklyn is also low and in that 11234 has a lower breakeven priod but it has higher availability. So it is not a potential investment." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ----------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3-D Scatter Plot Between Revenue, Cost and Breakeven period" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Function to Create a 3-D Scatter plot:s\n", "\n", "def threedscatterplot(xaxis, yaxis, zaxis):\n", " data=[]\n", " neighbours=['Manhattan', 'Brooklyn', 'Staten Island', 'Queens']\n", "\n", " for i in neighbours:\n", " trace = go.Scatter3d(\n", " x=final_df[final_df['neighbourhood_group_cleansed']==i][xaxis],\n", " y=final_df[final_df['neighbourhood_group_cleansed']==i][yaxis],\n", " z=final_df[final_df['neighbourhood_group_cleansed']==i][zaxis],\n", " mode='markers',\n", " name=i,\n", " marker=dict(\n", " size=10), \n", " text= final_df[final_df['neighbourhood_group_cleansed']==i]['zipcode']\n", " )\n", " data.append(trace)\n", " \n", " layout= go.Layout(title='3D ScatterPlot Between X= %s, y= %s, and z= %s' %(xaxis,yaxis,zaxis),\n", " hovermode= 'closest')\n", " \n", " fig = go.Figure(data=data, layout=layout)\n", " iplot(fig)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "data": [ { "marker": { "size": 10 }, "mode": "markers", "name": "Manhattan", "text": [ 10003, 10011, 10013, 10014, 10021, 10022, 10023, 10025, 10028, 10036, 10128 ], "type": "scatter3d", "uid": "663fd540-5c97-11e9-8baf-3cf862c2ea5b", "x": [ 310.8141592920354, 363.58620689655174, 389.84375, 325.2903225806452, 273.8421052631579, 367.2894736842105, 284.6984126984127, 286, 270.46875, 445.6666666666667, 225.375 ], "y": [ 2374217.9775280897, 2752755.056179776, 3575506.741573031, 2748629.2134831483, 1976694.3820224707, 2206759.550561795, 2357455.056179776, 1583689.8876404483, 2320684.2696629236, 1830142.6966292155, 3448662.4999999967 ], "z": [ 27.90394878862425, 27.657061906865074, 33.503709733355144, 30.866748759906322, 26.368484819296867, 21.947871311552333, 30.24852820975358, 20.22786202561482, 31.343308459686693, 15.001015945567898, 55.897299528690084 ] }, { "marker": { "size": 10 }, "mode": "markers", "name": "Brooklyn", "text": [ 11201, 11215, 11217, 11231, 11234 ], "type": "scatter3d", "uid": "663fd541-5c97-11e9-ae2f-3cf862c2ea5b", "x": [ 208.6290322580645, 177.68548387096774, 203.11666666666667, 200.53623188405797, 107.33333333333333 ], "y": [ 1588270.7865168517, 1204653.932584269, 1945700.0000000016, 1354082.0224719103, 457599.69604294165 ], "z": [ 27.80965982396558, 24.766020357665965, 34.99259822110021, 24.665958368007903, 15.573885681713321 ] }, { "marker": { "size": 10 }, "mode": "markers", "name": "Staten Island", "text": [ 10304, 10305, 10306, 10312 ], "type": "scatter3d", "uid": "663fd542-5c97-11e9-941b-3cf862c2ea5b", "x": [ 97, 111.22222222222223, 93, 215 ], "y": [ 500909.2119367609, 582487.5000000007, 481775, 436865.44943987636 ], "z": [ 18.863972581528444, 19.131142829772987, 18.92374920214072, 7.422583828223449 ] }, { "marker": { "size": 10 }, "mode": "markers", "name": "Queens", "text": [ 11434 ], "type": "scatter3d", "uid": "663fd543-5c97-11e9-8d31-3cf862c2ea5b", "x": [ 155 ], "y": [ 448484.1523794591 ], "z": [ 10.56966628085336 ] } ], "layout": { "hovermode": "closest", "title": "3D ScatterPlot Between X= Revenue, y= Current Month Cost, and z= Breakeven Period" } }, "text/html": [ "
" ], "text/vnd.plotly.v1+html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# threedscatterplot(xaxis, yaxis, zaxis)\n", "threedscatterplot('Revenue', 'Current Month Cost', 'Breakeven Period')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### From this plot, it is evident that 10036 has a higher x-value (Revenue), lower y- value( cost) and lower z-value (Breakeven Period). Also it had higher revenue- lower cost, located near the Times Square. So it could be a potential Investment." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Also 10025 has lower breakeven period with lower cost than most." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ----------------------------------------------------------------------------------------------------------------------------------------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### * If the Company wants to make profits sooner and willing to spend lesser, it is better to go with 10025, 11215, 11231 and 11201. It has lesser availability, lesser cost and lesser breakeven periods. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### * If the Company wants to make profits sooner and ready to invest good amount of money, then it is better to invest in 10036 and 10022. This also is the best option in the longer run. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### These are the suggestions which could be drawn from the analysis and the final decisions should be made depending on the objective which the company is trying to achieve." ] } ], "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.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }