在一个来北京不久的学生眼中,北京是一个神秘又充满魅力的大城市。它无比美好,但又无时无刻不再觊觎这你薄弱的钱包。
租房是很多人都离不开的硬性需求,这里就对从链家爬取的北京地区房屋出租数据进行一个简单分析。
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条数据。
从描述性统计来看,六列数值型数据均为严重右偏,其中以房屋面积和房屋价格偏离程度最大。
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. 树形图
其中打星号的是这次分析能够获取到的数据。