Skip to content

Instantly share code, notes, and snippets.

@ruairif
Created October 26, 2015 11:07
Show Gist options
  • Save ruairif/80102746320d0229a0ce to your computer and use it in GitHub Desktop.
Save ruairif/80102746320d0229a0ce to your computer and use it in GitHub Desktop.
Data processing for daft.ie
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import os\n",
"import re\n",
"\n",
"from datetime import datetime, timedelta\n",
"from itertools import chain\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import requests\n",
"\n",
"from IPython.display import Image"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>baths</th>\n",
" <th>beds</th>\n",
" <th>price</th>\n",
" <th>reduction</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>23189.000000</td>\n",
" <td>23189.000000</td>\n",
" <td>23189.000000</td>\n",
" <td>23189.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>111.385528</td>\n",
" <td>3.536979</td>\n",
" <td>252313.785976</td>\n",
" <td>10343.449135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>4520.472457</td>\n",
" <td>1.307110</td>\n",
" <td>278182.690482</td>\n",
" <td>254496.387148</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" <td>4450.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>125000.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>2.000000</td>\n",
" <td>3.000000</td>\n",
" <td>195000.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>3.000000</td>\n",
" <td>4.000000</td>\n",
" <td>295000.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>295000.000000</td>\n",
" <td>27.000000</td>\n",
" <td>10500000.000000</td>\n",
" <td>37615000.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" baths beds price reduction\n",
"count 23189.000000 23189.000000 23189.000000 23189.000000\n",
"mean 111.385528 3.536979 252313.785976 10343.449135\n",
"std 4520.472457 1.307110 278182.690482 254496.387148\n",
"min 0.000000 1.000000 4450.000000 0.000000\n",
"25% 1.000000 3.000000 125000.000000 0.000000\n",
"50% 2.000000 3.000000 195000.000000 0.000000\n",
"75% 3.000000 4.000000 295000.000000 0.000000\n",
"max 295000.000000 27.000000 10500000.000000 37615000.000000"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.read_csv('items_daft.ie.csv')\n",
"data.replace({'reduction': {float('NaN'): 0},\n",
" 'baths': {float('NaN'): 0}}, inplace=True)\n",
"# Remove unneeded fields\n",
"del data['_cached_page_id']\n",
"del data['_template']\n",
"del data['_type']\n",
"data.describe()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>baths</th>\n",
" <th>beds</th>\n",
" <th>ber</th>\n",
" <th>image</th>\n",
" <th>listed</th>\n",
" <th>location</th>\n",
" <th>price</th>\n",
" <th>reduction</th>\n",
" <th>type</th>\n",
" <th>url</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3145</th>\n",
" <td>12</td>\n",
" <td>12</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/MzAxOGIwMGUxODg4ZmE3NmRiN...</td>\n",
" <td>1440720000000</td>\n",
" <td>Marlfield House, Clonmel, Co. Tipperary</td>\n",
" <td>1575000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/tipperary/houses-for-sale/c...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6727</th>\n",
" <td>12</td>\n",
" <td>9</td>\n",
" <td>C2</td>\n",
" <td>http://m1.dmlimg.com/MWZlNTJkZjM5ZjRlMjE5NmE5Y...</td>\n",
" <td>1422921600000</td>\n",
" <td>Eagle Heights, Inishcrone, Co. Sligo</td>\n",
" <td>295000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/sligo/houses-for-sale/inish...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20822</th>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>SINo666of2006exempt</td>\n",
" <td>http://m1.dmlimg.com/MGYzNDU1NTc5ZWFkMTJjNjQ2M...</td>\n",
" <td>NaN</td>\n",
" <td>86 Ranelagh Road, Ranelagh, Dublin 6</td>\n",
" <td>950000</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/rane...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17125</th>\n",
" <td>13</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/MjM3ZjNjZWIxZGUyOGJlNDM5Y...</td>\n",
" <td>NaN</td>\n",
" <td>Cork Road, Waterford City, Co. Waterford</td>\n",
" <td>289000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/waterford/houses-for-sale/w...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14210</th>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" <td>B3</td>\n",
" <td>http://m1.dmlimg.com/OTcwMDM3OTlhOTc4OWJjNjMxY...</td>\n",
" <td>1409875200000</td>\n",
" <td>Ardilaun House, Gort Road, Ennis, Co. Clare</td>\n",
" <td>785000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/clare/houses-for-sale/ennis...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3184</th>\n",
" <td>14</td>\n",
" <td>12</td>\n",
" <td>NaN</td>\n",
" <td>http://m0.dmlimg.com/ZmFhNzRjYWJlMzZjNDQ4YWNkZ...</td>\n",
" <td>1430265600000</td>\n",
" <td>The Marlfield Estate, Marlfield, Clonmel, Co. ...</td>\n",
" <td>8000000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/tipperary/houses-for-sale/c...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21261</th>\n",
" <td>14</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/M2VjNTBjNTczYjVhY2U2N2E1N...</td>\n",
" <td>NaN</td>\n",
" <td>30-32 Botanic Court, Glasnevin, Dublin 9</td>\n",
" <td>1700000</td>\n",
" <td>0</td>\n",
" <td>Apartment for sale</td>\n",
" <td>http://www.daft.ie/dublin/apartments-for-sale/...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5779</th>\n",
" <td>14</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/M2M1NjNhMzFmZmNiNTQ4ZWEzM...</td>\n",
" <td>null</td>\n",
" <td>34-35 Upper Gardiner Street, Dublin 1</td>\n",
" <td>1500000</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/dubl...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14705</th>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/Yzc5MmVkZWU4OTJhYmQ5ZjQxM...</td>\n",
" <td>1233273600000</td>\n",
" <td>Hildan Country House, Rolestown, Swords, Co. D...</td>\n",
" <td>1800000</td>\n",
" <td>100000</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/swor...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20791</th>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m0.dmlimg.com/ZDMxNmMyYjkzZjE3MjUxZjMxO...</td>\n",
" <td>NaN</td>\n",
" <td>Tigh Fitz, Killeany, Inishmore, Co. Galway</td>\n",
" <td>800000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/galway/houses-for-sale/inis...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8471</th>\n",
" <td>15</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>http://m0.dmlimg.com/ZTEwZmU4YTI0MjNiYzg2MzEwY...</td>\n",
" <td>NaN</td>\n",
" <td>Maharees, Castlegregory, Co. Kerry</td>\n",
" <td>350000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/kerry/houses-for-sale/castl...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20561</th>\n",
" <td>15</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>15 Russell Downs, Russell Square, Tallaght, Du...</td>\n",
" <td>135000</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/tall...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1809</th>\n",
" <td>16</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/MzdiYjAyOTgxZTRkYmU3ZDZhZ...</td>\n",
" <td>1441065600000</td>\n",
" <td>Crosses Court, Spring Lane, Blackpool, Co. Cork</td>\n",
" <td>750000</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/cork/houses-for-sale/blackp...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14436</th>\n",
" <td>16</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m0.dmlimg.com/ZTViMTg4ZWFjODM3M2YwODM3Y...</td>\n",
" <td>1276128000000</td>\n",
" <td>Moyhill, Bunratty, Co. Clare</td>\n",
" <td>590000</td>\n",
" <td>40000</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/clare/houses-for-sale/bunra...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>489</th>\n",
" <td>16</td>\n",
" <td>15</td>\n",
" <td>C3</td>\n",
" <td>http://m1.dmlimg.com/YTM1MjIwM2ZmOTkxNTIyNGY5M...</td>\n",
" <td>NaN</td>\n",
" <td>Moyhill, Cratloe, Co. Clare</td>\n",
" <td>590000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/clare/houses-for-sale/cratl...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1846</th>\n",
" <td>16</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m0.dmlimg.com/ZjRkNzdkNzJlODY0YjVhYWE1O...</td>\n",
" <td>1269216000000</td>\n",
" <td>Ciuin House, Hartley, Carrick-on-Shannon, Co. ...</td>\n",
" <td>600000</td>\n",
" <td>80000</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/leitrim/houses-for-sale/car...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20097</th>\n",
" <td>18</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m0.dmlimg.com/NmI3ZDc3M2NlOTc2NDMwM2JiY...</td>\n",
" <td>1444953600000</td>\n",
" <td>29 &amp; 30 Great Charles St. North, Dublin 1</td>\n",
" <td>1590000</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/dubl...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>359</th>\n",
" <td>18</td>\n",
" <td>4</td>\n",
" <td>A2A3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Four Bed Semi Detached, Belarmine Woods, Stepa...</td>\n",
" <td>485000</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/step...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2473</th>\n",
" <td>18</td>\n",
" <td>15</td>\n",
" <td>B2</td>\n",
" <td>http://m1.dmlimg.com/MjBjYTI5ZWM1NzVkZmMzOWQxY...</td>\n",
" <td>1421798400000</td>\n",
" <td>Coral Gables, Coral Gables, Tagoat, Rosslare H...</td>\n",
" <td>400000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/wexford/houses-for-sale/ros...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>174</th>\n",
" <td>18</td>\n",
" <td>3</td>\n",
" <td>E2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>18 Corny Ring Terrace, Dromina, Co. Cork</td>\n",
" <td>45000</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/cork/houses-for-sale/dromin...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19261</th>\n",
" <td>21</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/MjhkMjBkZjVjNTAyOGUyYzkxM...</td>\n",
" <td>1443052800000</td>\n",
" <td>Rossaveal Holiday Cottages, Rossaveel, Co. Galway</td>\n",
" <td>1000000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/galway/houses-for-sale/ross...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8584</th>\n",
" <td>22</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>http://m0.dmlimg.com/ZDBkMjc0NDE0MDFhNjQwM2VlN...</td>\n",
" <td>null</td>\n",
" <td>The Glen Hotel, Glen of Aherlow, Glen of Aherl...</td>\n",
" <td>200000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/tipperary/houses-for-sale/g...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10789</th>\n",
" <td>25</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/MGY2MzIzMjZlMmJmYjg3OWU1N...</td>\n",
" <td>NaN</td>\n",
" <td>Slieve Anore, Flagmount, Co. Clare</td>\n",
" <td>49000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/clare/houses-for-sale/flagm...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4241</th>\n",
" <td>27</td>\n",
" <td>4</td>\n",
" <td>D1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>27 Gleann Rua, Renmore, Co. Galway</td>\n",
" <td>179000</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/galway/houses-for-sale/renm...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2257</th>\n",
" <td>30</td>\n",
" <td>3</td>\n",
" <td>D1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>30 O Connell Avenue, Listowel, Co. Kerry</td>\n",
" <td>14950</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/kerry/houses-for-sale/listo...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6982</th>\n",
" <td>40</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>http://m1.dmlimg.com/MWRlYzhkZTg2OWM3ODMzNTAwZ...</td>\n",
" <td>1414972800000</td>\n",
" <td>The Square, Clifden, Co. Galway</td>\n",
" <td>385000</td>\n",
" <td>100000</td>\n",
" <td>Townhouse</td>\n",
" <td>http://www.daft.ie/galway/houses-for-sale/clif...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18018</th>\n",
" <td>58</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>58 Levmoss Avenue, Levmoss &amp; Mimosa, The Gallo...</td>\n",
" <td>520000</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/carr...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18057</th>\n",
" <td>67</td>\n",
" <td>5</td>\n",
" <td>B3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>67 Levmoss Avenue, Levmoss &amp; Mimosa, The Gallo...</td>\n",
" <td>550000</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/carr...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16928</th>\n",
" <td>67</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>67 Tegan Court, Screggan, Tullamore, Co. Offaly</td>\n",
" <td>130000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/offaly/houses-for-sale/tull...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13299</th>\n",
" <td>80</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>80 Rockbrook Lawn, Mallow, Co. Cork</td>\n",
" <td>340000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/cork/houses-for-sale/mallow...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18169</th>\n",
" <td>83</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>83A Alderwood, Carrickmacross, Co. Monaghan</td>\n",
" <td>200000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/monaghan/houses-for-sale/ca...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16049</th>\n",
" <td>87</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>87 Aughnaskerry Drive, Cavan, Co. Cavan</td>\n",
" <td>69950</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/cavan/houses-for-sale/cavan...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13745</th>\n",
" <td>154</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>154 Elton Court, Leixlip, Co. Kildare</td>\n",
" <td>279950</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/kildare/houses-for-sale/lei...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2193</th>\n",
" <td>19000</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Fineurbeg, Mullagh, Co. Clare</td>\n",
" <td>79000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/clare/houses-for-sale/mulla...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18340</th>\n",
" <td>20000</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Cloongullane, Swinford, Co. Mayo</td>\n",
" <td>35000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/mayo/houses-for-sale/swinfo...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12247</th>\n",
" <td>35000</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Killaniv Dispensary, Kilmaley, Co. Clare</td>\n",
" <td>37500</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/clare/houses-for-sale/kilma...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9145</th>\n",
" <td>45000</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Cavan Rd, Ballinagh, Co. Cavan</td>\n",
" <td>40000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/cavan/houses-for-sale/balli...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12964</th>\n",
" <td>115000</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Cloonaghboy, Swinford, Co. Mayo</td>\n",
" <td>25000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/mayo/houses-for-sale/swinfo...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12168</th>\n",
" <td>140000</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Abbeyknockmoy, Tuam, Abbeyknockmoy, Co. Galway</td>\n",
" <td>70000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/galway/houses-for-sale/abbe...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13010</th>\n",
" <td>160000</td>\n",
" <td>1</td>\n",
" <td>SINo666of2006exempt</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Old School House, Old Grange, Narraghmore, Co....</td>\n",
" <td>50000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/kildare/houses-for-sale/nar...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8108</th>\n",
" <td>174999</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Lavey, Charlestown, Co. Mayo</td>\n",
" <td>99000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/mayo/houses-for-sale/charle...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2728</th>\n",
" <td>175000</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Medebawn, Avenue Road, Dundalk, Co. Louth</td>\n",
" <td>220000</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/louth/houses-for-sale/dunda...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4023</th>\n",
" <td>175000</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Garrafine, Castleblakeney, Co. Galway</td>\n",
" <td>185000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/galway/houses-for-sale/cast...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5315</th>\n",
" <td>179000</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Church Street, Cloyne, Co. Cork</td>\n",
" <td>100000</td>\n",
" <td>0</td>\n",
" <td>Terraced House</td>\n",
" <td>http://www.daft.ie/cork/houses-for-sale/cloyne...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>148</th>\n",
" <td>180000</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Kilkieran, Kilkieran, Co. Galway</td>\n",
" <td>99000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/galway/houses-for-sale/kilk...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8826</th>\n",
" <td>195000</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Trimblestown, Kildalkey, Co. Meath</td>\n",
" <td>350000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/meath/houses-for-sale/kilda...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>242</th>\n",
" <td>200000</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Shamrock Cottage, Glenbrohane, Ballylanders, C...</td>\n",
" <td>55000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/limerick/houses-for-sale/ba...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10854</th>\n",
" <td>210000</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Leam, Kilflynn, Co. Kerry</td>\n",
" <td>90000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/kerry/houses-for-sale/kilfl...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4952</th>\n",
" <td>215000</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Ardrahan, Ardfert, Co. Kerry</td>\n",
" <td>80000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/kerry/houses-for-sale/ardfe...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13444</th>\n",
" <td>295000</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Snugboro, Castlebar, Co. Mayo</td>\n",
" <td>120000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/mayo/houses-for-sale/castle...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" baths beds ber \\\n",
"3145 12 12 NaN \n",
"6727 12 9 C2 \n",
"20822 13 13 SINo666of2006exempt \n",
"17125 13 11 NaN \n",
"14210 13 13 B3 \n",
"3184 14 12 NaN \n",
"21261 14 15 NaN \n",
"5779 14 15 NaN \n",
"14705 15 15 NaN \n",
"20791 15 15 NaN \n",
"8471 15 13 NaN \n",
"20561 15 3 NaN \n",
"1809 16 15 NaN \n",
"14436 16 15 NaN \n",
"489 16 15 C3 \n",
"1846 16 15 NaN \n",
"20097 18 15 NaN \n",
"359 18 4 A2A3 \n",
"2473 18 15 B2 \n",
"174 18 3 E2 \n",
"19261 21 15 NaN \n",
"8584 22 15 NaN \n",
"10789 25 1 NaN \n",
"4241 27 4 D1 \n",
"2257 30 3 D1 \n",
"6982 40 3 NaN \n",
"18018 58 5 NaN \n",
"18057 67 5 B3 \n",
"16928 67 5 NaN \n",
"13299 80 5 NaN \n",
"18169 83 4 NaN \n",
"16049 87 3 NaN \n",
"13745 154 3 NaN \n",
"2193 19000 4 NaN \n",
"18340 20000 1 NaN \n",
"12247 35000 2 NaN \n",
"9145 45000 2 NaN \n",
"12964 115000 1 NaN \n",
"12168 140000 4 NaN \n",
"13010 160000 1 SINo666of2006exempt \n",
"8108 174999 2 NaN \n",
"2728 175000 3 NaN \n",
"4023 175000 5 NaN \n",
"5315 179000 4 NaN \n",
"148 180000 2 NaN \n",
"8826 195000 5 NaN \n",
"242 200000 1 NaN \n",
"10854 210000 3 NaN \n",
"4952 215000 2 NaN \n",
"13444 295000 2 NaN \n",
"\n",
" image listed \\\n",
"3145 http://m1.dmlimg.com/MzAxOGIwMGUxODg4ZmE3NmRiN... 1440720000000 \n",
"6727 http://m1.dmlimg.com/MWZlNTJkZjM5ZjRlMjE5NmE5Y... 1422921600000 \n",
"20822 http://m1.dmlimg.com/MGYzNDU1NTc5ZWFkMTJjNjQ2M... NaN \n",
"17125 http://m1.dmlimg.com/MjM3ZjNjZWIxZGUyOGJlNDM5Y... NaN \n",
"14210 http://m1.dmlimg.com/OTcwMDM3OTlhOTc4OWJjNjMxY... 1409875200000 \n",
"3184 http://m0.dmlimg.com/ZmFhNzRjYWJlMzZjNDQ4YWNkZ... 1430265600000 \n",
"21261 http://m1.dmlimg.com/M2VjNTBjNTczYjVhY2U2N2E1N... NaN \n",
"5779 http://m1.dmlimg.com/M2M1NjNhMzFmZmNiNTQ4ZWEzM... null \n",
"14705 http://m1.dmlimg.com/Yzc5MmVkZWU4OTJhYmQ5ZjQxM... 1233273600000 \n",
"20791 http://m0.dmlimg.com/ZDMxNmMyYjkzZjE3MjUxZjMxO... NaN \n",
"8471 http://m0.dmlimg.com/ZTEwZmU4YTI0MjNiYzg2MzEwY... NaN \n",
"20561 NaN NaN \n",
"1809 http://m1.dmlimg.com/MzdiYjAyOTgxZTRkYmU3ZDZhZ... 1441065600000 \n",
"14436 http://m0.dmlimg.com/ZTViMTg4ZWFjODM3M2YwODM3Y... 1276128000000 \n",
"489 http://m1.dmlimg.com/YTM1MjIwM2ZmOTkxNTIyNGY5M... NaN \n",
"1846 http://m0.dmlimg.com/ZjRkNzdkNzJlODY0YjVhYWE1O... 1269216000000 \n",
"20097 http://m0.dmlimg.com/NmI3ZDc3M2NlOTc2NDMwM2JiY... 1444953600000 \n",
"359 NaN NaN \n",
"2473 http://m1.dmlimg.com/MjBjYTI5ZWM1NzVkZmMzOWQxY... 1421798400000 \n",
"174 NaN NaN \n",
"19261 http://m1.dmlimg.com/MjhkMjBkZjVjNTAyOGUyYzkxM... 1443052800000 \n",
"8584 http://m0.dmlimg.com/ZDBkMjc0NDE0MDFhNjQwM2VlN... null \n",
"10789 http://m1.dmlimg.com/MGY2MzIzMjZlMmJmYjg3OWU1N... NaN \n",
"4241 NaN NaN \n",
"2257 NaN NaN \n",
"6982 http://m1.dmlimg.com/MWRlYzhkZTg2OWM3ODMzNTAwZ... 1414972800000 \n",
"18018 NaN NaN \n",
"18057 NaN NaN \n",
"16928 NaN NaN \n",
"13299 NaN NaN \n",
"18169 NaN NaN \n",
"16049 NaN NaN \n",
"13745 NaN NaN \n",
"2193 NaN NaN \n",
"18340 NaN NaN \n",
"12247 NaN NaN \n",
"9145 NaN NaN \n",
"12964 NaN NaN \n",
"12168 NaN NaN \n",
"13010 NaN NaN \n",
"8108 NaN NaN \n",
"2728 NaN NaN \n",
"4023 NaN NaN \n",
"5315 NaN NaN \n",
"148 NaN NaN \n",
"8826 NaN NaN \n",
"242 NaN NaN \n",
"10854 NaN NaN \n",
"4952 NaN NaN \n",
"13444 NaN NaN \n",
"\n",
" location price reduction \\\n",
"3145 Marlfield House, Clonmel, Co. Tipperary 1575000 0 \n",
"6727 Eagle Heights, Inishcrone, Co. Sligo 295000 0 \n",
"20822 86 Ranelagh Road, Ranelagh, Dublin 6 950000 0 \n",
"17125 Cork Road, Waterford City, Co. Waterford 289000 0 \n",
"14210 Ardilaun House, Gort Road, Ennis, Co. Clare 785000 0 \n",
"3184 The Marlfield Estate, Marlfield, Clonmel, Co. ... 8000000 0 \n",
"21261 30-32 Botanic Court, Glasnevin, Dublin 9 1700000 0 \n",
"5779 34-35 Upper Gardiner Street, Dublin 1 1500000 0 \n",
"14705 Hildan Country House, Rolestown, Swords, Co. D... 1800000 100000 \n",
"20791 Tigh Fitz, Killeany, Inishmore, Co. Galway 800000 0 \n",
"8471 Maharees, Castlegregory, Co. Kerry 350000 0 \n",
"20561 15 Russell Downs, Russell Square, Tallaght, Du... 135000 0 \n",
"1809 Crosses Court, Spring Lane, Blackpool, Co. Cork 750000 0 \n",
"14436 Moyhill, Bunratty, Co. Clare 590000 40000 \n",
"489 Moyhill, Cratloe, Co. Clare 590000 0 \n",
"1846 Ciuin House, Hartley, Carrick-on-Shannon, Co. ... 600000 80000 \n",
"20097 29 & 30 Great Charles St. North, Dublin 1 1590000 0 \n",
"359 Four Bed Semi Detached, Belarmine Woods, Stepa... 485000 0 \n",
"2473 Coral Gables, Coral Gables, Tagoat, Rosslare H... 400000 0 \n",
"174 18 Corny Ring Terrace, Dromina, Co. Cork 45000 0 \n",
"19261 Rossaveal Holiday Cottages, Rossaveel, Co. Galway 1000000 0 \n",
"8584 The Glen Hotel, Glen of Aherlow, Glen of Aherl... 200000 0 \n",
"10789 Slieve Anore, Flagmount, Co. Clare 49000 0 \n",
"4241 27 Gleann Rua, Renmore, Co. Galway 179000 0 \n",
"2257 30 O Connell Avenue, Listowel, Co. Kerry 14950 0 \n",
"6982 The Square, Clifden, Co. Galway 385000 100000 \n",
"18018 58 Levmoss Avenue, Levmoss & Mimosa, The Gallo... 520000 0 \n",
"18057 67 Levmoss Avenue, Levmoss & Mimosa, The Gallo... 550000 0 \n",
"16928 67 Tegan Court, Screggan, Tullamore, Co. Offaly 130000 0 \n",
"13299 80 Rockbrook Lawn, Mallow, Co. Cork 340000 0 \n",
"18169 83A Alderwood, Carrickmacross, Co. Monaghan 200000 0 \n",
"16049 87 Aughnaskerry Drive, Cavan, Co. Cavan 69950 0 \n",
"13745 154 Elton Court, Leixlip, Co. Kildare 279950 0 \n",
"2193 Fineurbeg, Mullagh, Co. Clare 79000 0 \n",
"18340 Cloongullane, Swinford, Co. Mayo 35000 0 \n",
"12247 Killaniv Dispensary, Kilmaley, Co. Clare 37500 0 \n",
"9145 Cavan Rd, Ballinagh, Co. Cavan 40000 0 \n",
"12964 Cloonaghboy, Swinford, Co. Mayo 25000 0 \n",
"12168 Abbeyknockmoy, Tuam, Abbeyknockmoy, Co. Galway 70000 0 \n",
"13010 Old School House, Old Grange, Narraghmore, Co.... 50000 0 \n",
"8108 Lavey, Charlestown, Co. Mayo 99000 0 \n",
"2728 Medebawn, Avenue Road, Dundalk, Co. Louth 220000 0 \n",
"4023 Garrafine, Castleblakeney, Co. Galway 185000 0 \n",
"5315 Church Street, Cloyne, Co. Cork 100000 0 \n",
"148 Kilkieran, Kilkieran, Co. Galway 99000 0 \n",
"8826 Trimblestown, Kildalkey, Co. Meath 350000 0 \n",
"242 Shamrock Cottage, Glenbrohane, Ballylanders, C... 55000 0 \n",
"10854 Leam, Kilflynn, Co. Kerry 90000 0 \n",
"4952 Ardrahan, Ardfert, Co. Kerry 80000 0 \n",
"13444 Snugboro, Castlebar, Co. Mayo 120000 0 \n",
"\n",
" type url \n",
"3145 Detached House http://www.daft.ie/tipperary/houses-for-sale/c... \n",
"6727 Detached House http://www.daft.ie/sligo/houses-for-sale/inish... \n",
"20822 Terraced House http://www.daft.ie/dublin/houses-for-sale/rane... \n",
"17125 Detached House http://www.daft.ie/waterford/houses-for-sale/w... \n",
"14210 Detached House http://www.daft.ie/clare/houses-for-sale/ennis... \n",
"3184 Detached House http://www.daft.ie/tipperary/houses-for-sale/c... \n",
"21261 Apartment for sale http://www.daft.ie/dublin/apartments-for-sale/... \n",
"5779 Semi-Detached House http://www.daft.ie/dublin/houses-for-sale/dubl... \n",
"14705 Detached House http://www.daft.ie/dublin/houses-for-sale/swor... \n",
"20791 Detached House http://www.daft.ie/galway/houses-for-sale/inis... \n",
"8471 Detached House http://www.daft.ie/kerry/houses-for-sale/castl... \n",
"20561 Terraced House http://www.daft.ie/dublin/houses-for-sale/tall... \n",
"1809 Terraced House http://www.daft.ie/cork/houses-for-sale/blackp... \n",
"14436 Detached House http://www.daft.ie/clare/houses-for-sale/bunra... \n",
"489 Detached House http://www.daft.ie/clare/houses-for-sale/cratl... \n",
"1846 Detached House http://www.daft.ie/leitrim/houses-for-sale/car... \n",
"20097 Terraced House http://www.daft.ie/dublin/houses-for-sale/dubl... \n",
"359 Semi-Detached House http://www.daft.ie/dublin/houses-for-sale/step... \n",
"2473 Detached House http://www.daft.ie/wexford/houses-for-sale/ros... \n",
"174 Semi-Detached House http://www.daft.ie/cork/houses-for-sale/dromin... \n",
"19261 Detached House http://www.daft.ie/galway/houses-for-sale/ross... \n",
"8584 Detached House http://www.daft.ie/tipperary/houses-for-sale/g... \n",
"10789 Detached House http://www.daft.ie/clare/houses-for-sale/flagm... \n",
"4241 Semi-Detached House http://www.daft.ie/galway/houses-for-sale/renm... \n",
"2257 Terraced House http://www.daft.ie/kerry/houses-for-sale/listo... \n",
"6982 Townhouse http://www.daft.ie/galway/houses-for-sale/clif... \n",
"18018 Terraced House http://www.daft.ie/dublin/houses-for-sale/carr... \n",
"18057 Terraced House http://www.daft.ie/dublin/houses-for-sale/carr... \n",
"16928 Detached House http://www.daft.ie/offaly/houses-for-sale/tull... \n",
"13299 Detached House http://www.daft.ie/cork/houses-for-sale/mallow... \n",
"18169 Detached House http://www.daft.ie/monaghan/houses-for-sale/ca... \n",
"16049 Semi-Detached House http://www.daft.ie/cavan/houses-for-sale/cavan... \n",
"13745 Semi-Detached House http://www.daft.ie/kildare/houses-for-sale/lei... \n",
"2193 Detached House http://www.daft.ie/clare/houses-for-sale/mulla... \n",
"18340 Detached House http://www.daft.ie/mayo/houses-for-sale/swinfo... \n",
"12247 Detached House http://www.daft.ie/clare/houses-for-sale/kilma... \n",
"9145 Detached House http://www.daft.ie/cavan/houses-for-sale/balli... \n",
"12964 Detached House http://www.daft.ie/mayo/houses-for-sale/swinfo... \n",
"12168 Detached House http://www.daft.ie/galway/houses-for-sale/abbe... \n",
"13010 Detached House http://www.daft.ie/kildare/houses-for-sale/nar... \n",
"8108 Detached House http://www.daft.ie/mayo/houses-for-sale/charle... \n",
"2728 Semi-Detached House http://www.daft.ie/louth/houses-for-sale/dunda... \n",
"4023 Detached House http://www.daft.ie/galway/houses-for-sale/cast... \n",
"5315 Terraced House http://www.daft.ie/cork/houses-for-sale/cloyne... \n",
"148 Detached House http://www.daft.ie/galway/houses-for-sale/kilk... \n",
"8826 Detached House http://www.daft.ie/meath/houses-for-sale/kilda... \n",
"242 Detached House http://www.daft.ie/limerick/houses-for-sale/ba... \n",
"10854 Detached House http://www.daft.ie/kerry/houses-for-sale/kilfl... \n",
"4952 Detached House http://www.daft.ie/kerry/houses-for-sale/ardfe... \n",
"13444 Detached House http://www.daft.ie/mayo/houses-for-sale/castle... "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.sort_values(by='baths').tail(50)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>baths</th>\n",
" <th>beds</th>\n",
" <th>price</th>\n",
" <th>reduction</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>23036.000000</td>\n",
" <td>23036.000000</td>\n",
" <td>23036.000000</td>\n",
" <td>23036.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>2.081004</td>\n",
" <td>3.506121</td>\n",
" <td>249760.706416</td>\n",
" <td>10179.772617</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>1.178691</td>\n",
" <td>1.219766</td>\n",
" <td>269262.814280</td>\n",
" <td>254435.210433</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" <td>4450.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>125000.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>2.000000</td>\n",
" <td>3.000000</td>\n",
" <td>195000.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>3.000000</td>\n",
" <td>4.000000</td>\n",
" <td>295000.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>7.000000</td>\n",
" <td>27.000000</td>\n",
" <td>10500000.000000</td>\n",
" <td>37615000.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" baths beds price reduction\n",
"count 23036.000000 23036.000000 23036.000000 23036.000000\n",
"mean 2.081004 3.506121 249760.706416 10179.772617\n",
"std 1.178691 1.219766 269262.814280 254435.210433\n",
"min 0.000000 1.000000 4450.000000 0.000000\n",
"25% 1.000000 3.000000 125000.000000 0.000000\n",
"50% 2.000000 3.000000 195000.000000 0.000000\n",
"75% 3.000000 4.000000 295000.000000 0.000000\n",
"max 7.000000 27.000000 10500000.000000 37615000.000000"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = data.ix[data.baths < 8]\n",
"data.describe()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{'Apartment for sale',\n",
" 'Apr 20, 2015 POA',\n",
" 'Bungalow for sale',\n",
" 'Detached House',\n",
" 'End of Terrace House',\n",
" 'House for sale',\n",
" 'Nov 06, 2013 POA',\n",
" 'Semi-Detached House',\n",
" 'Sep 11, 2014 \\xe2\\x82\\xac309,000',\n",
" 'Site For Sale 1 Photo Sending Reply Send message Or call: 01 9014249 Save this ad Share with a friend Print this page Report this ad Overview Map View Other properties from this agent Overview Property Overview: For Sale by Private Treaty Property Description: Bakers Fishery comprises just over one mile of double bank fishing above and below the bridge at Foxford and comprises a total of eleven named pools of very high quality fishing with an extension run of salmon. Situated above and below the town of Foxford. This fishery has been developed during the past five years as the most interesting fly fishery on the lower Moy. Unlike the rest of the lower river, which tends to be slow water, the Foxford Rocks has a very considerable gradient and a good flow throughout the beat. New pools have been expertly designed and made to accentuate this and to allow the fly to fish realistically with minimal assistance. It is an exciting stretch to fish, although not at all difficult, particularly in the lowest two pools. The water above the bridge is streamy with rocks and boulders providing natural lies. It is a mixture of wading and bank fishing. Immediately below the bridge is the Flag, a notorious holding pool just above the eel weirs. It is exciting water to fish, best in lower water when the fisherman can wade the length of it with many choices of cast over good lies. The tail consists of several rapid flowing channels. Immediately below the eel weir is a pool which is the widest on the beat (50 yards). This fishes well from either bank or from the base of the old weirs. The Ford pool below this, which is on the site of the place where there used to be a river crossing, fishes best from the East bank. It is separated from the pool above by a dam of natural rock. The water at the head of the pool is rapid and broken and is a very good place to catch running fish as they pause before the obstacle. The central section features a deep run on the West side and a gently sloping beach on the East. There are large boulders on the riverbed, behind which fish hold in all heights of water. At the tail fish lie in shoals just above the next obstacle, another rocky weir. Below this is a very exciting pool with a torrential flow at the head, flattening out into a gentle curve with deep holding water at the tail. Fishing in the lower pools is not adversely affected by water height to the same degree as much of the river. The fly is always the preferred option although spinning is sometimes allowed in certain conditions or when the water is above a marker. There is a permanent gillie who is able to give tuition to the beginner and will be on hand throughout the day to give advice and guidance. DIRECTIONS: Parking is very easy at either end of the beat and the fisherman is always in easy reach of his car. Daft Property Shortcode: http://www.daft.ie/11088064 Date Entered/Renewed: 21/10/2015 (today, 11 hours ago) Property Views: 4,083 Show on Map Map Map',\n",
" 'Studio apartment for sale',\n",
" 'Terraced House',\n",
" 'Townhouse',\n",
" '\\xc2\\xa35,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac1,000 Apartment for sale',\n",
" '\\xe2\\x82\\xac1,000 Detached House',\n",
" '\\xe2\\x82\\xac1,000 Terraced House',\n",
" '\\xe2\\x82\\xac10,000 Apartment for sale',\n",
" '\\xe2\\x82\\xac10,000 Detached House',\n",
" '\\xe2\\x82\\xac10,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac10,000 Terraced House',\n",
" '\\xe2\\x82\\xac10,500 Detached House',\n",
" '\\xe2\\x82\\xac100,000 Detached House',\n",
" '\\xe2\\x82\\xac11,000 Detached House',\n",
" '\\xe2\\x82\\xac11,000 Townhouse',\n",
" '\\xe2\\x82\\xac13,000 Detached House',\n",
" '\\xe2\\x82\\xac130,500 Detached House',\n",
" '\\xe2\\x82\\xac140,000 Detached House',\n",
" '\\xe2\\x82\\xac15,000 Detached House',\n",
" '\\xe2\\x82\\xac15,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac15,000 Terraced House',\n",
" '\\xe2\\x82\\xac15,500 Detached House',\n",
" '\\xe2\\x82\\xac150,000 Detached House',\n",
" '\\xe2\\x82\\xac150,000 Terraced House',\n",
" '\\xe2\\x82\\xac175,000 Detached House',\n",
" '\\xe2\\x82\\xac2,000 Apartment for sale',\n",
" '\\xe2\\x82\\xac2,500 Detached House',\n",
" '\\xe2\\x82\\xac2,950 Detached House',\n",
" '\\xe2\\x82\\xac20,000 Detached House',\n",
" '\\xe2\\x82\\xac20,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac24,000 Detached House',\n",
" '\\xe2\\x82\\xac25,000 Detached House',\n",
" '\\xe2\\x82\\xac25,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac27,000 Detached House',\n",
" '\\xe2\\x82\\xac3,000 Detached House',\n",
" '\\xe2\\x82\\xac30,000 Detached House',\n",
" '\\xe2\\x82\\xac30,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac35,000 Apartment for sale',\n",
" '\\xe2\\x82\\xac35,000 Detached House',\n",
" '\\xe2\\x82\\xac39,000 Detached House',\n",
" '\\xe2\\x82\\xac4,000 Detached House',\n",
" '\\xe2\\x82\\xac4,500 Detached House',\n",
" '\\xe2\\x82\\xac40,000 Detached House',\n",
" '\\xe2\\x82\\xac40,000 Townhouse',\n",
" '\\xe2\\x82\\xac420,000 Detached House',\n",
" '\\xe2\\x82\\xac43,000 Detached House',\n",
" '\\xe2\\x82\\xac44,000 Detached House',\n",
" '\\xe2\\x82\\xac450,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac48,000 Detached House',\n",
" '\\xe2\\x82\\xac5,000 Detached House',\n",
" '\\xe2\\x82\\xac5,000 End of Terrace House',\n",
" '\\xe2\\x82\\xac5,000 Semi-Detached House',\n",
" '\\xe2\\x82\\xac5,500 Detached House',\n",
" '\\xe2\\x82\\xac50,000 Detached House',\n",
" '\\xe2\\x82\\xac50,000 Terraced House',\n",
" '\\xe2\\x82\\xac55,000 Detached House',\n",
" '\\xe2\\x82\\xac7,500 Detached House',\n",
" '\\xe2\\x82\\xac70,000 Detached House',\n",
" '\\xe2\\x82\\xac8,000 Detached House',\n",
" '\\xe2\\x82\\xac8,500 Semi-Detached House',\n",
" '\\xe2\\x82\\xac9,000 Detached House',\n",
" '\\xe2\\x82\\xac90,000 Semi-Detached House'}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(data['type'])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Loading cached\n"
]
}
],
"source": [
"# Convert timestamp to datetime\n",
"now = datetime.now()\n",
"def parse_dates(x):\n",
" try:\n",
" return datetime.fromtimestamp(int(x)/1000)\n",
" except ValueError:\n",
" return now\n",
"\n",
"# Convert letter representation of BER to number\n",
"BER = {'A1': 100, 'A2': 90, 'A3': 85, 'B1': 80, 'B2': 75, 'B3': 70,\n",
" 'C1': 65, 'C2': 60, 'C3': 55, 'D1': 50, 'D2': 45, 'D3': 40,\n",
" 'E': 35, 'F': 30, 'G': 25}\n",
"ber_convert = lambda x: BER.get(str(x).strip()[:2], -1)\n",
"\n",
"# Clean house types\n",
"_REMOVE_CHARACTERS = re.compile('[^a-zA-Z\\s\\-]*')\n",
"def type_convert(typ):\n",
" res = _REMOVE_CHARACTERS.sub('', ' '.join(typ.rsplit(' ')[-3:])).strip()\n",
" lower = res.lower()\n",
" if 'house' not in lower and 'apartment' not in lower:\n",
" return None\n",
" if res.startswith('of'):\n",
" res = res[3:]\n",
" return res.title().replace('Terrace ', 'Terraced ')\n",
"\n",
"# Clean house location\n",
"LOCATION_STOPWORDS = ['bed', 'detached', 'home', 'apartment']\n",
"def location_convert(loc):\n",
" loc = loc.split(',')\n",
" if any(stopword in loc[0].lower() for stopword in LOCATION_STOPWORDS):\n",
" loc = loc[1:]\n",
" joined = ', '.join(loc).strip()\n",
" if '-' in joined:\n",
" split = joined.split('-', 1)\n",
" if split[0] > split[-1]:\n",
" joined = split[0]\n",
" else:\n",
" joined = split[-1]\n",
" if 'ireland' not in joined.lower():\n",
" joined += ', Ireland'\n",
" return joined.replace('\"', '')\n",
"\n",
"if os.path.exists('items_daft.ie_processed.csv'):\n",
" # Load pre-processed data\n",
" print('Loading cached')\n",
" properties = pd.read_csv('items_daft.ie_processed.csv',\n",
" parse_dates=['listed'],\n",
" infer_datetime_format=True)\n",
"else:\n",
" # Load and process fields\n",
" print('Processing')\n",
" properties = pd.read_csv('items_daft.ie.csv',\n",
" parse_dates=['listed'],\n",
" date_parser=parse_dates,\n",
" converters={'ber': ber_convert,\n",
" 'type': type_convert,\n",
" 'location': location_convert})\n",
"\n",
" # Clean up missing values got baths and price reduction\n",
" properties.replace({'reduction': {float('NaN'): 0},\n",
" 'baths': {float('NaN'): 0}}, inplace=True)\n",
"\n",
"\n",
" # Add bounds checking for beds, baths, reduction and price\n",
" properties = properties.ix[properties.beds < 12]\n",
" properties = properties.ix[properties.baths < 8]\n",
" properties = properties.ix[properties.price < 8000000]\n",
" properties = properties.ix[properties.reduction < 100000]\n",
"\n",
" # Remove unneeded fields\n",
" del properties['_cached_page_id']\n",
" del properties['_template']\n",
" del properties['_type']\n",
" \n",
" # Geocode location data using MapQuest API\n",
" APIKEY = os.environ.get('MAPQUEST_APIKEY')\n",
" baseurl = 'http://www.mapquestapi.com/geocoding/v1/batch?key={}&'.format(APIKEY)\n",
" values = range(0, len(properties) + 100, 100)\n",
" lat = pd.Series([None for _ in xrange(len(properties))], index=properties.index)\n",
" lng = pd.Series([None for _ in xrange(len(properties))], index=properties.index)\n",
" while values:\n",
" n = values.pop(0)\n",
" try:\n",
" r = requests.get(baseurl+'&'.join('location=%s' % v for v in properties['location'][n:n+100].values))\n",
" for i, data in enumerate(r.json().get('results', [{}]*100), start=n):\n",
" irish_locations = filter(lambda p: p.get('adminArea1') == 'IE', data.get('locations', []))\n",
" lat_lng = {}\n",
" if irish_locations:\n",
" lat_lng = irish_locations[0].get('latLng', {})\n",
" lat[i] = lat_lng.get('lat')\n",
" lng[i] = lat_lng.get('lng')\n",
" except Exception as exc:\n",
" print('E %s, %s' % (n, exc))\n",
" values.append(n)\n",
" properties.loc[:, 'lat'] = lat\n",
" properties.loc[:, 'lng'] = lng\n",
" properties.to_csv('items_daft.ie_processed.csv')\n",
" \n",
"\n",
"# Create datetime index with listing date\n",
"idx = pd.DatetimeIndex(properties['listed'])\n",
"properties['listed'] = idx.date.astype('datetime64')\n",
"properties.set_index(['listed'], inplace=True)\n",
"if 'Unnamed: 0' in properties:\n",
" del properties['Unnamed: 0']"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>baths</th>\n",
" <th>beds</th>\n",
" <th>ber</th>\n",
" <th>image</th>\n",
" <th>location</th>\n",
" <th>price</th>\n",
" <th>reduction</th>\n",
" <th>type</th>\n",
" <th>url</th>\n",
" <th>lat</th>\n",
" <th>lng</th>\n",
" </tr>\n",
" <tr>\n",
" <th>listed</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2015-10-22</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>85</td>\n",
" <td>http://m1.dmlimg.com/YjMzZDc4YTU2MmJhMTU5MDAyY...</td>\n",
" <td>Hamilton Park, Castleknock, Dublin 15, Ireland</td>\n",
" <td>395000</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/cast...</td>\n",
" <td>53.375767</td>\n",
" <td>-6.243693</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-09-02</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>70</td>\n",
" <td>http://m0.dmlimg.com/NDY3NTU1YjYxZDllZDI4OTljZ...</td>\n",
" <td>Drumcavan, Dysart, Ennis, Co. Clare, Ireland</td>\n",
" <td>369000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/clare/houses-for-sale/ennis...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-10-22</th>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>50</td>\n",
" <td>http://m1.dmlimg.com/ODdmYWIyZWQyYzVhM2IxMGJjO...</td>\n",
" <td>34 Laoi na Mara, Dunmore East, Waterford Cit...</td>\n",
" <td>260000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/waterford/houses-for-sale/w...</td>\n",
" <td>52.254852</td>\n",
" <td>-7.108358</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-10-22</th>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>45</td>\n",
" <td>http://m1.dmlimg.com/MGQ1YTIwNTc3MmZhYTVhOGIyZ...</td>\n",
" <td>41 South Park, Foxrock, Dublin 18, Ireland</td>\n",
" <td>625000</td>\n",
" <td>0</td>\n",
" <td>Semi-Detached House</td>\n",
" <td>http://www.daft.ie/dublin/houses-for-sale/foxr...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2015-10-22</th>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>55</td>\n",
" <td>http://m0.dmlimg.com/NWQ4MTM0MDZiMTViMzg1YWMxN...</td>\n",
" <td>Parsonstown, Carbury, Co. Kildare, Ireland</td>\n",
" <td>169000</td>\n",
" <td>0</td>\n",
" <td>Detached House</td>\n",
" <td>http://www.daft.ie/kildare/houses-for-sale/car...</td>\n",
" <td>53.343675</td>\n",
" <td>-6.911611</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" baths beds ber \\\n",
"listed \n",
"2015-10-22 0 3 85 \n",
"2015-09-02 4 4 70 \n",
"2015-10-22 2 4 50 \n",
"2015-10-22 2 4 45 \n",
"2015-10-22 2 3 55 \n",
"\n",
" image \\\n",
"listed \n",
"2015-10-22 http://m1.dmlimg.com/YjMzZDc4YTU2MmJhMTU5MDAyY... \n",
"2015-09-02 http://m0.dmlimg.com/NDY3NTU1YjYxZDllZDI4OTljZ... \n",
"2015-10-22 http://m1.dmlimg.com/ODdmYWIyZWQyYzVhM2IxMGJjO... \n",
"2015-10-22 http://m1.dmlimg.com/MGQ1YTIwNTc3MmZhYTVhOGIyZ... \n",
"2015-10-22 http://m0.dmlimg.com/NWQ4MTM0MDZiMTViMzg1YWMxN... \n",
"\n",
" location price \\\n",
"listed \n",
"2015-10-22 Hamilton Park, Castleknock, Dublin 15, Ireland 395000 \n",
"2015-09-02 Drumcavan, Dysart, Ennis, Co. Clare, Ireland 369000 \n",
"2015-10-22 34 Laoi na Mara, Dunmore East, Waterford Cit... 260000 \n",
"2015-10-22 41 South Park, Foxrock, Dublin 18, Ireland 625000 \n",
"2015-10-22 Parsonstown, Carbury, Co. Kildare, Ireland 169000 \n",
"\n",
" reduction type \\\n",
"listed \n",
"2015-10-22 0 Semi-Detached House \n",
"2015-09-02 0 Detached House \n",
"2015-10-22 0 Detached House \n",
"2015-10-22 0 Semi-Detached House \n",
"2015-10-22 0 Detached House \n",
"\n",
" url lat \\\n",
"listed \n",
"2015-10-22 http://www.daft.ie/dublin/houses-for-sale/cast... 53.375767 \n",
"2015-09-02 http://www.daft.ie/clare/houses-for-sale/ennis... NaN \n",
"2015-10-22 http://www.daft.ie/waterford/houses-for-sale/w... 52.254852 \n",
"2015-10-22 http://www.daft.ie/dublin/houses-for-sale/foxr... NaN \n",
"2015-10-22 http://www.daft.ie/kildare/houses-for-sale/car... 53.343675 \n",
"\n",
" lng \n",
"listed \n",
"2015-10-22 -6.243693 \n",
"2015-09-02 NaN \n",
"2015-10-22 -7.108358 \n",
"2015-10-22 NaN \n",
"2015-10-22 -6.911611 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"properties.head(5)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA6YAAAH7CAYAAADfDYLrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+85mVdJ/7XW1DENMEf8VsphQpTUxOsVI5mRuoK3++W\nZqVmlO1SWVa7Su3mkLuYWpZu6W7lD9SFIlPTdA20PaalYqaIjCSYKDMKKqKo+QPkvX/cnxnvOXPm\nDHNmmOvMnOfz8bgf87mvz6/3fZ1zw3nd13V/PtXdAQAAgFFuNboAAAAA1jfBFAAAgKEEUwAAAIYS\nTAEAABhKMAUAAGAowRQAAIChBFMAdllVvaKqnj3w/C+vqs9V1buXWfczVfWOEXWtVVX1kKq6bHQd\na0lVLVbV6aPrAGBGMAXYD1TVlVV1TVXdbq7t56rq/95Cp+zpsddV1UOSPCLJkd39oBE17Gu6+x3d\n/V27e5zp9+zhK6xfqKqbquqL02NTVW1Yss1NVfWluW2+WFW/Ma3bUFU3TG2fr6p3Tz/vW8Kw32EA\ntieYAuw/bpXkV/bi+WqPHKRqV/9fdPckV3b3V/fE+dklnZ3/3Dd39x26+w5JHpzk9Ko6dck299my\nzfT4vbnjnzfte+ckb03ymj35AgBYmwRTgP1DJ/m9JL9RVXdcurKqjp1Gqm4117Z1KuM0/fUfquoF\nVXVdVV1RVT9QVU+pqk9Mo7FPWnLYu1TVBVV1/XSsu80d+7uq6sKquraqLquqH59b94qqeklVvbmq\nvpRkYZl6j6yqN0z7X15VPze1n57kT5N8/zSq9qwddUhVPX+a7vuvVXXKzo49V9uz554vVNVVc8+f\nMY0CXj+9rodP7VVVz5z67bNV9RdVdei07rZV9eqp/bqquqiqvm0HNW85xvVVdWlVnTa37lZV9ftV\n9ZnpNf3S/M90+lltnPb9aFU9dYXXcWVV/XpVXTyNTP55VR00rbtLVf3NVOu1VfX30+t7VZK7JXnj\n/CjnSrr7yiT/mOSEnW27pbTpke7+RpJzk9y1qu6yTF8dNNV+r7m2u1bVv02v4dDpdXx6+j14Y1Ud\ntexJZyO1r5p7vs37paruWFUvrapPTj//Z9euf6ACwAr8RxVg//FPSRaT7DQwTJZOZTwxycVJ7pTk\nvCTnJ7l/knsk+ekkf1TfnCpcSX4qye8kuUuSDyT530lSVd+S5MIkr05y1yQ/keTFVfXdc+d6QpJn\n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\ngKH+H6Xs/hGWb6rmAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f711fa00fd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bers = properties[properties['ber'] > 0].pivot_table('url', aggfunc='count', columns='ber')[::-1]\n",
"figure, axis = plt.subplots(1, figsize=(16, 8))\n",
"colors = ['#f91d1f', '#fb6b22', '#fcb910', '#ffb518', '#fff000', '#ffef07',\n",
" '#c0d62b', '#c1d72d', '#bad933', '#4cbc40', '#40c337', '#4bbb3d',\n",
" '#00b153', '#1b9761', '#08a15e'][::-1][2:]\n",
"bers.plot('bar', ax=axis, title='Number of houses against BER value', color=colors)\n",
"axis.set_xticklabels(sorted(BER.keys())[2:])\n",
"Image(filename='seai_ber.png')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>url</th>\n",
" </tr>\n",
" <tr>\n",
" <th>type</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Apartment For Sale</th>\n",
" <td>2023</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Detached House</th>\n",
" <td>11545</td>\n",
" </tr>\n",
" <tr>\n",
" <th>House For Sale</th>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Semi-Detached House</th>\n",
" <td>5098</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Terraced House</th>\n",
" <td>3413</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Townhouse</th>\n",
" <td>450</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" url\n",
"type \n",
"Apartment For Sale 2023\n",
"Detached House 11545\n",
"House For Sale 15\n",
"Semi-Detached House 5098\n",
"Terraced House 3413\n",
"Townhouse 450"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"properties.groupby(by='type')[[\"url\"]].count()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>baths</th>\n",
" <th>beds</th>\n",
" <th>ber</th>\n",
" <th>price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>type</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Apartment For Sale</th>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>30</td>\n",
" <td>159950</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Detached House</th>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>225000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>House For Sale</th>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>252500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Semi-Detached House</th>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>30</td>\n",
" <td>169000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Terraced House</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>-1</td>\n",
" <td>150000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Townhouse</th>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>-1</td>\n",
" <td>130000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" baths beds ber price\n",
"type \n",
"Apartment For Sale 1 2 30 159950\n",
"Detached House 2 4 -1 225000\n",
"House For Sale 2 4 -1 252500\n",
"Semi-Detached House 2 3 30 169000\n",
"Terraced House 1 3 -1 150000\n",
"Townhouse 2 3 -1 130000"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cols = [\"baths\", \"beds\", \"ber\", \"price\"]\n",
"properties.groupby(by='type')[cols].median()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>baths</th>\n",
" <th>beds</th>\n",
" <th>ber</th>\n",
" <th>price</th>\n",
" </tr>\n",
" <tr>\n",
" <th>type</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Apartment For Sale</th>\n",
" <td>1.513099</td>\n",
" <td>2.020761</td>\n",
" <td>28.770638</td>\n",
" <td>182859.366782</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Detached House</th>\n",
" <td>2.287120</td>\n",
" <td>3.910524</td>\n",
" <td>26.164660</td>\n",
" <td>265272.318839</td>\n",
" </tr>\n",
" <tr>\n",
" <th>House For Sale</th>\n",
" <td>2.266667</td>\n",
" <td>3.866667</td>\n",
" <td>24.400000</td>\n",
" <td>357100.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Semi-Detached House</th>\n",
" <td>2.054747</td>\n",
" <td>3.373284</td>\n",
" <td>28.814829</td>\n",
" <td>215375.358572</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Terraced House</th>\n",
" <td>1.702783</td>\n",
" <td>3.043950</td>\n",
" <td>23.931732</td>\n",
" <td>197555.609142</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Townhouse</th>\n",
" <td>1.805556</td>\n",
" <td>3.260000</td>\n",
" <td>17.582222</td>\n",
" <td>167779.424444</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" baths beds ber price\n",
"type \n",
"Apartment For Sale 1.513099 2.020761 28.770638 182859.366782\n",
"Detached House 2.287120 3.910524 26.164660 265272.318839\n",
"House For Sale 2.266667 3.866667 24.400000 357100.000000\n",
"Semi-Detached House 2.054747 3.373284 28.814829 215375.358572\n",
"Terraced House 1.702783 3.043950 23.931732 197555.609142\n",
"Townhouse 1.805556 3.260000 17.582222 167779.424444"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"properties.groupby(by='type')[cols].mean()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment