2020,努力做一个无可替代的人!
长文多图,建议先收藏再看
写在前面的话
你好,我是小一
又要开始新的系列了,这个系列保证你一定会喜欢
考虑到前面的系列都是基础内容,而且篇幅还不少
所以这个系列打算多来点实战项目,像今天这种的,先做他十几二十个再说。
至于源码都会分享出来,一般都会在文末,需要的同学自取
做一下必要的介绍:
- 小一使用的Python版本是3.8
- 开发环境是Pycharm2019.3
- 图形可视化使用matplotlib+seaborn+echarts
为了显示美观,部分截图是在Jupyter 下运行的结果,大家不用纠结
使用echarts 是因为小一做过前端的一些开发,对echarts 的使用还相对熟悉点,文章中主要会用echarts 来做热力图
ok,开始我们的第一篇实战
正文
这是一篇关于深圳租房数据分析的文章
文章会对深圳整体、各区域的租房价格、房屋属性等多个维度进行分析
也会对深圳的租房价格洼地、热点区域分布等进行相关探索
首先,今天的数据集来自于之前的爬虫项目:
爬虫实战—拿下最全租房数据 | 附源码mp.weixin.qq.com今天的分析流程主要分为以下三步:
- 提出问题&问题分析
- 数据预处理
- 可视化分析与探索
如果对数据分析流程还不是很了解的同学可以看看前面的这篇文章:
2020,如何转行数据分析?mp.weixin.qq.com一、提出问题&问题分析
想必在提出问题之前,避免问题太大太夸张不能完成,我们得先了解一下数据都有什么
这里直接拿爬虫的需求字段数据看一下
# 数据字段
city: 城市
house_id:房源编号
house_rental_method:房租出租方式:整租/合租/不限
house_address:房屋地址:城市/行政区/小区/地址
house_longitude:经度
house_latitude:纬度
house_layout:房屋户型
house_rental_area:房屋出租面积
house_rental_price:房屋出租价格
house_update_time:房源维护时间
house_orientation:房屋朝向
house_tag:房屋标签
house_floor:房屋楼层
house_elevator:是否有电梯
house_parking:房屋车位
house_water:房屋用水
house_electricity:房屋用电
house_gas:房屋燃气
house_heating:房屋采暖
create_time:创建时间
house_note:房屋备注
一共21个字段,共21750条数据
1.1、数据特征分析
到这你可能会有疑问了,为什么先进行这个步骤?
在我们上面的22个特征中,会存在一些主要特征
像地址、房租价格、面积这些,是我们重点要分析的特征,而像房屋用水、用电、采暖这些就属于次要特征,可以进行辅助参考
就类似你去租房的时候你会首先考虑房屋的水电吗?你肯定是看了户型和价格觉得可以才会继续问水电,甚至就算水电不符合你的要求你也可能会说服自己租下的
在数据的21个特征中,其中主要数据特征包括:
- 出租方式(整租 or 合租)
- 地址(行政区-区域-小区名)
- 经纬度(房源经纬度数据)
- 格局(x室x厅x卫)
- 面积(xx m²)
- 价格(xxxx元/月)
房源编号、创建时间、采暖、备注等特征为多余特征
房源编号是房子的唯一标识,我们用小区名可以替代
深圳是沿海城市,暖气这个词似乎很遥远
创建时间没有可对比性
如果你的数据时间跨度比较大,可以做环比分析,这个时候时间字段就有用了,今天我们暂且用不上
剩下的特征都是次要特征,主要描述房屋的一些附加属性,例如车位、楼层、燃气等
1.2、提出问题
重头戏来啦,我们需要解决的问题是什么?
小一我每次搬家找房子的时候都会超级焦虑,每次都是
所以在准备做这个项目时就立刻有一个目标:如何找一个便宜又超值的房子?
嗯!也就是文章的标题,我要租个好房
我们都知道地铁口周围的房租会贵很多,那么我们知道了房源分布和价格,能不能模拟出城市的地铁线路?
这,是小一想到的第二个问题
另外,小一目前是做运营商网络数据分析的,所以就想着这个项目能够对网络的运营优化有一点点帮助,或者有个参考思路也行
这,是小一想到的第三个问题
1.3、问题分析
自己提的问题流着泪也要想出解决方法
对于上面的三个问题,我们首先需要对深圳的租房数据做一个整体统计
通过整体分布情况再次细分需要研究的数据特征,通过特征结果筛选分析确定最终的心仪目标
整体就是一个总—分的思想,从整体中选出符合要求的部分,针对部分再次分析,筛选、分析……
对于本次数据,我们可以从以下几个问题去进行分析:
- 深圳整体房源出租方式比例是什么样的?
- 深圳的房源数量分布是什么样的?
- 房租价格分布呢?
- 价格相对便宜的房源分布在哪些区域?
- 这些区域的房租、房源数据分布?
- ……
这样我们就可以在目标的导向下,一步步的去细分数据,去靠近目标,并完成最终的探索分析
二、数据预处理
终于到了预处理这一步,前面学习的Pandas、NumPy 都能派上用场了,是不是有点小激动?
问题已经明确,数据也都准备好了,开始我们的第一个难题:数据预处理
数据预处理我们需要处理以下问题:
- 数据统计、分布情况
- 找出缺失数据,选用合适的方法处理
- 找出异常数据,选用合适的方法处理
- 数据合并重塑
先来看一下数据的分布情况
一共22个字段,其中house_note 全部为空,经纬度数据有一条为空,其他全部不为空
等一下,经纬度只有一条空数据,是不是可以先处理一下?
ok,满足你,看一下缺失经纬度的数据
这里直接用最简单粗暴的处理方式:
去百度坐标拾取系统输入房屋地址拿到经纬度信息
# 使用经纬度填充异常值
df_data.loc[df_data.house_longitude.isnull(), 'house_longitude