从数据角度分析看看北京的房子还值不值得买

说起房价,帝都的年轻人都是两行泪,这确实不是一个对年轻人友好的时代,每每吃饭的间隙,买房总是变成一个热点话题。

我党说房子是用来住的,不是用来炒的,但说实话房子目前的金融属性已经远远大于其本身的居住属性,很多人都怕现在不买就赶不上房价上涨这趟车,身边的同事也有还没能凑够首付的钱就两边啃老下手了,房子让这个社会的狂热不禁让人一阵唏嘘。既然说到金融属性,那我们就从投资回报率角度看下北京的房子还值不值得买。

数据来源

在北京,绿中介是一家势力很大的房地产公司,但殊不知,其还是一家大数据公司,其拥有比较完备的北京市房屋交易数据库,最早的时候网站还有房价走势、单日成交量等重要数据,但随着房价的这波上涨,这些数据都被隐藏起来了。但这怎么能难倒搞技术的呢,数据没有了,我们就挖出来。所幸,绿中介网站上的数据比较开放性,对爬虫也较为友好。

分析思路

既然上面说了基本思路是从投资/金融角度出发,投资讲究在本金相对安全的情况下追求投资回报率。说起房产,其不过也就是多种投资品中的一种。投资品一般讲究:

  1. 风险性如何?在市场下行的时候能否对抗风险?
  2. 具不具有长期投资价值?
  3. 投资回报率如何?

前两点其实各说纷纭,很难有个定量的研究,而从投资回报率来看,比较容易得到数据上的佐证。所以这里的基本前提是:忽略房地产本身的涨跌,利用租金来分析当前房源的各项相关指标。

基本思路如下:

  1. 以北京4000以上的一居室为基本研究样本,一居室是年轻人租住的主流户型,是最活跃的房源类型,而4000是北京市区一个像样的一居室的入门价格。
  2. 以单位面积租金作为衡量依据来衡量房屋的租住性价比
  3. 以房屋租售比作为衡量依据来衡量房屋投资回报率

出租房源挖掘

链家的出租房源整理在租房频道中:http://bj.lianjia.com/zufang/ ,使用一室、整租、4000以上条件进行筛选,可以得到1200+的房源(链家是30个房源分一页,最多展示100页),利用Python进行抓取,源程序如下:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# coding=UTF-8
import requests
import time
from bs4 import BeautifulSoup
import pandas as pd

url='http://bj.lianjia.com/zufang/'
page=('pg')
filterc=('rt1l2brp5000erp30000')
pagenum=66

#heder信息
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36',
'Accept': 'text/html, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8,ja;q=0.6',
'Connection': 'close',
'Cookie': 'lianjia_uuid=cd6c9dd1-0f38-4a75-bccf-1b563b06cff8; lj-ss=9b7a2d141b716985fc586484c422621e; lianjia_token=2.005a12002e20ddb6c24bbf291ffc0a11f8; _jzqckmp=1; Hm_lvt_efa595b768cc9dc7d7f9823368e795f1=1486521830; Hm_lpvt_efa595b768cc9dc7d7f9823368e795f1=1488642635; select_city=110000; _jzqx=1.1485015916.1488717206.4.jzqsr=nj%2Elianjia%2Ecom|jzqct=/ershoufang/103100589441%2Ehtml.jzqsr=bj%2Elianjia%2Ecom|jzqct=/xiaoqu/fengtai/; _smt_uid=5882fd00.4432f518; _jzqa=1.2623073858025025500.1484979457.1488703705.1488717206.7; _jzqc=1; _jzqb=1.5.10.1488717206.1; _gat=1; _gat_past=1; _gat_global=1; _gat_dianpu_agent=1; logger_session=c4a5b66618eb5db7cbff031825e8b252; select_nation=1; _gat_new=1; _gat_new_global=1; _ga=GA1.2.1486958593.1484979458; CNZZDATA1254525948=1921582691-1485067712-https%253A%252F%252Fwww.google.com%252F%7C1488718352; CNZZDATA1253491255=584751100-1485067959-https%253A%252F%252Fwww.google.com%252F%7C1488713957; lianjia_ssid=455c8374-ac9e-4f62-81c9-2ba36d1ba237',
'DNT':'1',
'Referer': 'http://www.super-ping.com/?ping=www.baidu.com&locale=sc'
}

for i in range(1,pagenum+1):
if i==1:
i=str(i)
a=(url+filterc+'/')
r=requests.get(url=a,headers=headers)
html=r.content
else:
i=str(i)
a=(url+page+i+filterc+'/')
r=requests.get(url=a,headers=headers)
html2=r.content
html=html+html2
time.sleep(1)
lj=BeautifulSoup(html,'html.parser')

#房源名称
fydoc=lj.find_all('div',attrs={'class':'info-panel'})
fyall=[]
for a in fydoc:
fy=a.h2.a.string
fyall.append(fy)

#面积
areadoc=lj.find_all('span',attrs={'class':'meters'})
areall=[]
for a in areadoc:
area=a.string.encode("utf-8")
#area.findall(r"\d+\.?\d*",string)
areall.append(filter(str.isdigit,area))

#价格
pricedoc=lj.find_all('div',attrs={'class':'price'})
priceall=[]
for a in pricedoc:
price=a.span.string
priceall.append(price)

#区域
rgdoc=lj.find_all('div',attrs={'class':'con'})
rgall=[]
for a in rgdoc:
rg=a.a.string
rgall.append(rg)

#小区
xqdoc=lj.find_all('span',attrs={'class':'region'})
xqall=[]
for a in xqdoc:
xq=a.string.strip()
xqall.append(xq)

#年代
yeardoc=lj.find_all('div',attrs={'class':'con'})
yearall=[]
for a in yeardoc:
year=a.span.string
yearall.append(year)

house=pd.DataFrame({'name':fyall,'region':rgall,'xiaoqu':xqall,'year':yearall,'area':areall,'price':priceall})
house.to_csv('./bj_rent_0404_liangju.txt',encoding='utf-8')

注意,为了避免链家反爬虫机制(虽然很弱),需要设置header信息和time.sleep(1)防止被spam。

各小区均价挖掘

为了计算房屋的租售比,需要得到当前北京各小区的均价,这个相对来说难一些,因为链家最多展示100页,可以分行政区进行抓取,程序如下:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# coding=UTF-8
import requests
import time
from bs4 import BeautifulSoup
import pandas as pd
import random

url='http://bj.lianjia.com/xiaoqu/yizhuangkaifaqu/'
page=('pg')
pagenum=4
#filterc=('l1rp5')

#proxy
f = open("./proxyava")
lines = f.readlines()
proxylist = []
for i in range(0,len(lines)):
ip = lines[i].strip("\n")
proxylist.append(ip)
#proxies = {
# "http": "http://121.199.11.197:3128",
#}

#print random.choice(proxylist)


#heder信息
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36',
'Accept': 'text/html, */*; q=0.01',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8,ja;q=0.6',
'Connection': 'close',
'Cookie': 'lianjia_uuid=cd6c9dd1-0f38-4a75-bccf-1b563b06cff8; lj-ss=9b7a2d141b716985fc586484c422621e; lianjia_token=2.005a12002e20ddb6c24bbf291ffc0a11f8; _jzqckmp=1; Hm_lvt_efa595b768cc9dc7d7f9823368e795f1=1486521830; Hm_lpvt_efa595b768cc9dc7d7f9823368e795f1=1488642635; select_city=110000; _jzqx=1.1485015916.1488717206.4.jzqsr=nj%2Elianjia%2Ecom|jzqct=/ershoufang/103100589441%2Ehtml.jzqsr=bj%2Elianjia%2Ecom|jzqct=/xiaoqu/fengtai/; _smt_uid=5882fd00.4432f518; _jzqa=1.2623073858025025500.1484979457.1488703705.1488717206.7; _jzqc=1; _jzqb=1.5.10.1488717206.1; _gat=1; _gat_past=1; _gat_global=1; _gat_dianpu_agent=1; logger_session=c4a5b66618eb5db7cbff031825e8b252; select_nation=1; _gat_new=1; _gat_new_global=1; _ga=GA1.2.1486958593.1484979458; CNZZDATA1254525948=1921582691-1485067712-https%253A%252F%252Fwww.google.com%252F%7C1488718352; CNZZDATA1253491255=584751100-1485067959-https%253A%252F%252Fwww.google.com%252F%7C1488713957; lianjia_ssid=455c8374-ac9e-4f62-81c9-2ba36d1ba237',
'DNT':'1',
'Referer': 'http://www.google.com/?ping=www.baidu.com&locale=sc123'
}


for i in range(1,pagenum+1):
if i==1:
#i=str(i)
#a=url
i=str(i)
a=(url+page+i+'/')
r=requests.get(url=a,headers=headers)
html=r.content
else:
i=str(i)
a=(url+page+i+'/')
r=requests.get(url=a,headers=headers)
html2=r.content
html=html+html2
time.sleep(4)
lj=BeautifulSoup(html,'html.parser')

#小区名
fydoc=lj.find_all('div',attrs={'class':'info'})
fyall=[]
for a in fydoc:
fy=a.div.a.string
fyall.append(fy)

#价格
xqprice=lj.find_all('div',attrs={'class':'totalPrice'})
priceall=[]
for a in xqprice:
price=a.span.string
#area.findall(r"\d+\.?\d*",string)
priceall.append(price)


house=pd.DataFrame({'name':fyall,'price':priceall})
house.to_csv('./yizhuangkaifaqu.txt',encoding='utf-8')

数据整理

按照以下公式进行计算:

  1. 单位面积租金=租金/面积
  2. 租售比=房价*面积/租金/12,意即付多少年租金可以买下这栋房子

使用excel中的数据透视表功能,过滤掉只有2个及2个以下房源的小区,一是因为只有一两个房源的情况租金置信率低,二是因为这类出租房源少的小区其实租住的活跃度也较为低下。

结论

按上述计算方法,在以平均租售比从小到大排序,发现了比较有意思的事情。

这个时间点该不该买房?

先给结论,倾向于建议不买,尤其是不应该在这个时间点买。

首先一个因素是时间点的影响,北京在三月中旬密集出台了一系列措施,中介纷纷下架了违规房源,受最大影响的是商住房,而这类房往往是租售比较高的房屋。这明显体现在了分析结果中:

第一张图的时间点是三月初,排名平均租售比排行前二十的小区为:

下面这张图的时间点是四月初,这时候是集中整治之后,很多商住房包括租房房源都已下架,可以看到商住房集中的区域,像天通苑、亦庄等区域排名直线下降。

而此时的平均租售比也已稳定在40以上,相比三月份的数据,四月份的数据在体现在住宅房源上面更具代表性。而从目前的形势看,更多的政策可能还在路上。

另外,从上表可以看出,当前的房屋平均租售比,在北京最好的也只能做到40-50这个区间了,意味着,如果房价不增长,那么需要至少半辈子,才能够实现房屋的回本,这个代价已经太大,而国际上最差的情况下这个数字也不过就是10左右。

哪个区域租房性价比较高?

从上面的分析中,还可以找到一个有意思的数据:哪里租房性价比比较高,这得看平均租售比。

这是租售比最低的二十的区域,结果很令人失望,毫无意外都是偏远地区的房子,住在这种地方肯定是不幸福的。

那市区内什么地方性价比比较高呢?这几个是比较靠前的,他们的单位面积租金已经在110左右了。

一个悲惨的事实是本人现租住的区域竟然是这个榜单中单位面积最贵的几个区域之一,仅次于金融街和CBD,而房东仍然是以一个比较低的租金租给我的,感恩不已。

哪些小区可以值得观望?

上述是从区域的角度来看的,不过往往一个区域内的价格分布也不均衡,这里再从小区的角度分析下。

诚然,当下北京的房子非常不值得买,但是如果持续观望等待一个好时机的话,哪些小区有比较好的性价比呢?我们依旧通过平均租售比来衡量。

结果还是很令人失望的,从平均租售比来看,排在前面的依旧是商住房,而从这个列表往下看,从上往下挑出非商住小区,筛选出一些有观望潜力的小区如下:

有心人可以关注一下,反正瞄了几眼这些小区,基本最小的户型都得400w+了,我还是先攒钱去吧…

整体结论

数据是不会说谎的,通过这次分析我们发现了以下结论:

  1. 当下这个时间点确实不是个好的时间,当前北京各区域的平均租售比已经在50左右,意味着和租房相比,50年才能实现正收益,有这个钱还不如去二线城市的核心位置投资一个小空间来得划算。
  2. 各小区的单位面积租金呈现从内到外的递减趋势,平均单位面积租金已经在110以上,这就意味着,如果要在市区住一个小一居至少需要4400元,一个小两居大概需要6600元左右,这已经成为起步价。这样比起来,其实五环以内的各个位置租金差别并没有那么大,与其在五环外过城乡结合部的生活还不如租在离上班地点较近的市区来得方便。
  3. 如果从观望角度看,确实可选择的小区已经不多,这一轮补涨已经基本消灭了价格洼地,只有东北三环附近的一些老破小以及东边和南边一些没有学区的位置上还有一些可挑选的小区。

而于我来说,未来可预见的一段时间内还会继续租房,我会租在市区,至少离家里一方工作地点比较近的区域,市区相比五环外还是有无可比拟的生活、娱乐优势。同时,从今年开始参与自住房摇号(虽然概率基本忽略不计,但万一呢!)以及等待这段时间调控靴子的彻底落地(也许会有惊喜呢)。

其实我最不能理解的事情是,北京市区的这些房子,居住体验其实根本不能说好,从长时间持有的角度来看,这真的能算作是优质资产么?

北漂不易,且行且珍惜。