当 Python 和 R 遇上北京二手房,python二手房,未经作者许可,禁止转载!


本文作者: 编橙之家 - 哇呜哇呜呀咦耶 。未经作者许可,禁止转载!
欢迎加入编橙之家 专栏作者。

最近忙活了一阵子,终于把房子的事情落实了,俗话说饱暖思淫欲,某天突发奇想能不能利用手头上的一些工具对北京的二手房数据捣鼓一下,看看能不能有一些有意思的发现?想到以前有点python经验,正巧最近也在看R,正好借此机会巩固一下,齐活,走起!

一、数据准备

看了下各大房产网站,从数据的量级、真实性、即时性等方面对比了下,有的数据挺多,但是数据真实性不高,上面既有房主的帖子,也有中介的帖子;有的真实性不错,但是房源太少,综合对比下来,最终选择了某家网。

有了数据源,用Python写了一个爬虫,从网站上随机爬取了30000条房源数据。有人可能说数据太少了,少就少吧,这里只是想起到一个抛砖引玉的作用。

二、数据整理

来看下获取的数据,每条数据描述了房子的13个属性,分别为:区、小区、户型、面积、朝向、区域(区下面更细分的一级,比如昌平的天通苑、回龙观)、楼层、房龄、学区、地铁、税、总价、单价。

  1. 区,原始数据都是英文代号,比如BJCP代表昌平,BJCY代表朝阳,为了查看起来方便,将它们都替换为相应的中文名。
  2. 楼层,原始数据大部分是以“低楼层”、“中楼层”这样的楼层区间划分的,不过有少量数据也写了具体楼层,我统一把它替换为楼层区间。
  3. 学区和地铁,我进行了简化,只进行了是否学区、是否地铁的划分,对于学区的品质,地铁的远近没有细分。
  4. 税,抓取的30000条数据里面很奇怪只有“满五唯一”和空值这两种,并没有例如“满二不唯一”、“满二唯一”等类型,为了简化,就认为空值没有免税。
  5. 对异常值的处理,查看了一下数据,通过与网站上同区域同小区的数据对比,有一些年代过早、总价、单价过高过低等异常情况,比如年代为1000年的房子,总价43亿的“西山小镇”等等,这可能是信息录入员笔误或者采用了默认值造成,由于异常值占比较小,我进行了简单的删除处理。
  6. 为了对面积、年代这样的连续值进行分组,我增加了四列,
    • 面积分组:0~50, 50~100, 100~150, 150~200, >200
    • 年代分组:=2015
    • 总价分组:0~1, 1~2, 2~3, 3~4, 4~5, 5~6, 6~7, 7~8, 8~9, 9~10,>10,单位为百万
    • 单价分组:0~1万, 1~2万, 2~3万, 3~4万, 4~5万, 5~6万, 6~7万, 7~8万, 8~9万,9~10万, >10万

整理完共有29790条数据,这是数据的结构:

Python
'data.frame':    29790 obs. of  17 variables:
$ area     : Factor w/ 15 levels "昌平","朝阳",..: 2 13 7 7 15 5 6 14 2 11 ...
$ region   : Factor w/ 5139 levels "@北京","10AM新坐标",..: 674 2299 1789 1955 1063 463 2764 407 2480 2601 ...
$ zone     : Ord.factor w/ 53 levels "0室0厅"<"0室1厅"<..: 12 27 12 6 11 16 11 6 6 16 ...
$ meters   : int  67 408 75 47 83 136 68 57 55 128 ...
$ direction: Factor w/ 50 levels "","北","北东北",..: 40 26 27 26 26 27 27 26 2 27 ...
$ con      : Factor w/ 221 levels "CBD二手房","安定门二手房",..: 169 158 132 207 196 215 189 201 73 114 ...
$ floor    : Ord.factor w/ 4 levels "地下室"<"低楼层"<..: 2 2 2 4 3 2 3 4 3 3 ...
$ year     : int  2000 2002 1996 1997 2007 2010 2011 2008 2000 1998 ...
$ school   : Ord.factor w/ 2 levels "无学区"<"有学区": 2 2 1 1 1 1 1 1 1 1 ...
$ subway   : Ord.factor w/ 2 levels "无地铁"<"有地铁": 2 1 2 1 1 1 1 2 2 1 ...
$ tax      : Factor w/ 2 levels "非免税","满五年唯一": 1 1 1 1 1 1 1 1 1 1 ...
$ num      : int  360 950 290 260 95 350 220 120 180 205 ...
$ price    : int  53732 23285 38667 54622 11446 25736 32353 21053 32728 16016 ...
$ meters_cg: Ord.factor w/ 5 levels "0~50"<"50~100"<..: 2 5 2 1 2 3 2 2 2 3 ...
$ year_cg  : Ord.factor w/ 7 levels "<1990"<"90~95"<..: 4 4 3 3 5 6 6 5 4 3 ...
$ num_cg   : Ord.factor w/ 11 levels "0~1"<"1~2"<"2~3"<..: 4 10 3 3 1 4 3 2 2 3 ...
$ price_cg : Ord.factor w/ 11 levels "0~1万"<"1~2万"<..: 6 3 4 6 2 3 4 3 4 2 ...

三、数据概览

下面从总体上看下数据,

1.县区分布

这里写图片描述

本次抽到的数据包括北京13个区和2个特别区域亦庄和燕郊,后两个地方不是区,但是在北京的朋友都知道,这两个地方有可能比某些区还有名。

总体来看市区的二手房市场比较活跃,可以看到朝阳、海淀、丰台分列三甲,三个区的二手房之和几乎占去了北京二手房一半的数量,朝阳一个区的岀房量更是比后两名都多。昌平区和燕郊紧随其后,昌平区有天通苑和回龙观这两个人口聚集区(这个后面会看到),而燕郊满足了一些在城区无法买房,又要在市区工作的人的需求,二手房数量也是不容小觑。

2.户型分布

这里写图片描述
最多的是两室一厅,占到33%,然后是一室一厅、三室两厅、三室一厅这样的户型。

看来小户型还是主流,不过这有可能因为一是大部分二手房年代较早,小户型较多,不过查看了下数据,2000年以后的房子二室一厅也有26%;另外一点可能是北京房价太贵,作为购房者的主体普通大众大部分购买力有限,开发商盖房的时候主要盖的就是这种户型。

3.面积分布

这里写图片描述

右上角密度图显示本次抽取的数据,面积的区间为0 ~ 3000平方,不过大部分的房子的面积还是集中在一个较小的范围内。从下图可以看到大部分面积都落在50 ~ 150这个区间,50 ~ 100的房子约为54%,而200平米以上的大房子仅为6%。

不太清楚其他地方的房子,在北京房子的面积和要交的税是有关系的。这可能在一定程度上会遏制房子的面积。

4.朝向分布

这里写图片描述

买过房的都知道,朝向很重要。什么东西向的只有早晚才能见阳光,北向的天天喝西北风,衣服都晒不干,还有一些风水上的讲究就更复杂了,反正我是不懂,凡此种种,充分说明了买房者对朝向的注重。

由于朝向比较多,这里只挑选了数量最多的10种。从图上我发现南北向、南向这些大家都比较喜欢的朝向竟然最多,二者合起来约有61%,这点和自己的看房经历不太一样,咋看有点不可思议,细想原因可能是这样的,一般楼房建设的时候,都是南北朝向的,我想没有哪个傻帽故意把房子盖成朝北的,盖好以后一些边角没有办法,朝向为东西、北等等,所以主体还是南北。

5.区域分布

这里写图片描述

由于区域众多,我这里只选择了出房量最多的10个区域。从上图可以看到,二手房数量最多的10个区域恰恰也是北京人口较为密集的区域,10个区域朝阳3个,昌平2个,房山1一个,顺义1个,门头沟1个,石景山1个,燕郊1个。

前面我们看到,北京二手房数量以朝阳为最,朝阳以望京为最,望京一个区域占了朝阳12%的房产数量。而天通苑、回龙观也不负众望,分别为第三和第四,另外如良乡、顺义城等我们熟知的人口聚居区交易也异常火爆,假如岀房量能在一定程度上代表交易量的话。

6.楼层分布

这里写图片描述

买房者对楼层的重视也是不言而喻,众所周知,顶层和低层的房子一般人都不太喜欢,顶层房子冬天冷夏天热,低楼层比较潮湿等等,这两种房子住起来不是那么舒服,所以我原本以为卖房的大部分是这两种楼层。

不过从数据上看,楼层分布比较平均,这点也和自己的看房经历不太一样,从自己的看房经历来看中楼层较少,大部分的二手房都是高楼层或者低楼层。原因可能和楼层的划分有关系,比如一座20层的楼房,1 ~ 5为低层,6 ~ 15为中层,16 ~ 20为高层,这样中楼层就比较多了。

7.建筑年代分布

这里写图片描述

房子的建筑年代对于土豪不是那么重要,但是对于普通购房者就不一样了,因为贷款的年限和房龄是有关系的。一般情况下钢混结构带电梯的贷款年限为57减去房龄,砖结构比如6层不带电梯的板楼是45减去房龄,具体的年限和你的房屋具体评估值有关系,我在网上找了半天,没有找到这种算法的明文规定,这应该是一个经验值,不过具有一定的准确性。也就是说你想贷款30年,钢混的必须至少为88年后的,砖混的必须至少是2000年后的。

数据显示,建筑年代区间为1952 ~ 2015,从图中可以看到,建筑年代主要集中在1995年到2015年这个时间段,2000年后的房子竟然占了总量的72%。这是我没有想到的,因为看房的时候,看到的房子基本上都是90年代的房子,这可能和当初我的定位有关系,当初买房的时候就想买个离市区近点的,上班方便,房子老点没关系,而市区可能新房子较少。

8.学区房、地铁房、免税房

这里写图片描述

这三个属性有点相似,放在了一起。这里没有对学区的优劣,地铁的远近等进行细分,只是简单粗暴的分为有无两种。

从图上可以看到学区的差异性较大,学区房只占总量的20%,怪不得学区房这么贵了;而地铁就较为普遍了,随着北京城市交通的建设地铁越来越多,表现在住房上就是地铁房的比例越来越高,约占41%,相信随着城市的发展,这个比例会越来越高。

税费这一项对于普通购房者也很重要,例如满五唯一只有1%的契税,满二唯一还要加收差价20%的个税,具体的费率和是否首套,房屋面积也有一定的关系,买房的朋友可以去查查。

数据显示,满五唯一的房子约为38%,比例不算低,看来,虽说大部分的房子都是2000年后的房子,有相当一部分的人还是在房子满五年之后再出售,虽然房主可以把税费转移到购房者身上,但是定价太高,房屋就不好出了,所以国家的征税政策对房产的恶意交易是有一定的作用的。

9.总价分布

这里写图片描述

对于总价和单价两种数据,我都是抱着猎奇的态度看待的,不过这两个数据的重要性自不必说,特别是总价,因为这关系到你的预算。看密度图(单位为万元),还真有3亿元的房子,我应该没数错0的个数,不过好在这样的房子只是凤毛麟角,让我等凡人还有些念想。

从直方图上可以看出100 ~ 300万的房子大概有50%,不过大于500万的房子也占到了17%,还得好好努力挣钱啊。

10.单价分布

这里写图片描述

单价对于普通购房者可能不够直接,因为在我看来,一般人买房之前先确定了总价,也就是自己能拿出多少钱,然后再结合自己大致的需求,比如想要一个多大的,什么户型的等等,总价和需求定了基本上能购买的单价也就定了,也就是说单价影响你选择的余地,比如说你本来想买个100平方的,你在看房过程中特别中意一个小区,那个小区单价贵,你能拿出的钱就那些,那你只能换一个小点的房子了。

密度图(单位元)显示还有30万一平方的房子,赶紧看看是何方宝地,原来是两套5平方的学区房,好吧,喝口水压压惊。不过好在单价主要还是集中在1 ~ 5万的区间,约占80%,其中2 ~ 4万最多,约为总量的50%。

上面大致看了下数据的总体情况,并尝试对一些原因做了分析,当然有些只是推测,这段时间比较忙,正好趁阅兵放假的时间看看能不能从数据中发现一些有利的证据。

四、各区情况

作为买房者第一步就是看房选房,那么各区的情况是怎样的呢?下面从买房者比较注重的五个方面横向对比一下。

1.各区总价

这里写图片描述

(图中红点为本区域的均值)

果然不出所料,西城、东城、海淀、朝阳四区均值和中位数均在前列,且数据区间分布比较广,而一些新兴的郊区如房山、门头沟、燕郊总价则较为集中,大概是因为房子是同一时期建设,功能需求也比较单一的缘故。

另外我注意到,各区的总价均值均不同程度的偏离中位点,城区偏离较大,郊区偏离较小,是不是因为城区房子需求多样,一些别墅豪宅拉高了均值?值得注意是顺义的均值超过了上四分位数,是不是顺义有较大比例的高档房产呢?

下面换个角度,以二维直方图来展示下

这里写图片描述

由于各区二手房总量差异较大,这里的颜色代表的是总价区间在本区的占比,从这张图上可以看到西城、东城、海淀、朝阳、顺义确实有一定数量的千万房产。

2.各区单价

这里写图片描述

这张图很有意思,能发现很多东西。

第一,市区的房价高,郊区房价低,这傻子都知道,呵呵。第一梯队东西城、海淀50%的房子单价都在5万以上,想买这些地方的房子,看看腰包鼓不鼓,第二梯队朝阳、丰台、石景山大部分房子都在3万以上,第三梯队剩下的区房价大部分都在2万5以下,燕郊最低,基本上在1万2左右;

第二,市区的房价范围广,均值偏离中位数幅度大,比如东西城,应该是这两区一些高质量的学区房导致。

3.各区面积

这里写图片描述

(图中红点为本区域的均值)

可以看出一个趋势,郊区的房子要比市区的房子大。例如东西城面积中位数在75平米左右,而昌平、亦庄等均在100平米左右。还有就是市区房子面积范围较大,而郊区可能起步较晚,基本上建筑年代都在同一时期,房子的面积也较为单一。

这里写图片描述

顺义200平米的房子比例不少,再结合其千万以上的总价,看来顺义卧虎藏龙。

4.各区建筑年代

这里写图片描述

这张图上印证了上面的猜测,昌平、房山、亦庄、通州、燕郊等郊区房子建筑年代较为集中,尤其是燕郊,基本上都是2010年左右的房子,而最近因市政府东迁而大火的通州75%的房子是2000年后。而东西城、海淀等区域则是各个年代的房子都有。

这里写图片描述

从这张图似乎更能明显的看出,昌平、通州、亦庄、燕郊都有一些颜色较深的色块。大兴、房山、顺义、亦庄、燕郊均有超过20%的2010年后的房子,东城、石景山、西城则有20%的90年以前的老房子。

5.各区学区

这里写图片描述

再来看一下喜闻乐见的学区房,不出所料,海淀区的学区房最多,朝阳区学区次之。由于没有对学区的质量进行分类,东西城这两区虽然数量不如前两者,但是从质量上这两区应该是不言而喻的。

上面,从5个方面分区域做了一下比较,总结一下,喜欢新房的多去昌平通州等区走走,想要学区房的海淀、朝阳是你的选择,如果你只想最贵的,那么东城、西城是你的不二之选,如果你是土豪,顺义是个好去处。

五、一些有意思的事

1.房子是不是随着时代的发展越来越大了呢?

这里写图片描述

因为大部分房子都在1985 ~ 2015这个时间段,我将视角集中在这个时间段。图中红线为均值,蓝线为中位数。

从图上可以很清楚的看出在1995年房屋面积有一个很明显的上扬,到2000年左右保持平稳,从之前的60平到100平,从2005年开始又有小幅度的下降,难道是刚开始起高了?还有一点是,1995年前的房子,均值和中位数基本持平,95年之后均值大于中位数10个平方左右,是否可以得出以前我们都是无产阶级,现在确实有一部分先富起来了哈哈。

看来,随着时代的发展房屋面积确实有了不小的增长,希望随着时代的进步,人人都能住得起大房子。

2.学区房房价要比非学区贵多少呢?

这里写图片描述

数据显示,各个区学区房房价确实要比非学区贵一些,这个差距大概在5000 ~ 15000左右,石景山、西城这个差距较大,都在10000以上,昌平和海淀稍微低些,大约每平方相差8,9千,朝阳东城相差的不多,丰台通州几乎持平。

3.那些地方房价最贵?

这里写图片描述

这些房价最贵的地方除万柳其余都在二环以里,基本上分布在北京最中心的地带,果然寸土寸金啊。

4.哪些地方千万豪宅最多?

这里写图片描述

而一些豪宅就不一样了,除金融街其余都在三环以外。这也难怪,三环里面就那么点地方,早就占满了,想要豪宅就得往郊区盖,比如中央别墅区、西北旺都在五环以外。

5.哪些地方学区最多呢?

这里写图片描述

学区最多的十个区域,朝阳四个,海淀两个,西城两个,东城两个。

六、总结

通过两篇文章,我尝试对北京二手房的一些特点进行了分析,分析很初级,基本上就是统计个数量或者比例,对于一些高大上的统计分析方法也在学习当中,等学的差不多了,再补上。

说句题外话,即便是最简单的数据展示和统计分析也能让人学到不少东西,当你着手开始做的时候,你会碰到各种各样的问题,小到图形的字体怎么调整、图形的legend如何改变,大到一些统计方法的实用、数据的处理方法等,鼓励大家根据自己的兴趣,自己动手整一个小的数据集,在这个基础上有目的的进行学习,有道是,当你上路了,你就已经进步了。

打赏支持我写出更多好文章,谢谢!

打赏作者

打赏支持我写出更多好文章,谢谢!

任选一种支付方式

评论关闭