|
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Housing Prices in São Paulo\n",
"\n",
"This notebook gathers information about housing prices and their sizes on the city of São Paulo, Brazil."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Import Libraries\n",
"import pandas as pd\n",
"import requests\n",
"from bs4 import BeautifulSoup\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib\n",
"matplotlib.style.use('ggplot')\n",
"%matplotlib notebook"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset is gathering information from [Imovel Web](http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-1.html), a brazilian online real estate portal."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true,
"scrolled": true
},
"outputs": [],
"source": [
"def getURL(page_number):\n",
" base_url = \"http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-\"\n",
" end_url = \".html\"\n",
" url = base_url + str(page_number) + end_url\n",
" return url"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def num(s):\n",
" try:\n",
" return int(s)\n",
" except ValueError:\n",
" return float(s)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def grab_data(url, i):\n",
" try:\n",
" result = requests.get(url)\n",
" page = BeautifulSoup(result.content, \"html5lib\")\n",
" items = page.find_all('li', class_='post')\n",
" for item in items:\n",
" title = item.find(\"a\", class_='dl-aviso-link').get('title')\n",
" price = item.find(\"span\", class_='precio-valor').string.replace(\"R$\",\"\").replace(\".\",\"\").strip()\n",
" size = item.find(\"li\", class_='post-m2totales')\n",
" if size is not None:\n",
" size = size.text.replace(\"total\",\"\").strip()\n",
" #print(size + \" - \" + price + \" - \" + title)\n",
" price = num(str(price))/1000\n",
" size = num(str(size.replace(\"m²\",\"\")))\n",
" df.loc[i] = [size, price]\n",
" i = i + 1\n",
" return i\n",
" except:\n",
" print(\"--> ERROR\")\n",
" return i"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-1.html\n",
"2 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-2.html\n",
"3 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-3.html\n",
"4 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-4.html\n",
"5 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-5.html\n",
"6 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-6.html\n",
"7 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-7.html\n",
"8 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-8.html\n",
"9 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-9.html\n",
"10 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-10.html\n",
"11 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-11.html\n",
"12 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-12.html\n",
"13 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-13.html\n",
"14 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-14.html\n",
"15 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-15.html\n",
"16 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-16.html\n",
"--> ERROR\n",
"17 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-17.html\n",
"18 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-18.html\n",
"19 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-19.html\n",
"20 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-20.html\n",
"21 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-21.html\n",
"22 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-22.html\n",
"23 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-23.html\n",
"24 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-24.html\n",
"25 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-25.html\n",
"26 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-26.html\n",
"27 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-27.html\n",
"28 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-28.html\n",
"29 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-29.html\n",
"--> ERROR\n",
"30 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-30.html\n",
"31 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-31.html\n",
"32 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-32.html\n",
"33 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-33.html\n",
"34 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-34.html\n",
"35 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-35.html\n",
"36 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-36.html\n",
"37 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-37.html\n",
"38 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-38.html\n",
"39 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-39.html\n",
"40 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-40.html\n",
"41 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-41.html\n",
"42 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-42.html\n",
"43 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-43.html\n",
"44 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-44.html\n",
"45 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-45.html\n",
"--> ERROR\n",
"46 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-46.html\n",
"47 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-47.html\n",
"48 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-48.html\n",
"49 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-49.html\n",
"50 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-50.html\n",
"51 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-51.html\n",
"52 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-52.html\n",
"53 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-53.html\n",
"54 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-54.html\n",
"55 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-55.html\n",
"56 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-56.html\n",
"57 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-57.html\n",
"58 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-58.html\n",
"59 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-59.html\n",
"60 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-60.html\n",
"61 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-61.html\n",
"62 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-62.html\n",
"63 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-63.html\n",
"--> ERROR\n",
"64 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-64.html\n",
"65 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-65.html\n",
"66 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-66.html\n",
"67 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-67.html\n",
"68 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-68.html\n",
"69 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-69.html\n",
"70 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-70.html\n",
"71 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-71.html\n",
"72 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-72.html\n",
"73 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-73.html\n",
"74 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-74.html\n",
"75 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-75.html\n",
"76 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-76.html\n",
"77 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-77.html\n",
"78 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-78.html\n",
"79 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-79.html\n",
"80 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-80.html\n",
"81 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-81.html\n",
"82 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-82.html\n",
"83 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-83.html\n",
"84 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-84.html\n",
"85 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-85.html\n",
"86 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-86.html\n",
"--> ERROR\n",
"87 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-87.html\n",
"88 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-88.html\n",
"--> ERROR\n",
"89 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-89.html\n",
"90 - http://www.imovelweb.com.br/imoveis-venda-sao-paulo-sp-pagina-90.html\n"
]
}
],
"source": [
"df = pd.DataFrame([], columns=('size', 'price'))\n",
"i = 0\n",
"for page_number in range(1,100):\n",
" url = getURL(page_number)\n",
" print(str(page_number) + \" - \" + url)\n",
" i = grab_data(url, i)\n",
"df.tail() "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"df.plot(x=\"size\", y=\"price\", kind='scatter', color='DarkBlue', xlim=(0, 350), ylim=(0, 2500000))\n",
"plt.xlabel(\"Size (m²)\")\n",
"plt.ylabel(\"Price (R$)\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
|