爬取链家北京租房数据并做简单分析

在一个来北京不久的学生眼中,北京是一个神秘又充满魅力的大城市。它无比美好,但又无时无刻不再觊觎这你薄弱的钱包。

租房是很多人都离不开的硬性需求,这里就对从链家爬取的北京地区房屋出租数据进行一个简单分析。

1. 明确需求

这次爬取数据分析的目的在于,通过爬取链家发布的租房信息,发现北京各地区的租房价格差异,以及探索影响北京租房价格的主要因素。

2. 提出猜想

简单分析了一下影响租房价格的因素,根据可以爬取到的数据选取了以下几个点:

  • 租房价格同面积、地理位置、公共交通因素高度相关
  • 租房价格受房屋格局、有无供暖因素影响
  • 租房价格几乎不受楼层、朝向、看房便利等因素影响

因为分析影响租房价格因素的树形图太长,放在文章末尾。

初步分析后借鉴了这篇文章加以完善:年轻人在租房网站找房的时候,他们在看什么?

3. 数据获取

租房数据全部来源于链家北京租房板块发布的信息,如下:

因为链家在当前分类下只最多展示100页共3000条数据,所以这里选择按照链家给出的地区分类,遍历爬取其所有地区展示的租房信息:

4. 数据清洗

1)调整格式

对房屋价格、房屋面积等字段进行调整,提取其中的数值。

2)重复值

格式调整后发现存在5182条重复数据,判断重复数据的标准为house_url字段,即每间房屋在链家上都对应唯一一个展示网页。

查看数据,发现在一对重复的数据间,除了posi_name和poai_name1两个字段,其余字段都完全相同。

posi_name和posi_name1对应的是在网页上展示的地区分类,也就是说,重复的这套房,既展示在大兴-亦庄的地区分类下,也展示在亦庄开发区-亦庄地区分类下;

好处是,链家既展示了该房屋在展示时的区域划分(posi_name+posi_name1),又展示了其实际划分(house_posi)。

所以删除posi_name和posi_name1这两列,将house_posi列以'-'划分后重新生成posi_name和posi_name1列,并且根据house_url字段重复数据只保留一条。

这里没明白为什么剩下两间明明是不一样house_url的租房信息却被判定为重复。

但是不重要,实际上整个数据是没有重复了,共17730条数据。

3)异常值 

从描述性统计来看,六列数值型数据均为严重右偏,其中以房屋面积和房屋价格偏离程度最大。

A. 查看房屋面积house_space

根据业务逻辑,房屋租金贵是因为房屋面积大,而房屋面积大并不是租金贵导致的。所以这里先查看房屋面积。

对房屋面积做箱形图,发现各城区普遍存在大量异常值:

但实际查看链家页面后发现,确实存在一些面积大的房屋出租,这并不是因为数据获取出错造成的数据误差。

这些面积太大的房屋数量少但数值大,这里选用箱形图的异常值判定标准:1.5倍IQR

将处于总体数据[Q1-1.5IQR, Q3+1.5IQR],即[-16.5, 179.5]之外的数据设为异常值并删除。

处理后绘图如下:

共删除1089条异常值,占比6.14%。

(这里只对总体数据的异常值做剔除,所以分地区统计时仍会发现存在部分异常值,但不影响数据整体?)

B. 对房屋租金house_price进行查看

基于房屋面积进行异常值清除后,整体数据仍然存在部分异常值:

虽然像朝阳西城这么中心的区域存在一些高租金的房屋很正常,但这个五万十万一个月也偏离市场行情太多了。

这里对house_price设个阈值,超过50000的即剔除,共剔除9条数据。

C. 室厅卫数据查看

居然还有存在9室2厅1卫这种房屋,房屋面积也才100出头……

因为室厅卫应该是属于一个整体的,所以接下来将室厅卫进行组合,查看各搭配组合出现的频次:

总共有77种组合,而其中出现20次以上的组合共24个,占比98.89%。

所以将出现次数为20次以下的组合删去,共删除184条数据。

D. 对楼层数据查看

在格式调整时就已经将楼层信息划分为两列数据:house_floor_str是高中低楼层,house_floor_num是楼层数。

但是查看分布后发现高低楼层和楼层数之间似乎没有明显对应关系,不知道链家在这方面是如何判别的。

所以直接丢弃house_floor_str和house_floor_num这两列数据,也不针对其做异常值判定。

5. 数据展示

1)各地区平均租房价格地理图

先来看一个总体租房价格水平:

  • 东城&西城&朝阳&海淀地区,租房价格是最贵的,平均价格皆接近万元
  • 丰台&石景山地区,因为离市中心距离较近,其房租价格也不便宜,平均租房价格在六千元左右
  • 昌平&顺义&通州&大兴等地区则稍微便宜一些,大致在五千元左右

因为pyecharts绘制的地理图是可交互的,截图展示会丢失很多细节,而且缺失“亦庄开发区”的信息。

所以接下来的图表均使用tableau进行展示。

(tableau自带地图没有精确到北京的每个区的信息,而北京各地区边界GPS数据暂时没有找到,接下来就不再用地理图的形式展现数据)

2)各地区房屋出租信息矩形树图

该图各区域面积大小表示租房平均价格高低,颜色深浅/数值表示该区域房源数量。

  • 朝阳区平均租房价格和房源数量均明显高于其他地区,并且望京、双井地区尤为突出。北苑地区相比来说价格稍低而房源数量多,或许是个朝阳租房的好去处
  • 昌平、大兴、通州等地区普遍租房价格较低并且房源较多,也很好地契合了北京租房一族地铁通勤一小时的概念。

3)各地区房屋租金面积对比图

柱形图的颜色表示平均房屋面积,数值表示平均每平米租金(租金/面积)。

由此可见:

  • 普遍来讲,租金高、距离市中心近的地区房屋面积要小于租金低、距离市中心远的地区
  • 东城、西城虽然平均租房价格比朝阳略低,但这两个地区房屋面积明显更小,因而每平米租金仍然比朝阳高出约17%
  • 昌平、顺义、通州等地区房屋面积相对更大而租金只是中心城区的一半,这也解释了为什么这些地区成了租房一族热衷的地方

4)房屋价格受地铁交通的影响

数据中存在两个明显异常的数值:

  • 东城交道口:只有1间无地铁的房屋,每平米租金454.5元
  • 西城崇文门:只有5间有地铁的房屋,每平米租金468.8元

在查看总体各地区的地铁影响时,将这两个数值给剔去。

由此可见:

  • 普遍来讲,近地铁的房屋比不近地铁的房屋,租金更贵,对于处于三四环附近的城区,租房价格提价在20%左右
  • 近地铁对房屋租金的影响程度,随地区离中心距离的增加,先增加再降低。
  • 距离中心较近的城区可能因为通勤距离短且地铁线路密集,出行方式多样成本低廉,近地铁因素并不太大影响租房价格
  • 距离中心中等距离的城区,出于通勤距离及上述分析,通勤人数多,日常通勤严重依赖公共交通。因而近地铁因素影响租房价格较大
  • 距离中心较远的城区如石景山通州,远离中心,通勤距离长通勤人数少,且地铁线路稀缺,因而近地铁因素对租房价格影响小

各地区受近地铁因素影响每平米租金数据:  

5)房屋朝向、结构等因素

关于集体供暖对租房价格的影响,这里不做分析。因为从数据中看,北京各城区有接近50%的出租房屋没有集体供暖,这是无法想象的。

而在链家网站实际查看时发现,没有打上集体供暖标签的房屋实际上仍有供暖。可能是因为链家数据录入时没有很在意这个指标,因而数据失真严重。

6. 结论描述

  • 北京租房价格受地理因素严重影响,越靠近内环租房价格越贵。以东城西城为极致。
  • 三四环附近如海淀、朝阳等区域,企业聚集人流量大,租房价格仍然居高不下
  • 对于租房一族,租房比较实惠的地方在丰台顺义昌平等地区,并且最好离附近地铁站有一定距离,借助共享单车或步行完成最后一公里路程,至少能给自己节省30%的经济支出
  • 至于房屋朝向、高低楼层等因素,从节省租金角度来看实在不必过多考虑

7. 树形图

其中打星号的是这次分析能够获取到的数据。

猜你喜欢

转载自www.cnblogs.com/xingyucn/p/10441215.html
今日推荐