房价的区位特征和其他影响因素:珠海二手房报价数据

房价的数据似乎比较敏感,今年以来连百城房价指数也不再更新了。好在现在中介的互联网平台比较完善,以下数据来自某房产中介网站,所有数据都是二手房报价。

珠海各区域的房价

houseprice
区位是房价的重要因素,珠海各区的均价显示了明显的区别,横琴新区在4万元以上、香洲区集中2.5-3万之间,金湾区和斗门区集中在1-1.5万元,高栏港经济区则在1万元以下。即使进一步考察镇、街道一级的区域划分下,在这种价格的明显差异依然存在。有趣的是,从均值上看金湾区和斗门区的价格更接近,但加入房屋面积、楼层和装修情况之后,高栏港经济区的房屋价格与斗门区没有显著区别,但金湾区和斗门区有相当的差距。

房屋大小的影响

是否存在对大房子的偏好?以改善居住条件而言,如果有足够的购买力,大房子更为舒适,因此大面积的房子具有两个优点:面对更高购买力群体,以及更好的居住条件;但是小房子需要的资金规模较小,市场需求更大,也更具有流动性。那么,是否存在一个最优的面积,同时一定程度上具有两种优势?
检验结果显示,房屋面积越大单价越高,但是增加的幅度很小,每增加1平方米,价格大约上升24元,以当前均价计算,接近0.1%;不存在某个最优的面积。加入楼层和装修情况后,面积的系数下降,说明住房面积很大程度上伴随着多方面的居住条件改善。

hpstata1

hpstata2

其他因素的影响

房屋的楼层和装修情况也可能影响价格,装修情况分成毛坯、普通装修、精装修、豪华装修。结果显示,楼层和装修情况都有很明显的影响,每上升一层,价格上升294元,占均价1.5%;装修情况每提高一个层次,价格上升1262元,占均价5.6%,装修成本很大程度上体现在房屋报价中。

数据存在的问题

本文采用的数据是单家房产中介的二手房报价数据,一方面数据范围较小,只有一家平台、只包括二手房;另一方面是报价数据,并非实际成交价格,也无法看到历史趋势。此外,数据中房屋特征信息相对较少,其他如是否是学区房、交通便利程度都没能显示出来。

hpdetails

附:数据抓取程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import urllib2
from bs4 import BeautifulSoup
from time import sleep
import pandas as pd

def getkw(sp):
filter00=sp.findAll('span')
ltsp=len(filter00)/2
kwlist=[]
for i in range(ltsp+1):
kwlist.append(filter00[i*2].string.replace('\t','').replace('\r\n',''))
if len(kwlist)<5:
kwlist.append(None)
kwname=['room','area','style','floor','year']
return dict(zip(kwname,kwlist))

def getonerecoad(soup):
filter2=soup.findAll('p')
filter3=filter2[2].findAll('span')
hprice=int(soup.find('span',attrs='sale-price').string)
title=soup.img['alt']
addr1=filter3[1].findAll('a')[0].string
addr2=filter3[1].findAll('a')[1].string
kwgd=filter3[0].a.string
kwstr=filter3[2].string
areaprice=int(filter2[5].string[:-4])
dic=getkw(filter2[1])
dic['house-price']=hprice
dic['title']=title
dic['addrarea']=addr1
dic['addr']=addr2
dic['kwgd']=kwgd
dic['kwstr']=kwstr
dic['price']=areaprice
if len(dic['floor'])>4:
dic['floor1']=dic['floor'][:2]
dic['floor2']=int(dic['floor'][3:-1])
if dic['year']!=None:
dic['year']=int(dic['year'][:-2])
dic['area']=float(dic['area'][:-2])
return dic

listrecord=[]
for i in range(337):
url='http://zhuhai.qfang.com/sale/f'+str(i+1)
print url
webpage=urllib2.urlopen(url).read()
soup=BeautifulSoup(webpage,'html.parser')
filter0=soup.findAll('div',attrs={'id':'cycleListings'})
filter1=filter0[0].findAll('li')
for j in filter1:
listrecord.append(getonerecoad(j))
print i,'---',len(listrecord)
sleep(2)
res=pd.DataFrame(listrecord)