{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

\"FT

\n", "

Saint Paul, MN, Vacant Building Report; 12/15/19

\n", "

By Abu Nayeem aka Frogtown Crusader

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Table of Contents\n", "\n", "* Intro\n", "* [Data Exploration](#explore)\n", " - [Distribution Plots](#dist)\n", " - [Vacancy by District Council](#council)\n", " - [Vacancy by Ward](#ward)\n", "* Interactive Vacant Buildings Maps\n", " - [Interactive Map: Saint Paul Vacant Building by Year](#spyear)\n", " - [Interactive Map: Saint Paul Vacant Buildings by Dwelling Type](#spdwell)\n", " - [Interactive Map: District 7/ Ward 1 Vacant Building by Dwelling Type](#spward1)\n", " - [Interactive Crime Map with Vacant Building for Ward1](#crime)\n", "* [Concluding Remarks](#conclude)\n", "* [Running Code](#code)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Introduction\n", "\n", "On the city of Saint Paul Data Portal, there is information on the number of current vacant buildings in Saint Paul. You can download the data from [here](https://information.stpaul.gov/Buildings-Housing-Economic-Development/Vacant-Buildings-Dataset/fgbn-288b). If a building is occupied, then it will be removed for the list. Thus there will be more vacant houses within the last 2 to 3 years. The number of vacant properties can provide concern for a community but also an opportunity to revitalize an area. Classic example of urban blight is when many commercial fronts have closed down, which impacts development nearby. Vacant/abandoned properties, for better or for worse could provides a space space for illicit activities or it can provide housing for the homeless and downtrodden.\n", "\n", "With this report, I hope residents can find areas that need more resources (i.e. economic development and housing resources) and consider options in dealing with the looming housing. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Data \n", "\n", "This dataset contains all of the registered vacant buildings in the City, as well as their type, and Vacant Building Category. " ] }, { "cell_type": "code", "execution_count": 32, "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", "
AddressVacantDateDwellingVacant_Building_CategoryWardDistrictCensus_TractCoordinatesDistrictCouncilMapCouncilWardGunk1Gunk2LatitudeLongitudeDatetimeYearDate
0937 SHERBURNE AVE04/30/2019 12:00:00 AMDuplex21.07.032500.0(44.9567603300828, -93.139762414751)10.07.055.047.044.95676-93.1397622019-04-3020192019-04-30
1535 FOREST ST04/26/2019 12:00:00 AMSingle Family Residential27.04.034500.0(44.957410404869, -93.061161243197)15.02.0196.042.044.95741-93.0611612019-04-2620192019-04-26
\n", "
" ], "text/plain": [ " Address VacantDate Dwelling \\\n", "0 937 SHERBURNE AVE 04/30/2019 12:00:00 AM Duplex \n", "1 535 FOREST ST 04/26/2019 12:00:00 AM Single Family Residential \n", "\n", " Vacant_Building_Category Ward District Census_Tract \\\n", "0 2 1.0 7.0 32500.0 \n", "1 2 7.0 4.0 34500.0 \n", "\n", " Coordinates DistrictCouncilMap CouncilWard \\\n", "0 (44.9567603300828, -93.139762414751) 10.0 7.0 \n", "1 (44.957410404869, -93.061161243197) 15.0 2.0 \n", "\n", " Gunk1 Gunk2 Latitude Longitude Datetime Year Date \n", "0 55.0 47.0 44.95676 -93.139762 2019-04-30 2019 2019-04-30 \n", "1 196.0 42.0 44.95741 -93.061161 2019-04-26 2019 2019-04-26 " ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Vacant Buildings by Year Plot " ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Current Vacant Buildings by Year of Vacancy')" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAloAAAF/CAYAAACR0mfyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VPW9//H3ZMKSDQcUUymoQRAEDTZEEAggCgYVjFEQCES2K2oRRAsCYScxoriDiFilXqtWEGtFW/USQAQCeCOyBLFXS8MWAQuB7BNmvr8/fDg/EcxC5ksy5PX8y3PmnM/5nvnkmDdni8MYYwQAAAC/C6rpAQAAAJyvCFoAAACWELQAAAAsIWgBAABYQtACAACwhKAFAABgCUELdZbH49HSpUt15513KiEhQbfeeqvmz58vt9tdI+PZt2+fxo0bd9r8LVu26LrrrlNJSckp891utzp37qxdu3adqyFq+fLlevPNN8/4WZs2bdS/f38lJCSof//+uv3227Vq1aoKa2ZkZCgtLU2SlJycrI8//vi0ZXbs2KEbb7xRkvT2229ryZIl1diLim3evFn9+vU76/XnzJmju+++Wx6PxzfP4/Fo8ODBevbZZ/0xxCr57LPPdMMNN2jgwIGn/HxPmjRJc+fOPW35v//970pMTDyXQwTOWwQt1FmzZ8/W1q1b9frrr+tvf/ub3n33Xe3Zs0fTpk2rkfEcPHhQe/bsOW1+p06dFBkZqU8//fSU+Z9++qmioqLUrl27czVEZWVlnRb4fu6n73LlypVKTU3VxIkTKwyuN910k6ZPn17pMQwZMkRjxoyp9PI1YcqUKSouLtbLL7/sm/fyyy/L6XRq/Pjx53w8H330kZKSkrR8+XLVr1/fNz8pKUkrV65UaWnpKcu/8847Gjp06LkeJnBeCq7pAQA1Yf/+/Vq5cqXWr1+v8PBwSVJoaKjmzJmjL7/8UtKPvyxbt26t0aNHnzZ94403Kjo6Wt98840eeeQRPf7446dMR0dHa+7cucrNzVVZWZluu+023X///dq/f79GjBihnj17atu2bTpx4oQmTZqkG2+8UdOnT9ehQ4c0evRovfrqq6eMd8iQIVqxYoVuv/1237yf/zL86quvfGfjjhw5oq5duyo9PV2StGbNGj333HPyer2+fWzbtq0WL16sjIwMlZSUqLi4WJMnT1afPn20YMECHThwQEeOHNGBAwcUGRmp+fPna9u2bVq9erU2bNighg0bVviLOC8vT02aNFFwcLD279+v/v37a+vWrb7v/6fp9957T5988skpoUSS3nrrLb3++usKDw/XlVde6Zu/YMECHTt2TDNnztSNN96oxMREZWZmKjc3VwkJCZowYYIkacmSJXr33XcVFham2NhYZWRkaPXq1frf//1fzZs3T16vV5J03333KT4+/rTxFxUVafz48crJyVGjRo00d+5cRUZGqmfPnlq2bJmioqIkSSNGjNCwYcPUu3dv37oNGjTQU089pSFDhqhXr14yxuitt97SihUr5HQ6JUmrVq3S4sWLdfLkSYWEhGjKlCnq0KGDDh8+rJkzZ+rYsWM6cuSIfvvb3+r5559XkyZN1KNHD3Xs2FG7d+/2/dz8xO126/HHH9eWLVsUFBSka6+9VlOmTNGbb76ptWvXKjMzUydOnNDEiRN96/zud79T8+bN9T//8z++M3g5OTnavXu3rx8vvvii1qxZo9LSUhUXF2vq1Km66aabVFZWpieffFLr1q2T0+lUbGysZsyY4evNr43/7rvv1saNG5Wbm6s777zTdxZ3+fLlWrp0qZxOpy688EI98cQTeu6553TJJZf4wul7772ntWvX6oUXXij3Zw+oVQxQB3388cfmrrvuKneZyZMnmz/+8Y9nnO7Vq5dZuHCh77NfTicnJ5uMjAxjjDElJSUmOTnZfPTRR2bfvn3myiuvNKtXr/aN44YbbjDGGLNp0yZz2223nXEs+fn5JiYmxuzdu9cYY8yePXtMt27dTGlpqTHGmIcffths2rTJGGNMQUGB6dy5s9mxY4c5cuSI6dixo8nOzjbGGPPJJ5+Y0aNHm/3795vk5GRTXFxsjDHmww8/NP369TPGGPPCCy+Ym266yeTn5xtjjLnvvvvM888/f8bv5OeuvPJK069fP3P77beb3r17mzZt2ph33nnHGGPMvn37zLXXXutb9ufTK1asMGPGjDHGGDNs2DDzj3/8w+zatct06dLFHD582BhjzIwZM0yvXr1845szZ47ve583b54xxpjvv//eXHPNNWbv3r1m3bp1Jj4+3hw/ftx4vV4zdepU3/r33HOP+fDDD40xxnz99ddm9uzZp+3Lpk2bTNu2bU1WVpYxxpi//OUvZsCAAcYYY9LS0swTTzxhjDEmJyfH9OzZ05w8efKM38l///d/m8TERJOQkGDWrl3rm//tt9+a/v37m7y8PN84unXrZkpKSsyrr77q+449Ho8ZOXKk+dOf/mSMMaZ79+5m8eLFZ9zWM888Yx566CFTVlZmTp48aR599FHf9/SHP/zBLF269IzrLVu2zAwfPtw3/eSTT/q+071795rhw4ebkpISY4wx77//vklISDDGGPPaa6+Z5ORkU1JSYjwejxk3bpz54IMPKhz//PnzjTHGHDx40LRv394cPHjQ7Nixw3Tp0sXk5uYaY4z54x//aGbPnm22b99uevTo4ft+Bw0aZDZu3HjG/QBqK85ooU4KCgryndE4W7GxsWecLioq0hdffKHjx4/r+eef983bvXu3oqOjVa9ePfXs2VOS1K5dO+Xl5VW4rfDwcN1+++1677339NBDD+mdd97RgAEDfJeB5s2bp3Xr1mnx4sX617/+pdLSUhUVFenLL79U69atfZcXb775Zt18882SpCeffFIrV65UTk6Otm3bpsLCQt/2OnXq5DvT165dOx0/frxS38nrr7+uJk2aSJJ27dqlkSNH6oorrlBkZGSl1v9JZmamunXrpqZNm0qSBg0apPXr159x2ZtuukmSFBkZqQsvvFDHjx/XZ599pr59+6pRo0aSpKFDh2rTpk2SpFtuuUVz587V6tWr1bVrVz3yyCNnrNumTRvFxMRIkhITEzV79mzl5+crKSlJw4YN08MPP+zrw09nqX4pOTlZn3zyia644gpfzyVpw4YNOnTokO655x7fPIfDob1792rUqFH64osvtHTpUv373//Wd999p+uuu863XMeOHc+4rXXr1mny5MkKDg727fOv7dvP9evXT0899ZT279+vyMhI/e1vf9Pbb78tSWrRooXS09P1wQcfKCcnR1u3blVRUZEkaePGjbrjjjvUoEEDSTrlLFN54/+pX5dccokaN26s48ePKzMzUz169NBvfvMbSfKdRZakiy++WJ9//rmaNWumY8eO6frrr69wn4DahKCFOik6Olr/+te/VFBQ4AsUknTo0CHNmDFDL7zwghwOh8zP/hRoWVnZKTVCQ0PPOO31emWM0V/+8heFhIRIko4ePaoGDRro2LFjqlevnoKCfrw90uFwVHrMSUlJuvfee3X//fdr5cqVevfdd32fDRs2TG3atFH3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C33TXq+XkAUAAOosvwatmJgYrVu3TpL01Vdf6corr/RneQAAgIDi10uHPz11+M9//lPGGKWnp+uKK67wV3kAAICA4tegBQAAgP+PN8MDAABYQtACAACwJKAfCdy2bZueeuopvfHGG8rOztasWbNUv359XXXVVZo2bZqCgoKUlpamL7/8UmFhYZo4caI6dOig7Oxs3X///br88sslSUOGDNGtt95asztzHiorK1NKSooOHDggt9utBx54QK1atdKUKVPkcDjUunVrzZo1S0FBQVq4cKHWrl2r4OBgpaSkKDo6Wjk5OWdcFv5V3T5xPNlXlR5JUk5OjsaOHasPP/xQknT06FFNnDhRJSUluvjii/X4448rJIR3/PtbdfuUl5en+Ph434NkvXv31vDhw2tsf85XVenTE088oS+//FInT57UoEGDdPfdd1f9eDIBasmSJaZfv35m4MCBxhhjEhMTTVZWljHGmGeeeca8//77ZvXq1WbUqFHG4/GY//znPyYxMdEYY8yyZcvMq6++WmNjryveffddk5aWZowx5ujRo6Znz57mvvvuM5s2bTLGGDNjxgzz6aefmp07d5rk5GTj9XrNgQMHzJ133mmMMWdcFv5X3T5xPNlX2R4ZY8xf//pXk5iYaLp27epbPzU11axYscIYY8zLL79sli5dem53oI6obp82bNhg5s6de+4HXsdUtk+ZmZnm97//vTHGmNLSUtO7d2+Tl5dX5eMpYE8PXHrppVqwYIFv+tChQ4qJiZH042smsrKy9O2336p79+4KCgpSkyZN5HQ6deTIEe3cuVNr167V0KFDlZKSooKCgprajfNa37599dBDD/mmnU6nsrOz1alTJ0lSjx49tHHjRmVlZSkuLk4Oh0PNmjWTx+PR0aNHz7gs/K+6feJ4sq+yPZKkCy64QH/+859PWf/nf7WDY8me6vZp586dys7O1rBhwzR+/HgdPuz/v1eKyvfpd7/7ndLT033LeTweBQcHV/l4CtigFR8ff8rLUFu0aKEtW7ZIktasWaPi4mJdddVV+vzzz1VWVqZ9+/bp22+/VXFxsaKjo/Xoo4/qzTffVIsWLfTiiy/W1G6c18LCwhQeHq6CggKNHz9eEyZMkDFGDofD93l+fr4KCgoUHh5+ynr5+flnXBb+V90+cTzZV9keSVKvXr0UGhp6yvoFBQWKiIg4bVn4V3X71LJlS40fP15//vOf1bt3b6WlpZ3zfagLKtunBg0a6IILLlBZWZmmTJmiQYMGKSwsrMrHU8AGrV9KT0/Xyy+/rDFjxujCCy9U48aNFRcXp9jYWA0fPlxLly5V+/bt5XK51KdPH1199dWSpD59+mjXrl01PPrzV25uru655x4lJCSof//+p9xjVVhYqEaNGp32FwUKCwsVERFxxmVhR3X6xPF0blSmR7/m573jWLKrOn26/vrr1blzZ0kcS7ZVtk/Hjx/Xf/3Xf+mKK67QfffdJ6nqx9N5E7Q+++wzpaena8mSJcrLy1O3bt20Z88eXXjhhXrrrbd07733yuFwqFGjRho9erS2b98uScrMzFT79u1rePTnpx9++EGjRo3SpEmTNGDAAElSu3bttHnzZknSunXrFBsbq5iYGK1fv15er1cHDx6U1+tVkyZNzrgs/K+6feJ4sq+yPfo1MTEx+uyzz3zLduzY0f6g66Dq9mn69On65JNPJHEs2VTZPpWUlGjEiBG66667NHbsWN/6VT2eAvqFpfv379cjjzyiZcuWafXq1Xr++ecVEhKizp076+GHH1ZpaakmTpyoQ4cOqUGDBpo5c6Zat26t7Oxspaamql69errooouUmpp6yiUR+EdaWpr+8Y9/qGXLlr5506ZNU1pamsrKytSyZUulpaXJ6XRqwYIFWrdunbxer6ZOnarY2Fjt2bNHM2bMOG1Z+Fd1+8TxZF9VevSTbt26acOGDZJ+/MUyefJkFRYWqnHjxnr66adPu2yF6qtun/bt26eUlBRJUkhIiNLS0nTxxRef252oAyrbpzfeeEMLFy7UVVdd5VsuPT1dISEhVTqeAjpoAQAA1GbnzaVDAACA2oagBQAAYAlBCwAAwBKCFgAAgCUELQAAAEsIWgACxvjx47VkyRLfdGFhoeLj47V79+4aHBUA/Dpe7wAgYBw9elR33XWXXnnlFbVq1UozZ87U5ZdfrlGjRtX00ADgjAhaAALK6tWrtWTJEj3yyCN66aWX9Nprr+mf//yn7+/CuVwupaenKzQ0VDNnztT333+vY8eOqUePHpowYYKmTJmivLw85eXl6eWXX9YFF1xQw3sE4HxG0AIQcKZOnarNmzfr7bffVmRkpO6++26lp6erVatWWr58ufbv36+BAwcqMzNTAwcOVGlpqXr06KHNmzdrypQpatu2rUaMGFHTuwGgDgiu6QEAQFXdcccdKikpUWRkpCTpu+++05w5cyRJZWVlioqKksvl0o4dO7Rp0yaFh4fL7Xb71o+KiqqRcQOoewhaAAJeVFSUnnjiCTVr1kxZWVk6cuSI3nvvPUVERGju3LnKycnRsmXL9NMJfIfDUcMjBlBXELQABLzZs2dr8uTJ8ng8kqTHHntMV1xxhR555BFlZWUpJCREl112mQ4fPlzDIwVQ13CPFgAAgCW8RwsAAMASghYAAIAlBC0AAABLCFoAAACWELQAAAAsIWgBAABYQtACAACwhKAFAABgyf8Dxyg/qgqosaIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,6))\n", "sns.set_style(\"darkgrid\") #white, white-grid, ticks\n", "sns.distplot(df['Year'], kde=False).set_title(\"Current Vacant Buildings by Year of Vacancy\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Vacant Buildings Types" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Commercial 65\n", "Duplex 86\n", "Mixed Use 7\n", "Multi-family Residential 17\n", "Single Family Residential 322\n", "Name: Dwelling, dtype: int64\n" ] } ], "source": [ "print(df['Dwelling'].value_counts().sort_index(level=1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vacant Buildings Broken Down by District Council " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Current Vacant Buildings by District Council')" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl8AAAFyCAYAAADLZb9oAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xt8FPW9//H3ZJNN2EBY4CQcC9KCRC7HUh9CaSMoBsWIR0gRWwOaQvUchUOL3KGACBIBuQgYHhTliFIucldu1qNCD4ikQIUicEAQrZIY+QEm3HLbZOf3Bw9XMRAWYb+z2byefzG7M/P97H4W9s18Z2cs27ZtAQAAwIgopwsAAACoSQhfAAAABhG+AAAADCJ8AQAAGET4AgAAMIjwBQAAYBDhCwhSRUWFXn31VT344INKT0/X/fffr2nTpqmsrMyReo4dO6Y//OEPlR7fuXOnfv7zn6ukpOSix8vKyvSLX/xC//d//2eqRK1cuVJLliy55HMtWrRQt27dlJ6erm7duql79+567733rrjPTZs2KSsrS5KUmZmpt99+u9I6+/btU+fOnSVJr7/+ul5++eVreBVXtmPHDj3wwAM/ePvc3Fy1atVK6enpgfcjIyNDb731VmCd2bNn680336xyP3PmzLnse3it24fL5/+7r6NFixb6+uuvjY4PXA/RThcAVBfjx4/X6dOntXDhQtWpU0dFRUUaNmyYxowZo2nTphmv58svv9Rnn31W6fH27durYcOGeuedd9S9e/fA4++8846aNm2q1q1bG6vxww8/VHJy8mWfX7hwoerXry9J2rt3r/r06aOdO3fK7XZfdpu7775bd999d9A19OrVK/iCHRQXF6e1a9cGlvPy8tS3b1+5XC6lpaXpqaeeuuI+duzYoebNm1/yuWvdPlw+/8G8DiDcEb6AIOTm5mr9+vXatm2bateuLUnyeDyaMGGCdu/eLUkaNWqUkpOT9fjjj1da7ty5s9q0aaOPP/5YQ4YM0eTJky9abtOmjZ599lnl5+fL5/Pp3//939WvXz/l5uaqb9++6tSpk/bu3aszZ85o+PDh6ty5s8aOHavjx4/r8ccf1yuvvHJRvb169dLq1asvCl/Lly/XI488Ikn6xz/+EThqceLECd1+++2aNGmSJOmvf/2rZs2aJb/fH3iNLVu21Lx587Rp0yaVlJSouLhYI0eOVJcuXZSdna28vDydOHFCeXl5atiwoaZNm6a9e/dq8+bN+uCDDxQXFxcY+3IKCwtVv359RUdHKzc3V926ddOePXsC7/83y2vWrNH//M//6KWXXrpo+6VLl2rhwoWqXbu2br755sDj2dnZKigo0Lhx49S5c2f16NFDOTk5ys/PV3p6ugYNGiRJevnll7Vq1SrFx8erXbt22rRpkzZv3qy///3vmjJlivx+vyTpySefVFpaWqX6i4qKNHDgQH3++edKSEjQs88+q4YNG6pTp05asWKFmjZtKknq27evHn30Ud1zzz1Vvh+NGjXSwIED9corrygtLe2iz9OLL76od999VzExMapXr54mT56sd999V/v379fUqVPlcrm0adMmFRYW6tixY7rrrrt06tSpwPZ79+5VVlaWiouLFRMToxEjRujTTz+9aPsuXboEagnm83/27FlNmDBBhw4dkmVZuuOOOzRkyBBFR0erRYsWysnJCQTtb5aPHDmimTNn6sYbb9SRI0dUXl6uCRMmqG3btjp//ryysrK0e/duuVwu3XPPPRo8eLD++Mc/XvT3DKiOmHYEgnDgwAE1b9488MXzjcTExEt+EV9KcnKy/vKXvwS+1L67PHz4cPXs2VNr1qzRqlWrtH379sCU07Fjx9SxY0etWrVKQ4cO1aRJk+RyuZSVlaUmTZpUCl6SlJ6erv379+vYsWOSpH/+85/67LPPArX++c9/1sCBA7Vy5Upt3LhRmzdv1v79+3Xy5EkNHz5ckydP1vr16/X4449r+vTpysvL0/bt27Vo0SKtX79egwcP1osvvhgY7+9//7tmz56tt99+W7Vq1dKyZcvUpUsXde7cWX379r1s8OrTp4/S09PVpUsXPfnkk+rXr5+ioq7+n6WDBw9qzpw5Wrx4sVavXq2YmJjLrltUVKSlS5dq2bJlWrBggY4dO6b3338/8N6vWbNG58+fD6yfnZ2t3/3ud1qzZo0mTZqkv/3tb5fcb35+vvr27au1a9fqgQce0IgRI+TxePSrX/1KK1eulCR98cUX+uc//6nU1NSgXlfLli11+PDhSuMsXLhQq1ev1po1a9ShQwd99NFHeuSRR3TLLbdoxIgRgc9YSUmJNm7cqOHDhwe29/l8GjBggAYMGKANGzZo4sSJmjRpknr16lVp+28E8/nPysqS1+vV+vXrtXr1an388cdasGDBFV/jRx99pMcee0xvvvmmHnzwQc2cOVOS9OKLL6q0tFRvvfWW3nzzTe3evVs7d+4M6n0Dwh3hCwhCVFRU4MjHD9WuXbtLLhcVFWnXrl2aPXu20tPT9Zvf/Eb5+fk6dOiQJCkmJkadOnWSJLVu3VqFhYVXHKt27drq3r271qxZI+nCUa+HHnooMJ03ZcoUnT17VvPmzdOECRNUWlqqoqIi7d69W8nJyYGpyXvvvVf//d//rUaNGmnq1Klav369pk+frmXLll0UUNq3bx/4Ym7durVOnz4d1HuycOFCrV27Vu+++67WrFmjGTNm6MMPPwxq2+/KyclRhw4dlJiYKEl6+OGHL7vuN1OWDRs2VIMGDXT69Glt2bJF9913nxISEmRZ1kVhsWvXrnr22Wc1dOhQHThwQEOGDLnkflu0aKHbbrtNktSjRw/t379fZ8+eVe/evbV27Vr5fL5AH1wuV1Cvy7IsxcXFXfRYw4YN1bJlS/Xo0UPPP/+8WrVqddmjaG3btq302OHDhxUVFaW77rpLknTLLbdo/fr1VYbeYD7/W7du1aOPPirLsuR2u5WRkaGtW7de4RVKP/rRj9SqVStJF392tm/fHniv3G63Fi9erF/84hdX3B9QHRC+gCC0adNGn376qc6dO3fR48ePH9cTTzyhkpISWZal794q1efzXbSux+O55LLf75dt21q2bJnWrl2rtWvXavny5XryySclXQhf33wxWpYVdM29e/fWG2+8odLSUq1fv14ZGRmB5x599FFt2bJFzZo104ABA5SUlCTbtuVyuS4aw7ZtHTp0SAcOHNDDDz+sc+fOqUOHDvqP//iPi8b6bkD4/vsQrNatW6tt27b68MMPr/heXsp3168q3MTGxlaqNTo6+rLbZ2RkaN26derQoYO2bdum7t27q7S0tNJ+vx9eLMtSdHS0mjZtqhYtWmjTpk3asGGDfv3rX1/xtXxj3759F02hfjPO4sWLNXnyZHm9Xk2aNElTp0695Pbf/8x989q+/zk6fPiwysvLL1tHMJ9/v99/0X79fv8l9/n9E/Qv99mJjo6+aH/5+fkqKCi4bI1AdUL4AoLQsGFDdevWTaNHjw58AZ07d07jx4+X1+tVXFyc6tWrp/3790u68KUU7BRJ7dq1deutt+rVV1+VJJ05c0a9evXSpk2bqtzO5XJVGUqSk5N14403asaMGbrtttv0r//6r4H979u3T8OGDdO9996rr776Sl988YX8fr9+9rOf6ejRozpy5IikC78sHD58uHbt2qVbbrlFv/vd79S+fXtt2rRJFRUVV3xtLperyi/17zp16pT279+vn/70p0pISJDP59Mnn3wiSdq4cWOV23bo0EEffPCBvvrqK0nSG2+8EdSY3+jUqZPeeecdnT17VpK0atWqwHMZGRk6ePCgHnzwQU2cOFFnzpzRiRMnKu3j448/1sGDByVdONLYtm1b1apVS9KFIDx16lS1adNGDRs2DKqmzz77THPnztVjjz120eOHDh3SAw88oJtuuklPPvmk+vbtq3379kkK7v1u1qyZLMvSBx98IOnClGKfPn3k9/svu30wn/+OHTtq8eLFsm1bZWVlWrFihW6//XZJUv369QM1btiwIajXn5KSojfeeEN+v19lZWUaOHCgdu3aFdS2QLjjhHsgSM8884zmzp2rjIwMuVwulZWV6Z577glc7iEzM1PDhg1TWlqaGjdurF/+8pdB73v69OmaOHGiunXrprKyMj3wwAPq3r27cnNzL7tN8+bNFRsbq4ceekgrV6685FGx3r17a/DgwXrttdcCjyUkJOiJJ55Qjx495PF41LBhQ9122236/PPPlZKSounTp2vkyJGqqKhQ7dq1NXPmTHm9Xr3zzjvq2rWr/H6/UlNTdfr06UpHQr7vzjvv1JQpUyQpcCTvu/r06RM4YlRWVqYnnnhCKSkpkqThw4frP//zP1W/fn3dd999VY7TokULDR8+XH369FF8fLzatGlT5frfl5KSot/85jd6+OGHFRcXp+Tk5EBwGjZsmCZNmqRZs2bJsiz9/ve/V+PGjSvto1mzZpozZ46OHTumBg0aBF63JKWmpmrs2LEXHX38vpKSEqWnp0u6cHQrNjZWQ4YMCUwPfqNly5bq2rWrevbsKY/Ho7i4OI0dO1aS1LlzZ73wwgtVhnK3263s7OzAEbOYmBhlZ2fL7XZftH2PHj0u2u5Kn/+xY8cqKytL3bp1k8/n0x133KF+/foFnnv22WeVkJCg22+/PTA9XJXf//73eu6555Senq6Kigrdf//9uvfee7V58+YrbguEO8v+IfMDABBB9u3bpz179ui3v/2tJOnVV1/V3r17NWvWrOuy/z179mjs2LHasGHD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,6))\n", "\n", "sns.distplot(df['District'], bins=17, vertical=True, kde=False).set_title(\"Current Vacant Buildings by District Council\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Vacant Dwellings Categories broken down by District" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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UVFRkqR//etfeuqppySdDcW/XoNrt9u9QU6SDh06pJMnT2ro0KFasWKFqlevrl69eqlu3boyDMN73c+h7+f3/vpcaezcuVN16tSR1WrVvffeq08++UQ7duxQx44dlZWVpQ8++EANGzZUZGSkPB6P2rVrp7Vr12rt2rV69913tWrVKkVHR5foWWXLlvX+2mKxyDAM2Wy2YrX/esa9ZcuW+vDDD/Xggw/q22+/1cMPP6zDhw+fc9/fBm6Px6MyZcqofPnyeuCBB/Tee+9p1apVJVr7/Oufyw033OD9S9DPpk+frnnz5ikuLk7z58/X0KFDz/v+iIiIc479HLZ/Pd67d+9WXl5eiesCgAshXAMIOd27d9e6deu0Zs2aYv+8n5aWppYtW6pbt2664447tGHDBu/Sh2bNmundd9+Vx+OR2+3Ws88+q61bt2rz5s3q37+/d0Z2+/bt3vdciN1uV1FRUYmD9jvvvKOffvpJDz74oCTp/vvv1+uvv67atWsrLCxMTZs21YwZM3T//fdLOjsr/P777+vo0aOSznbBuNT65Utp3ry5Pv/8cx05csRb08+GDRum9evX66GHHtKLL74oh8Oh/fv3n3OP7Oxsffzxx5LOLmEpW7asatSoIensmCxZskSGYah+/folqunIkSOaPn26evfuXez4iRMndM899ygmJka9evXS4MGDvV8gtdlsKiwsvOh9HQ6H6tatqzVr1kg6+xeprl276syZMyV6PwBcDMtCAIScu+66SxMnTlR0dLTq1KnjPd6lSxcNGzZMDz/8sAoLC5WYmKiPPvpIHo9HAwYM0KRJk9SuXTsVFRXpD3/4g+6//35lZWWpf//+ioiIkMPhUJMmTc4bLH8tNjZW9evX10MPPaSlS5eqQoUKxc6vX79eGRkZslgs8ng8qlWrlpYsWeKdBW/WrJmOHj3qneFt3ry51q9fr1atWnlfP/nkk+rdu7csFoscDodeffXVYjOxpVWrVi2NHDlSffr0UVhYmG677TaVK1dOkvTMM8/ohRde0PLly71f9mzSpMk596hUqZI++ugjzZw5U+XKlVNKSop3lvjWW29VdHR0saUs5/P444/LarV6Z86TkpLOWf9csWJF9evXT7169VLZsmVls9m8rQbvvvtuTZky5ZKf9+WXX9b48eOVmpoqi8WiSZMmKTY2ttj7f/5XDgAoDYtx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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "barplot('District',12,9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vacant Buildings Broken Down by Ward " ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Current Vacant Buildings by Ward Grid')" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAFyCAYAAADGe88vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3XucznX+//HnZ645XjGu2GFrbWUcV60tRUkOI8duOQ1yaqgUWbsiRLJFhHKItK3DbcmKHKdQmyWHpOQUbmjoNDlGTjOMOV3mun5/+Lm+YU7levf5XDzuf7mu63O936+5XmPmOe/35/pclt/v9wsAAABBFWZ3AQAAANciQhYAAIABhCwAAAADCFkAAAAGELIAAAAMIGQBAAAYQMgCgiAvL0+zZs1SYmKiWrdurYceekjjxo1Tbm6uLfUcPHhQf//736+4f/PmzapVq5ays7MvuT83N1f33nuvvvrqq9+qRC1atEhz587N97GqVauqZcuWat26tVq2bKlWrVrp448/LnLM1atXa9SoUZKkpKQkrVix4opjdu3apUaNGkmS3n33XU2fPv0qvoqibdq0SQ8//PCvfn6PHj00e/bswO3U1FRVrVpVEydODNx38uRJ3XHHHTp79uyvnmfFihVKSkoq8PHFixerQ4cOeuihh9S4cWM9/vjj2rlzZ4HHP/XUU/r2229/8TzAtSTc7gKAa8Hw4cOVnp6u2bNnq2TJksrMzNTAgQP1wgsvaNy4cb95PUeOHFFqauoV99euXVvlypXTypUr1apVq8D9K1euVIUKFVS9evXfrMZt27apcuXKBT4+e/ZslS5dWpK0c+dOde/eXZs3b1ZkZGSBz3nwwQf14IMPFruGzp07F79gm9SvX1+bNm1S9+7dJUlr165VQkKCVq9erWeffVaS9MUXX6hmzZoqWbKkkRomTpyoLVu2aNKkSfrDH/4gSdq4caN69eql5ORk3XzzzVc8Z8aMGUZqAUIJK1nAVTp06JCWL1+u0aNHB37Jud1ujRgxQo0bN5YkDRkyRP/+978Dz/n57UaNGqlfv35q0aKFVq1adcXtY8eOqU+fPkpMTFTLli01derUwLyNGzfWyJEj1b59ezVt2lSrVq1SXl6ehg0bpgMHDqhHjx5X1Nu5c2ctWbLkkvsWLFigrl27SpJ27Nihrl27qkOHDmrYsKGGDh0aOG7t2rWB1aWOHTtq7969kqSpU6eqQ4cOatmypRo3bqxVq1ZJkqZMmaIhQ4aoR48eat68ubp3766ffvpJq1at0po1a/T2228XuJr1c2lpaSpdurTCw8N16NAh3XXXXZe8/hdvJycnq1evXlc8f968eWrWrJnatWunefPmBe6fMmWKXn755UAfpkyZoi5duighIUGTJk0KHDd9+nQ1bdpUbdu21SuvvBJYCdu6davat2+vxMREJSYm6n//+1++9WdmZqpv375q3bq1kpKSlJqaqszMTNWqVeuSMPzYY49dsWJXv359bd26VT6fL9CDnj176ty5czpw4ICkC4GnYcOGgcc7deqkxMRENWzYMPB1bNq0Sa1atVKnTp3UsmVL5ebmavLkyWrcuLHat28f6NnlTpw4odmzZ2vy5MmBgCVJderU0ZAhQ5SVlRV4/S7/Pt61a5ckFWse4FpEyAKu0p49e1SpUiWVKFHikvvj4uLUrFmzYo1RuXJlffTRR2rSpMkVtwcNGqR27dopOTlZixcv1ueff67//ve/ki5sCz7wwANavHixBgwYoNGjR8vlcmnUqFG65ZZbLgl2F7Vu3Vq7d+/WwYMHJUk//PCDUlNTA7X+5z//Ud++fbVo0SJ9+OGHWrNmjXbv3q0TJ05o0KBBGjNmjJYvX64ePXpo/PjxOnz4sD7//HPNmTNHy5cvV//+/fXGG28E5tu6dasmT56sFStWKCYmRvPnz1eTJk3UqFEjPfbYY4Fwd7nu3burdevWatKkiXr16qWnn35aYWG//EdWSkqK3nzzTb3zzjtasmSJIiIiCjw2MzNT8+bN0/z58zVz5kwdPHhQn376aeC1T05O1rlz5wLHT5kyRY8//riSk5M1evRoffHFF/mO++OPP+qxxx7T0qVL9fDDD+u5556T2+1WmzZttGjRIknSgQMH9MMPPyghIeGS51aoUEGxsbHat2+f0tPTlZqaqjvvvFP169fXmjVrJF0IWQ0aNJDf79fMmTM1duxYJScna8GCBZo+fbpOnTolSfrmm280YcIELV++XOvXr9fKlSv1/vvva/78+crIyMi39h07dqhixYoqW7bsFY+1adNGFStWDNy+/PtYkj7++ONizQNci9guBK5SWFhYYJXh17rnnnvyvZ2ZmaktW7YoPT1dkydPDty3d+9e1ahR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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,6))\n", "sns.distplot(df['Ward'], bins=17, vertical=True, kde=False).set_title(\"Current Vacant Buildings by Ward Grid\")" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAboAAAGoCAYAAAAw6SAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X98zfX///HbOZv9no0MxXtiRYXesRTNr01vUm+RYX5E3lbkRyS8mV9RhI/qk/QLUVlK8tsnld6pZCHTr9Wb+uZnfoz5MZxtdrad1/ePvTu1t2TYcXae7te/7PV6ndd5PHZc3L2e5/V6Pm2WZVmIiIgYyu7tAkRERDxJQSciIkZT0ImIiNEUdCIiYjQFnYiIGE1BJyIiRlPQSbnUu3dv5s6de9b2BQsWMHDgwMtWx+nTp+nTp88f7ps9ezZNmzalY8eOdOzYkXvuuYfHHnuMPXv2lMl7jxkzhvnz5wNQr149jh8/zscff8yUKVPK5Pznsn//fho1anTRr584cSJPPfWU+2eHw0GDBg0YMWKEe1tRURGxsbHs3Lnzot8nIyODhISEi369XDkUdFIu9ezZk2XLlp21fcmSJfTq1euy1XHy5EkyMjLOuf/uu+9m1apVrFq1ivfee4+WLVvywAMP4HA4PFJPmzZtGD9+vEfOXVZatmzJli1b3D+npaXRrFkzNm7cSEFBAVAcUpGRkcTExHirTLmCKOikXPrb3/5Gbm4u6enp7m1ffvkllmURFxeHy+ViypQpdO3albvvvpv27duzbds2AHJyckhJSaFdu3bcfffdPPvss1iWxe7du/nHP/5Bt27diI+PZ+DAgeTn5wPQsGFDZs+eTffu3UlISOCtt94CICUlhTNnztCxY0eKiorOW3enTp2IiYlhzZo1TJ06leeeew6AI0eOUK9ePTZv3gzAqlWrePTRRwF499136dy5M506daJv375/epWzfPlyBgwYABRf9T7zzDP06tWLhIQExo0bh8vlch9311130alTJ6ZPn85NN90EwM6dO+nevTudO3fmvvvuY9GiRX/4Pi6Xi3HjxtGpUye6dOnCN998g2VZtGvXjrS0NPdx48aN44033ijx2mbNmrF7926ys7MB+OSTT7j33nuJiYlxf56bNm2idevWAHzzzTf06tWLrl270rp1a8aOHQsUX1m2atWKfv360a5dO44cOcJbb71Fu3btSExMdH9GIuejoJNyyd/fn27durF06VL3tnfeeYeePXtis9n49ttvOXLkCO+88w5r167lvvvuY968eQA8//zz5Ofns3btWlauXMlXX33Fl19+yZIlS+jUqRNLlixh3bp17N+/n08//RQAp9NJpUqVWLx4Mc8//zzTpk0jPz+fadOmERQUxKpVq/Dz8ytV7fXq1eOnn36ibdu2bNiwAYDPP/+cqKgovvjiCwDWr19P27Zt+fLLL1m5ciWLFi1i5cqVPPjggwwZMqTUv6d9+/aRmprK6tWr2bBhA19++SU///wzTz/9NK+//jorV64kLCzMHdLz588nISGB5cuXM3fuXNLT093h+HtnzpwhLi6OlStX8uijjzJs2DAKCgro0aMHS5YsAYqHJNevX899991X4rWhoaE0atTIfe6NGzfSokULWrduzccffwwUB12rVq0AWLhwIUOHDuXdd9/lvffeY/369Xz//fcAZGZmMmjQID788EOOHTvGCy+8wJtvvsmyZcuoUKFCqX9PcmXz93YBIufSrVs37rnnHhwOB4WFhWzcuJFJkyYB0KhRIyIiIli8eDG//PILW7ZsITQ0FIAvvviClJQU/Pz88PPz48033wSgSZMmpKWlMW/ePPbs2cORI0fIzc11v1+bNm0AqF+/Pk6ns8S+C2Gz2QgKCiI2NpbDhw9z9OhRPv/8cwYOHMjy5csZMmQIW7du5amnnuLFF19k7969dO/e3f36U6dOua+Gzic+Ph673U5YWBi1atXi5MmT7Nixg7i4OKpXrw7A/fffz+zZs4HiK+XRo0fz3Xff0axZM8aPH4/dfvb/dytWrMjdd98NQPPmzQHYtWsXnTt35sUXX+T48eN88MEHtG7dmooVK571+l+HLytXrkytWrWIjIykdevWDBs2jPz8fH788Uduv/12AKZPn86GDRt45ZVX2LVrF/n5+eTm5hIZGYm/vz+33HILUByOcXFxREVFAZCUlMTGjRtL9XuSK5uu6KTcqlatGnfccYf7yqxdu3aEh4cD8Omnn7qH8Nq0aUOPHj3cr/P398dms7l/PnToECdOnOCxxx5jyZIl1KhRg759+1K/fn1+P9VrYGAggPu1FzsNbEZGBvXq1cNut9O6dWs+++wzvvvuO7p27UpWVhYffPABjRo1IjQ0FJfLRceOHd3f861YsYJly5YRERFRqvcKCgpy/9lms2FZFn5+fiVq//2VaHx8PB9++CHt27dn+/btdOjQgczMzLPO+9/h53K5qFChAhUrVuSuu+5i9erVLFu2rMTv/fdatmxJeno6n376qXuIsm7duuTn5/Pxxx/TqFEj9+/7/vvv57PPPqNOnToMHjyYqlWruusPCAjA3/+3/4+fqy+RP6Ogk3KtV69erFmzhpUrV5a4CSUtLY34+Hh69uxJgwYN+Ne//uUenmvWrBkrVqzA5XLhdDoZOnQoW7duZePGjQwePNh9pfLtt9+e93s3f39/ioqKSh167777Lvv376d9+/YAtG3blldffZW6desSEBBA06ZNefbZZ2nbti1QfLX03nvvceTIEQDefvttHnjggQv7Jf2X5s2bs2nTJg4fPuyu6VcjRoxg7dq13HPPPTz++OOEhYWxb9++s86RnZ3NJ598AhQPswYFBVGrVi2g+DNZuHAhlmVx8803/2EN119/PadPn+bjjz8mPj7evb1Vq1bMmTPHHX6nTp0iIyODkSNH0rZtWzIzM9m3b98fDqfGxcWRlpbmDuYVK1ZcxG9HrkQaupRy7fbbb2fKlClERERQr1499/bu3bszYsQIOnToQGFhIXFxcaxbtw6Xy8WQIUOYOnWq+waSu+++m7Zt25KVlcXgwYMJCQkhLCyMJk2a/OE/8r8XFRXFzTffzD333MOiRYuoVKlSif1r165l27Zt2Gw2XC4XtWvXZuHChe6rlWbNmnHkyBH3lU/z5s1Zu3at+7b45s2b89BDD9GvXz9sNhthYWG88MILJa5IL1Tt2rVJSUkhOTmZgIAAbrzxRoKDgwEYNGgQ48aN45133sHPz48777yTJk2anHWOq666inXr1vHcc88RHBzM7Nmz3VdWN9xwAxERESWGW//IHXfcwRdffMF1113n3ta6dWveeust9/dzFStWpH///tx3332EhIRQrVo1GjduzN69e/nLX/5S4nz16tVj1KhRPPDAA4SGhp4zZEX+m03L9IiY5ZdffmHVqlUMGjQIu93OunXrmDdvXokru0uxb98+evfuzQcffOAOUJHyTFd0IoapXr06R44coUOHDvj5+REeHl7iAe5LMWvWLJYsWcLkyZMVcuIzdEUnIiJG080oIiJiNAWdiIgYzSe+o7Msi8LCs283NoWf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NJ8YunRZLuw2ZbKIXLnynGdwlHLlEg1dluQTqxfYbXbiZsd5uwwREa9JeyQNh1YuuSi6TBIREaMp6ERExGgKOhERMZqCTkREjKagExERoynoRETEaAo6ERExmoJORESMpqATERGjKehERMRoCjoRETGagk5ERIymoBMREaP5xOoFLstF2iNp3i5DRMRr8pxnvF2Cz/KJoMOykXX0tLer8BiT144yuTcwuz+TewPz+5PfaOhSRESMpqATERGjKehERMRoCjoRETGagk5ERIymoBMREaMp6ERExGgKOhERMZqCTkREjOYbM6MAUVHh3i7Bo0rbX15+AY5TmgpIRKS0fCLo7HYbsaMWeruMcmHbzD44UNCJiJSWhi5FRMRoCjoRETGagk5ERIymoBMREaMp6ERExGgKOhERMZqCTkREjKagExERoynoRETEaAo6ERExmoJORESMpqATERGj+cSkzpbLxbaZfbxdRrlxuVZyKHKe4fjJgsvyXiIinuITQWez29n3RENvl3HFiZ6YASjoRMS3aehSRESMpqATERGjKehERMRoHgu6OXPmkJSUROfOnXn33XdL7Fu/fj2JiYkkJSWxZMkST5UgIiLimZtRtmzZwtdff83bb79NXl4eCxYscO8rKChg2rRpLF26lODgYHr06EF8fDxRUVGeKEVERK5wHrmi27hxI3Xr1mXw4ME8/PDDtG7d2r1v586dREdHExERQUBAALGxsaSnp3uiDBEREc9c0Z04cYKDBw/yyiuvsH//fgYOHMgHH3yAzWbD4XAQHv7bc2ChoaE4HA5PlCEiIuKZoIuMjKROnToEBARQp04dAgMDOX78OFdddRVhYWHk5OS4j83JySkRfCIiImXJI0OXsbGxfP7551iWxeHDh8nLyyMyMhKAmJgY9u7dS3Z2Nk6nk/T0dBo1auSJMkRERDxzRRcfH8/WrVvp0qULlmUxceJE1q5dS25uLklJSYwZM4bk5GQsyyIxMZFq1ap5ogwRERHPTQH2z3/+85z7EhISSEhI8NRbi4iIuOmBcRERMZqCTkREjGazLMvydhHn47Jc2G3KZBGRyyXPeQZHOV2mKzIyhOzs3FIvWeYTy/TYbXbiZsd5uwwRkStG2iNpOAxZpkuXSSIiYjQFnYiIGE1BJyIiRlPQiYiI0RR0IiJiNAWdiIgYTUEnIiJGU9CJiIjR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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,6))\n", "barplot('Ward',7,7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interactive Saint Paul Vacant Buildings Map by Year Range \n", "\n", "**CLick on dots to get more information**; please zoom in\n", "\n", "**Legend: Vacant Year Range**\n", "\n", "- **Red:** Earlier than 2013\n", "- **Orange:** 2013 to 2015\n", "- **Brown:** 2016\n", "- **Blue:** 2017\n", "- **Green:** 2018 to present" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_Vacancy_byYear()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Saint Paul Interactive Vacant Buildings by Dwelling Type \n", "\n", "\n", "**Legend: Dwelling Type**\n", "\n", "- **Red:** Mixed Use\n", "- **Orange:** Duplex\n", "- **Brown:** Commercial\n", "- **Blue:** Multi-Family\n", "- **Green:** Single Family\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_Vacancy_TypeWard()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interactive Vacant Buildings by Dwelling for Thomas-Dale-Frogtown Community \n", "\n", "**Legend: Dwelling Type**\n", "\n", "- **Red:** Mixed Use\n", "- **Orange:** Duplex\n", "- **Brown:** Commercial\n", "- **Blue:** Multi-Family\n", "- **Green:** Single Family" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_Vacancy_TypeDistrict(7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interactive Vacant Buildings by Dwelling type Ward 1\n", "\n", "**Legend: Dwelling Type**\n", "\n", "- **Red:** Mixed Use\n", "- **Orange:** Duplex\n", "- **Brown:** Commercial\n", "- **Blue:** Multi-Family\n", "- **Green:** Single Family" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "map_Vacancy_TypeWard(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interactive Hotspot Crime Map (from 2018 to Present) w/ Vacant Buildings for Ward 1 \n", "\n", "**Green:** Hotspot of at least 8 crimes or more\n", "\n", "**Orange:** Vacant buildings\n", "\n", "Note: The Crime Dataset is clean from Frogtown Map Project. This was my first attempt of combining to different datasets together in a map" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Map_Frogtown_VacantBuilding_Crime_Current()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Concluding Remarks \n", "\n", "There are some neighborhoods with clusters of vacant buildings. How should the community deal with this? how should revitalize look like? Is there a correlation between hotspots and vacant buildings? Feel free to explore. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Run Code " ] }, { "cell_type": "code", "execution_count": 16, "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", "
addresscensus_tractdistrictdwelling_typemap_locationsale_review_categoryvacant_as_ofward
0937 SHERBURNE AVE325007Duplex{'latitude': '44.9567603300828', 'longitude': ...22019-04-30T00:00:00.0001
1535 FOREST ST345004Single Family Residential{'latitude': '44.957410404869', 'longitude': '...22019-04-26T00:00:00.0007
2842 UNIVERSITY AVE W335008Single Family Residential{'latitude': '44.9554819820147', 'longitude': ...22019-04-24T00:00:00.0001
3996 MARION ST308006Duplex{'latitude': '44.97139072308', 'longitude': '-...12019-04-24T00:00:00.0005
4652 HALL AVE372003Duplex{'latitude': '44.9263735950436', 'longitude': ...32019-04-22T00:00:00.0002
5792 DULUTH ST317014Duplex{'latitude': '44.965291417806', 'longitude': '...22019-04-22T00:00:00.0006
61400 UNIVERSITY AVE W3340013Commercial{'latitude': '44.9536084165855', 'longitude': ...22019-04-16T00:00:00.0001
7425 RICE ST3370017Commercial{'latitude': '44.9536181436373', 'longitude': ...22019-04-16T00:00:00.0001
81440 MARSHALL AVE3340013Commercial{'latitude': '44.9482026685217', 'longitude': ...22019-04-10T00:00:00.0001
9218 PASCAL ST N3340013Commercial{'latitude': '44.9478738971447', 'longitude': ...22019-04-10T00:00:00.0001
101876 MECHANIC AVE318012Single Family Residential{'latitude': '44.9728379377429', 'longitude': ...12019-04-09T00:00:00.0006
11750 CHATSWORTH ST S367009Duplex{'latitude': '44.9189407406274', 'longitude': ...22019-04-05T00:00:00.0002
12610 LARPENTEUR AVE E306025Duplex{'latitude': '44.9917519986127', 'longitude': ...22019-04-03T00:00:00.0006
1325 JESSAMINE AVE E305006Single Family Residential{'latitude': '44.9748357438782', 'longitude': ...22019-04-03T00:00:00.0005
141739 CARROLL AVE3340013Single Family Residential{'latitude': '44.9505108931445', 'longitude': ...22019-04-03T00:00:00.0004
151271 MARION ST308006Single Family Residential{'latitude': '44.9795463927248', 'longitude': ...12019-04-01T00:00:00.0005
16240 COTTAGE AVE W304006Single Family Residential{'latitude': '44.9826352633946', 'longitude': ...22019-03-25T00:00:00.0005
171156 MARYLAND AVE E311005Single Family Residential{'latitude': '44.9773487291127', 'longitude': ...22019-03-22T00:00:00.0006
18598 LAFOND AVE326007Single Family Residential{'latitude': '44.9601196977974', 'longitude': ...22019-03-21T00:00:00.0001
191734 7TH ST E318012Single Family Residential{'latitude': '44.9664939992909', 'longitude': ...22019-03-21T00:00:00.0007
201403 HAMLINE AVE N3020110Single Family Residential{'latitude': '44.9834949793758', 'longitude': ...12019-03-21T00:00:00.0004
2165 WINIFRED ST W371003Single Family Residential{'latitude': '44.9316620044322', 'longitude': ...12019-03-19T00:00:00.0002
221155 MARION ST308006Single Family Residential{'latitude': '44.9759788153959', 'longitude': ...22019-03-19T00:00:00.0005
23941 CYPRESS ST316005Single Family Residential{'latitude': '44.9697655636952', 'longitude': ...22019-03-14T00:00:00.0006
241311 BURNS AVE346014Single Family Residential{'latitude': '44.9488932778155', 'longitude': ...12019-03-14T00:00:00.0007
25817 BURR ST315005Multi-family Residential{'latitude': '44.965869347891', 'longitude': '...22019-03-13T00:00:00.0005
261144 FAIRMOUNT AVE3530016Single Family Residential{'latitude': '44.9366493090143', 'longitude': ...22019-03-13T00:00:00.0002
272039 CASE AVE318022Single Family Residential{'latitude': '44.9704609360422', 'longitude': ...12019-03-05T00:00:00.0006
281241 6TH ST E346014Duplex{'latitude': '44.9605260318585', 'longitude': ...22019-03-05T00:00:00.0007
292060 3RD ST E347021Single Family Residential{'latitude': '44.9565683001788', 'longitude': ...12019-03-05T00:00:00.0007
...........................
5071313 SEMINARY AVE3230011Single Family Residential{'latitude': '44.964887859907', 'longitude': '...22008-06-05T00:00:00.0004
508474 CURTICE ST E372003Single Family Residential{'latitude': '44.922858156184', 'longitude': '...22008-03-29T00:00:00.0002
5091020 CARROLL AVE338008Single Family Residential{'latitude': '44.9501237852992', 'longitude': ...22008-03-12T00:00:00.0001
51050 FILLMORE AVE E371003Commercial{'latitude': '44.9402142051823', 'longitude': ...22008-02-26T00:00:00.0002
511822 VAN BUREN AVE324007Duplex{'latitude': '44.9619119910923', 'longitude': ...22007-11-28T00:00:00.0001
512575 PARK ST428007Single Family Residential{'latitude': '44.9586747280584', 'longitude': ...22007-11-13T00:00:00.0001
513383 KING ST W370003Multi-family Residential{'latitude': '44.9276700931864', 'longitude': ...22007-08-23T00:00:00.0002
5141626 ENGLEWOOD AVE3210011Multi-family Residential{'latitude': '44.9638769363282', 'longitude': ...22007-08-16T00:00:00.0004
5151093 4TH ST E346014Single Family Residential{'latitude': '44.9588922296321', 'longitude': ...22007-07-20T00:00:00.0007
516287 AVON ST N338008Duplex{'latitude': '44.9499427190014', 'longitude': ...22007-07-17T00:00:00.0001
5171904 PRINCETON AVE3510014Single Family Residential{'latitude': '44.9359488142281', 'longitude': ...22007-07-12T00:00:00.0003
51855 MANITOBA AVE314006Duplex{'latitude': '44.9684623676033', 'longitude': ...22007-06-01T00:00:00.0001
519889 AGATE ST314006Multi-family Residential{'latitude': '44.9680024783713', 'longitude': ...22007-06-01T00:00:00.0005
520380 RANDOLPH AVE360009Commercial{'latitude': '44.9267151217236', 'longitude': ...22006-11-21T00:00:00.0002
521811 4TH ST E345004Single Family Residential{'latitude': '44.9582234042631', 'longitude': ...22006-10-30T00:00:00.0007
522667 OHIO ST370003Single Family Residential{'latitude': '44.9259319976014', 'longitude': ...32006-05-26T00:00:00.0002
523716 WILSON AVE344004Single Family Residential{'latitude': '44.9532960197741', 'longitude': ...22005-10-27T00:00:00.0007
524587 COOK AVE E310005Duplex{'latitude': '44.9730483353299', 'longitude': ...22005-10-14T00:00:00.0006
525680 MINNEHAHA AVE E BLDG 3NaNNaNMulti-family ResidentialNaN22005-07-21T00:00:00.000NaN
526650 AURORA AVE335008Single Family Residential{'latitude': '44.9546496376062', 'longitude': ...32005-01-07T00:00:00.0001
5271023 JESSIE ST309005Duplex{'latitude': '44.9721671763833', 'longitude': ...22004-12-09T00:00:00.0005
5282075 SCUDDER ST3010012Single Family Residential{'latitude': '44.9787618089353', 'longitude': ...22004-08-05T00:00:00.0004
5291253 CLEVELAND AVE N3010012Single Family Residential{'latitude': '44.9787614519552', 'longitude': ...22004-08-05T00:00:00.0004
5301508 COMO AVE3020110Duplex{'latitude': '44.977126870947', 'longitude': '...22003-07-29T00:00:00.0004
5312062 COMO AVE3010012Single Family Residential{'latitude': '44.9769023417819', 'longitude': ...22001-11-09T00:00:00.0004
5321308 VICTORIA ST N3030010Single Family Residential{'latitude': '44.9806018151037', 'longitude': ...22001-10-30T00:00:00.0005
533466 LAUREL AVE355008Single Family Residential{'latitude': '44.9452343913786', 'longitude': ...32000-05-03T00:00:00.0001
534847 HUDSON ROAD344004Commercial{'latitude': '44.9523831474725', 'longitude': ...31999-08-10T00:00:00.0007
535395 MICHIGAN ST369009Single Family Residential{'latitude': '44.9352600297476', 'longitude': ...31996-05-15T00:00:00.0002
536365 MICHIGAN ST360009Single Family Residential{'latitude': '44.9349513001028', 'longitude': ...21995-07-12T00:00:00.0002
\n", "

537 rows × 8 columns

\n", "
" ], "text/plain": [ " address census_tract district \\\n", "0 937 SHERBURNE AVE 32500 7 \n", "1 535 FOREST ST 34500 4 \n", "2 842 UNIVERSITY AVE W 33500 8 \n", "3 996 MARION ST 30800 6 \n", "4 652 HALL AVE 37200 3 \n", "5 792 DULUTH ST 31701 4 \n", "6 1400 UNIVERSITY AVE W 33400 13 \n", "7 425 RICE ST 33700 17 \n", "8 1440 MARSHALL AVE 33400 13 \n", "9 218 PASCAL ST N 33400 13 \n", "10 1876 MECHANIC AVE 31801 2 \n", "11 750 CHATSWORTH ST S 36700 9 \n", "12 610 LARPENTEUR AVE E 30602 5 \n", "13 25 JESSAMINE AVE E 30500 6 \n", "14 1739 CARROLL AVE 33400 13 \n", "15 1271 MARION ST 30800 6 \n", "16 240 COTTAGE AVE W 30400 6 \n", "17 1156 MARYLAND AVE E 31100 5 \n", "18 598 LAFOND AVE 32600 7 \n", "19 1734 7TH ST E 31801 2 \n", "20 1403 HAMLINE AVE N 30201 10 \n", "21 65 WINIFRED ST W 37100 3 \n", "22 1155 MARION ST 30800 6 \n", "23 941 CYPRESS ST 31600 5 \n", "24 1311 BURNS AVE 34601 4 \n", "25 817 BURR ST 31500 5 \n", "26 1144 FAIRMOUNT AVE 35300 16 \n", "27 2039 CASE AVE 31802 2 \n", "28 1241 6TH ST E 34601 4 \n", "29 2060 3RD ST E 34702 1 \n", ".. ... ... ... \n", "507 1313 SEMINARY AVE 32300 11 \n", "508 474 CURTICE ST E 37200 3 \n", "509 1020 CARROLL AVE 33800 8 \n", "510 50 FILLMORE AVE E 37100 3 \n", "511 822 VAN BUREN AVE 32400 7 \n", "512 575 PARK ST 42800 7 \n", "513 383 KING ST W 37000 3 \n", "514 1626 ENGLEWOOD AVE 32100 11 \n", "515 1093 4TH ST E 34601 4 \n", "516 287 AVON ST N 33800 8 \n", "517 1904 PRINCETON AVE 35100 14 \n", "518 55 MANITOBA AVE 31400 6 \n", "519 889 AGATE ST 31400 6 \n", "520 380 RANDOLPH AVE 36000 9 \n", "521 811 4TH ST E 34500 4 \n", "522 667 OHIO ST 37000 3 \n", "523 716 WILSON AVE 34400 4 \n", "524 587 COOK AVE E 31000 5 \n", "525 680 MINNEHAHA AVE E BLDG 3 NaN NaN \n", "526 650 AURORA AVE 33500 8 \n", "527 1023 JESSIE ST 30900 5 \n", "528 2075 SCUDDER ST 30100 12 \n", "529 1253 CLEVELAND AVE N 30100 12 \n", "530 1508 COMO AVE 30201 10 \n", "531 2062 COMO AVE 30100 12 \n", "532 1308 VICTORIA ST N 30300 10 \n", "533 466 LAUREL AVE 35500 8 \n", "534 847 HUDSON ROAD 34400 4 \n", "535 395 MICHIGAN ST 36900 9 \n", "536 365 MICHIGAN ST 36000 9 \n", "\n", " dwelling_type \\\n", "0 Duplex \n", "1 Single Family Residential \n", "2 Single Family Residential \n", "3 Duplex \n", "4 Duplex \n", "5 Duplex \n", "6 Commercial \n", "7 Commercial \n", "8 Commercial \n", "9 Commercial \n", "10 Single Family Residential \n", "11 Duplex \n", "12 Duplex \n", "13 Single Family Residential \n", "14 Single Family Residential \n", "15 Single Family Residential \n", "16 Single Family Residential \n", "17 Single Family Residential \n", "18 Single Family Residential \n", "19 Single Family Residential \n", "20 Single Family Residential \n", "21 Single Family Residential \n", "22 Single Family Residential \n", "23 Single Family Residential \n", "24 Single Family Residential \n", "25 Multi-family Residential \n", "26 Single Family Residential \n", "27 Single Family Residential \n", "28 Duplex \n", "29 Single Family Residential \n", ".. ... \n", "507 Single Family Residential \n", "508 Single Family Residential \n", "509 Single Family Residential \n", "510 Commercial \n", "511 Duplex \n", "512 Single Family Residential \n", "513 Multi-family Residential \n", "514 Multi-family Residential \n", "515 Single Family Residential \n", "516 Duplex \n", "517 Single Family Residential \n", "518 Duplex \n", "519 Multi-family Residential \n", "520 Commercial \n", "521 Single Family Residential \n", "522 Single Family Residential \n", "523 Single Family Residential \n", "524 Duplex \n", "525 Multi-family Residential \n", "526 Single Family Residential \n", "527 Duplex \n", "528 Single Family Residential \n", "529 Single Family Residential \n", "530 Duplex \n", "531 Single Family Residential \n", "532 Single Family Residential \n", "533 Single Family Residential \n", "534 Commercial \n", "535 Single Family Residential \n", "536 Single Family Residential \n", "\n", " map_location sale_review_category \\\n", "0 {'latitude': '44.9567603300828', 'longitude': ... 2 \n", "1 {'latitude': '44.957410404869', 'longitude': '... 2 \n", "2 {'latitude': '44.9554819820147', 'longitude': ... 2 \n", "3 {'latitude': '44.97139072308', 'longitude': '-... 1 \n", "4 {'latitude': '44.9263735950436', 'longitude': ... 3 \n", "5 {'latitude': '44.965291417806', 'longitude': '... 2 \n", "6 {'latitude': '44.9536084165855', 'longitude': ... 2 \n", "7 {'latitude': '44.9536181436373', 'longitude': ... 2 \n", "8 {'latitude': '44.9482026685217', 'longitude': ... 2 \n", "9 {'latitude': '44.9478738971447', 'longitude': ... 2 \n", "10 {'latitude': '44.9728379377429', 'longitude': ... 1 \n", "11 {'latitude': '44.9189407406274', 'longitude': ... 2 \n", "12 {'latitude': '44.9917519986127', 'longitude': ... 2 \n", "13 {'latitude': '44.9748357438782', 'longitude': ... 2 \n", "14 {'latitude': '44.9505108931445', 'longitude': ... 2 \n", "15 {'latitude': '44.9795463927248', 'longitude': ... 1 \n", "16 {'latitude': '44.9826352633946', 'longitude': ... 2 \n", "17 {'latitude': '44.9773487291127', 'longitude': ... 2 \n", "18 {'latitude': '44.9601196977974', 'longitude': ... 2 \n", "19 {'latitude': '44.9664939992909', 'longitude': ... 2 \n", "20 {'latitude': '44.9834949793758', 'longitude': ... 1 \n", "21 {'latitude': '44.9316620044322', 'longitude': ... 1 \n", "22 {'latitude': '44.9759788153959', 'longitude': ... 2 \n", "23 {'latitude': '44.9697655636952', 'longitude': ... 2 \n", "24 {'latitude': '44.9488932778155', 'longitude': ... 1 \n", "25 {'latitude': '44.965869347891', 'longitude': '... 2 \n", "26 {'latitude': '44.9366493090143', 'longitude': ... 2 \n", "27 {'latitude': '44.9704609360422', 'longitude': ... 1 \n", "28 {'latitude': '44.9605260318585', 'longitude': ... 2 \n", "29 {'latitude': '44.9565683001788', 'longitude': ... 1 \n", ".. ... ... \n", "507 {'latitude': '44.964887859907', 'longitude': '... 2 \n", "508 {'latitude': '44.922858156184', 'longitude': '... 2 \n", "509 {'latitude': '44.9501237852992', 'longitude': ... 2 \n", "510 {'latitude': '44.9402142051823', 'longitude': ... 2 \n", "511 {'latitude': '44.9619119910923', 'longitude': ... 2 \n", "512 {'latitude': '44.9586747280584', 'longitude': ... 2 \n", "513 {'latitude': '44.9276700931864', 'longitude': ... 2 \n", "514 {'latitude': '44.9638769363282', 'longitude': ... 2 \n", "515 {'latitude': '44.9588922296321', 'longitude': ... 2 \n", "516 {'latitude': '44.9499427190014', 'longitude': ... 2 \n", "517 {'latitude': '44.9359488142281', 'longitude': ... 2 \n", "518 {'latitude': '44.9684623676033', 'longitude': ... 2 \n", "519 {'latitude': '44.9680024783713', 'longitude': ... 2 \n", "520 {'latitude': '44.9267151217236', 'longitude': ... 2 \n", "521 {'latitude': '44.9582234042631', 'longitude': ... 2 \n", "522 {'latitude': '44.9259319976014', 'longitude': ... 3 \n", "523 {'latitude': '44.9532960197741', 'longitude': ... 2 \n", "524 {'latitude': '44.9730483353299', 'longitude': ... 2 \n", "525 NaN 2 \n", "526 {'latitude': '44.9546496376062', 'longitude': ... 3 \n", "527 {'latitude': '44.9721671763833', 'longitude': ... 2 \n", "528 {'latitude': '44.9787618089353', 'longitude': ... 2 \n", "529 {'latitude': '44.9787614519552', 'longitude': ... 2 \n", "530 {'latitude': '44.977126870947', 'longitude': '... 2 \n", "531 {'latitude': '44.9769023417819', 'longitude': ... 2 \n", "532 {'latitude': '44.9806018151037', 'longitude': ... 2 \n", "533 {'latitude': '44.9452343913786', 'longitude': ... 3 \n", "534 {'latitude': '44.9523831474725', 'longitude': ... 3 \n", "535 {'latitude': '44.9352600297476', 'longitude': ... 3 \n", "536 {'latitude': '44.9349513001028', 'longitude': ... 2 \n", "\n", " vacant_as_of ward \n", "0 2019-04-30T00:00:00.000 1 \n", "1 2019-04-26T00:00:00.000 7 \n", "2 2019-04-24T00:00:00.000 1 \n", "3 2019-04-24T00:00:00.000 5 \n", "4 2019-04-22T00:00:00.000 2 \n", "5 2019-04-22T00:00:00.000 6 \n", "6 2019-04-16T00:00:00.000 1 \n", "7 2019-04-16T00:00:00.000 1 \n", "8 2019-04-10T00:00:00.000 1 \n", "9 2019-04-10T00:00:00.000 1 \n", "10 2019-04-09T00:00:00.000 6 \n", "11 2019-04-05T00:00:00.000 2 \n", "12 2019-04-03T00:00:00.000 6 \n", "13 2019-04-03T00:00:00.000 5 \n", "14 2019-04-03T00:00:00.000 4 \n", "15 2019-04-01T00:00:00.000 5 \n", "16 2019-03-25T00:00:00.000 5 \n", "17 2019-03-22T00:00:00.000 6 \n", "18 2019-03-21T00:00:00.000 1 \n", "19 2019-03-21T00:00:00.000 7 \n", "20 2019-03-21T00:00:00.000 4 \n", "21 2019-03-19T00:00:00.000 2 \n", "22 2019-03-19T00:00:00.000 5 \n", "23 2019-03-14T00:00:00.000 6 \n", "24 2019-03-14T00:00:00.000 7 \n", "25 2019-03-13T00:00:00.000 5 \n", "26 2019-03-13T00:00:00.000 2 \n", "27 2019-03-05T00:00:00.000 6 \n", "28 2019-03-05T00:00:00.000 7 \n", "29 2019-03-05T00:00:00.000 7 \n", ".. ... ... \n", "507 2008-06-05T00:00:00.000 4 \n", "508 2008-03-29T00:00:00.000 2 \n", "509 2008-03-12T00:00:00.000 1 \n", "510 2008-02-26T00:00:00.000 2 \n", "511 2007-11-28T00:00:00.000 1 \n", "512 2007-11-13T00:00:00.000 1 \n", "513 2007-08-23T00:00:00.000 2 \n", "514 2007-08-16T00:00:00.000 4 \n", "515 2007-07-20T00:00:00.000 7 \n", "516 2007-07-17T00:00:00.000 1 \n", "517 2007-07-12T00:00:00.000 3 \n", "518 2007-06-01T00:00:00.000 1 \n", "519 2007-06-01T00:00:00.000 5 \n", "520 2006-11-21T00:00:00.000 2 \n", "521 2006-10-30T00:00:00.000 7 \n", "522 2006-05-26T00:00:00.000 2 \n", "523 2005-10-27T00:00:00.000 7 \n", "524 2005-10-14T00:00:00.000 6 \n", "525 2005-07-21T00:00:00.000 NaN \n", "526 2005-01-07T00:00:00.000 1 \n", "527 2004-12-09T00:00:00.000 5 \n", "528 2004-08-05T00:00:00.000 4 \n", "529 2004-08-05T00:00:00.000 4 \n", "530 2003-07-29T00:00:00.000 4 \n", "531 2001-11-09T00:00:00.000 4 \n", "532 2001-10-30T00:00:00.000 5 \n", "533 2000-05-03T00:00:00.000 1 \n", "534 1999-08-10T00:00:00.000 7 \n", "535 1996-05-15T00:00:00.000 2 \n", "536 1995-07-12T00:00:00.000 2 \n", "\n", "[537 rows x 8 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[:,4:]" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:Requests made without an app_token will be subject to strict throttling limits.\n" ] }, { "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", "
AddressCensus_TractDistrictDwellingCoordinatesVacant_Building_CategoryVacantDateWard
0398 TOTEM ROAD37403.01.0Multi-family Residential{'latitude': '44.925292830328', 'longitude': '...12019-11-25T00:00:00.0007.0
11971 NORTONIA AVE31802.02.0Duplex{'latitude': '44.9650944591901', 'longitude': ...22019-11-22T00:00:00.0007.0
\n", "
" ], "text/plain": [ " Address Census_Tract District Dwelling \\\n", "0 398 TOTEM ROAD 37403.0 1.0 Multi-family Residential \n", "1 1971 NORTONIA AVE 31802.0 2.0 Duplex \n", "\n", " Coordinates \\\n", "0 {'latitude': '44.925292830328', 'longitude': '... \n", "1 {'latitude': '44.9650944591901', 'longitude': ... \n", "\n", " Vacant_Building_Category VacantDate Ward \n", "0 1 2019-11-25T00:00:00.000 7.0 \n", "1 2 2019-11-22T00:00:00.000 7.0 " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "from sodapy import Socrata\n", "\n", "#New Upload Method Get Information from Socrata API\n", "client = Socrata(\"information.stpaul.gov\", None)\n", "results = client.get(\"fgbn-288b\", limit=1000000)\n", "df = pd.DataFrame.from_records(results)\n", "# Remove meanigless first foour columns\n", "df=df.iloc[:,4:]\n", "\n", "#Set up columns and data types\n", "cols= ['Address','Census_Tract','District','Dwelling','Coordinates','Vacant_Building_Category','VacantDate', 'Ward']\n", "df.columns= cols\n", "df = df.astype({\"District\": float, \"Vacant_Building_Category\": int, \"Ward\":float, \"Census_Tract\":float})\n", "df.head(2)\n", "\n", "#df.columns= cols" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:Requests made without an app_token will be subject to strict throttling limits.\n" ] } ], "source": [ "\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from datetime import datetime\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "import seaborn as sns\n", "import scipy.stats as stats #used to get correlation coefficient\n", "import folium\n", "import pandas as pd\n", "from sodapy import Socrata\n", "\n", "#New Upload Method Get Information from Socrata API\n", "client = Socrata(\"information.stpaul.gov\", None)\n", "results = client.get(\"fgbn-288b\", limit=1000000)\n", "df = pd.DataFrame.from_records(results)\n", "# Remove meanigless first foour columns\n", "df=df.iloc[:,4:]\n", "\n", "#Set up columns and data types\n", "cols= ['Address','Census_Tract','District','Dwelling','Coordinates','Vacant_Building_Category','VacantDate', 'Ward']\n", "df.columns= cols\n", "df = df.astype({\"District\": float, \"Vacant_Building_Category\": int, \"Ward\":float, \"Census_Tract\":float})\n", "\n", "#load data\n", "#df = pd.read_csv('Data/Vacant_Buildings_-_Dataset.csv')\n", "#cols= ['Address','VacantDate','Dwelling','Vacant_Building_Category','Ward','District','Census_Tract','Coordinates','DistrictCouncilMap','CouncilWard','Gunk1','Gunk2']\n", "#df.columns= cols\n", "\n", "# Get Coordinates by converting to string\n", "df['Coordinates'] = df['Coordinates'].astype('str') \n", "new=df['Coordinates'].str.split(\"', '\", n = 1, expand = True) \n", "\n", "# get Latitude:\n", "lat=new[0].str.split(\" '\", n = 1, expand = True)\n", "df['Latitude']= pd.to_numeric(lat[1]) \n", "\n", "#Get Longtitude\n", "new= new[1].str.split(\"', '\", n = 1, expand = True)\n", "long=new[0].str.split(\" '\", n = 1, expand = True)\n", "df['Longitude']= pd.to_numeric(long[1]) \n", "\n", "\n", "# Get Year and Date Variable\n", "df['Datetime']= pd.to_datetime(df['VacantDate'])\n", "df['Year']=df['Datetime'].dt.year\n", "df['Date']=pd.to_datetime(df['Datetime']).apply(lambda x: x.date())\n", "df=df.query('Latitude != \"NaN\"')\n", "\n", "def map_Vacancy_byYear():\n", " # generate a new map\n", " FG_map = folium.Map(location=[44.9608901, -93.1010336], zoom_start=12,tiles=\"OpenStreetMap\")\n", " \n", " #setup\n", " Index =['Address','Date','Dwelling', 'Ward','District','Latitude','Longitude','Year']\n", " B=df[Index]\n", "\n", " T=B.query('Year <= 2012')\n", " V=B.query('Year > 2012 and Year < 2016')\n", " N=B.query('Year == 2016')\n", " A=B.query('Year == 2017')\n", " D=B.query('Year in (2018,2019)')\n", "\n", " for index, row in T.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color= \"#FF0000\", #red \n", " popup=popup_text,\n", " fill=True).add_to(FG_map)\n", "\n", " for index, row in V.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#E37222\", #orange\n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " for index, row in N.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#654321\", #brown\n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " for index, row in A.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#0000ff\", #blue\n", " popup=popup_text,\n", " fill=True).add_to(FG_map)\n", " \n", " for index, row in D.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color='#007849', #green \n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " return FG_map\n", "\n", "\n", "\n", "def map_Vacancy_TypeDistrict(Dis='All'):\n", " # generate a new map\n", " FG_map = folium.Map(location=[44.958326, -93.122926], zoom_start=14,tiles=\"OpenStreetMap\")\n", " \n", " #setup\n", " Index =['Address','Date','Dwelling', 'Ward','District','Latitude','Longitude','Year']\n", " if Dis=='All':\n", " B=df\n", " else:\n", " B=df[(df['District']==Dis)]\n", " B=B[Index]\n", "\n", " T=B.query('Dwelling == \"Mixed Use\"')\n", " V=B.query('Dwelling==\"Duplex\"')\n", " N=B.query('Dwelling == \"Commerical\"')\n", " A=B.query('Dwelling == \"Multi-family Residential\"')\n", " D=B.query('Dwelling == \"Single Family Residential\"')\n", " \n", "#Create Frogtown GeoMap\n", " FG_map = folium.Map(location=[44.958326, -93.122926], zoom_start=14,tiles=\"OpenStreetMap\")\n", "\n", " for index, row in T.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color= \"#FF0000\", #red \n", " popup=popup_text,\n", " fill=True).add_to(FG_map)\n", "\n", " for index, row in V.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#E37222\", #orange\n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " for index, row in N.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#654321\", #brown\n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " for index, row in A.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#0000ff\", #blue\n", " popup=popup_text,\n", " fill=True).add_to(FG_map)\n", " \n", " for index, row in D.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color='#007849', #green \n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " return FG_map\n", "\n", "def map_Vacancy_TypeWard(War='All'):\n", " # generate a new map\n", " FG_map = folium.Map(location=[44.958326, -93.122926], zoom_start=12,tiles=\"OpenStreetMap\")\n", " \n", " #setup\n", " Index =['Address','Date','Dwelling', 'Ward','District','Latitude','Longitude','Year']\n", " if War=='All':\n", " B=df\n", " else:\n", " B=df[(df['Ward']==War)]\n", " B=B[Index]\n", "\n", " T=B.query('Dwelling == \"Mixed Use\"')\n", " V=B.query('Dwelling==\"Duplex\"')\n", " N=B.query('Dwelling == \"Commerical\"')\n", " A=B.query('Dwelling == \"Multi-family Residential\"')\n", " D=B.query('Dwelling == \"Single Family Residential\"')\n", " \n", "#Create Frogtown GeoMap\n", " FG_map = folium.Map(location=[44.958326, -93.122926], zoom_start=14,tiles=\"OpenStreetMap\")\n", "\n", " for index, row in T.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color= \"#FF0000\", #red \n", " popup=popup_text,\n", " fill=True).add_to(FG_map)\n", "\n", " for index, row in V.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#E37222\", #orange\n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " for index, row in N.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#654321\", #brown\n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " for index, row in A.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#0000ff\", #blue\n", " popup=popup_text,\n", " fill=True).add_to(FG_map)\n", " \n", " for index, row in D.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color='#007849', #green \n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", "\n", " return FG_map\n", "\n", "def barplot(Var1,fig1,fig2):\n", " plt.figure(figsize=(fig1,fig2))\n", " A= df.groupby([Var1,'Dwelling']).count().sort_index(level=1)\n", " A=A.reset_index()\n", " A= A.query('Dwelling not in (\"Mixed Use\", \"Multi-family Residential\")')\n", " ax = sns.barplot(x=\"Date\", y=Var1, hue=\"Dwelling\", data=A, orient= 'h').set_title('Vacant Dwellings by {}'.format(Var1))\n", " plt.xlabel('')\n", " return plt.show() " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Click to to scroll to table of content](#tc)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "#Upload Data\n", "fg = pd.read_csv('Data/FGCrime_Final.csv')\n", "\n", "#Set max limit for uptodate function\n", "Max= fg.loc[1,'Day_Max']\n", "\n", "# Set a friendly Date variable\n", "fg['FDate']=fg['Month'].astype(str) + '/' + fg['Day'].astype(str) + '/'\n", "\n", "fgp= fg.query('Code in [9954]') # Specify proactive calls\n", "fgc= fg.query('Code not in [9954,9959]') #specify all crime related police visits\n", "fgc_Date= fgc[(fgc['DayYear'] <= Max)] #this specifies to date df\n", "\n", "def Map_Frogtown_VacantBuilding_Crime_Current():\n", " # generate a new map\n", " FG_map = folium.Map(location=[44.958326, -93.122926], zoom_start=14,tiles=\"OpenStreetMap\")\n", " \n", " #setup\n", " Bl= fgc[(fgc['Year'] > 2017)]\n", " Index =['Block','Latitude','Longitude', 'Count','Theft','Vandalism','Narcotics','Auto Theft','Burglary','Discharge'\\\n", " ,'Robbery','Domestic Assault','Violent','Arson']\n", " BM=Bl.query('LateNight ==0')\n", " BM=BM[Index].groupby(['Block','Latitude','Longitude']).sum().reset_index()\n", " BM=BM.query('Count>7')\n", "\n", " \n", " # for each row in the data, add a cicle marker\n", " for index, row in BM.iterrows(): \n", " popup_text = \"Year: 2018-19
Address: {}
total incidents: {}
Theft: {}
Vandalism: {}\\\n", "
Narcotics: {}
Auto Theft: {}
Burglary: {}
Discharge: {}
Robbery: {}\\\n", "
Domestic Assault: {}
Violent: {}
Arson: {}\"\n", " popup_text = popup_text.format(row[\"Block\"], row['Count'], row['Theft'], row['Vandalism'], row['Robbery'],\\\n", " row['Auto Theft'], row['Burglary'], row['Discharge'], row['Domestic Assault'],\\\n", " row['Domestic Assault'],row['Violent'],row['Arson'])\n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=row['Count']/2,\n", " color=\"#007849\", #green\n", " popup=popup_text,\n", " fill=True).add_to(FG_map)\n", "\n", " Index1 =['Address','Date','Dwelling', 'Ward','District','Latitude','Longitude','Year'] \n", " B=df[(df['Ward']==1)]\n", " B=B[Index1]\n", "\n", " for index, row in B.iterrows(): \n", " popup_text = \"Address: {}
District: {}
Ward: {}
Date: {}
Dwelling:{}\"\n", " popup_text = popup_text.format(row[\"Address\"],row['District'],row['Ward'],row['Date'],row['Dwelling']) \n", " folium.CircleMarker(location=(row[\"Latitude\"],row[\"Longitude\"]),\n", " radius=5,\n", " color=\"#E37222\", #orange\n", " popup=popup_text,\n", " fill=True).add_to(FG_map) \n", " \n", " return FG_map\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }