四个步骤:
- 数据获取
- 用Python编写爬虫爬取链家二手房数据(当然也可以爬取其他平台)
- 通过百度API获取小区周围的配套设施数据
2. 数据清洗
- 用pandas等库进行数据清洗
- 用Excel进行数据清洗
3. 数据分析
- 用matplotlib、seaborn等库进行数据分析和可视化
- 用folium库进行地理数据可视化
4. 分析报告
- 总结分析,整理出报告
1.数据获取
1.1 链家数据爬取
以下是链家的链接:
成都二手房房源_成都二手房出售|买卖|交易信息(成都链家)
爬取之前先看一下,链接的robots协议:
https://cd.lianjia.com/robots.txt
确定那些内容是不能爬取的
本次爬取也仅用于学习交流,不做任何商业用途
详细的爬取过程以后再详细补充,内容实在有点多
先记录几个遇到的问题点:
1.1.1 直接可以查看爬取的数据不完整
- 搜出的房源有将近14W套
- 单页房源信息只有30条
- 可查看页数为100页(也就是说到了100页,就没有下一页的按钮了)
可直接查看的数据只有:30条*100页=3000条
https://t.lianjia.com/np08pE (二维码自动识别)
因为成都市可以分为区,区下面又分商圈,所以应对策略:
- 先爬出每个区的链接
- 再爬出每个商圈的链接
- 最后按照商区去爬取房源信息
获取后的信息
然后就是将获取的数据进行保存,前期我是保存成CSV
1.1.2 程序越运行计算机越卡:
现状:程序逻辑是先将房源的信息都保存到列表中,爬取结束后,一起存入csv
问题:是随着信息增多,占用内存越来越大,导致计算机越来越卡
对策:爬取一条数据,就直接写入到csv当中,存入硬盘中
数据爬取的效果是这样的:
当然后期我直接存入MySQL数据库的'houseinfo'表,也是有一样的逻辑,结果如下:
1.2 通过百度API获取小区周围的配套设施数据
程序大体框架:
- 先从小区信息表中,获取小区名字
- 用百度地图API通过小区名字,找出经纬度已经周边配套信息
- 将获取的配套信息保存到MySQL数据库的'around_supporting'表
源代码有200多行,这里就只贴一下主程序:
def
以下是数据获取的结果:
到这来,第一步就完成了
2.数据清洗
备注:本项目先是用Excel做过清洗和分析,那时候还没有用百度API回去小区周边的配套信息
2.1 用Excel的进行的数据分析
2.1.1删除重复项
先Ctrl+T 将数据表格化,选择表格,删除重复值
2.1.2添加列名,删选查看各列是否有异常值
没买过房,以为0室0厅的房子是异常,去链家确认了,确实有这样的房子
一些房源的部分信息(比如楼层、建筑年代)缺失,也需要处理
还有一些建筑日期是2022年的房子,也去链家确认,确实也是有的
关于数字要进行清洗,将数字和单位分开,便于后续分析
数据清洗比较繁琐,有很多小地方需要清洗完善,在此不一一列举
清洗结果是这样的:
2.2 用Python进行的数据分析
说明:
打开Jupyter notebook
导入相关的库
链接MySQL数据库,读取数据:
有异常列,也需要清洗
将数据单位去掉,便于分析,再添加房龄列'Age'
提取分析列,作为新的数据表‘infoc’
转换数据类型,便于后续分析
同样的方式处理周边配套信息表‘asp’
3.数据分析
3.1 使用Excel的数据分析
Excel也有描述统计的数据分析,和Python中的describe功能类似
再使用数据透视表分别对数据各个维度进行分析
之后就将图表放到一起,添加切片器,便可以制作出动态仪表板
因为前期不会用百度的API,就只能先求出各个商圈的平均房价,再根据商圈的名称查询经纬度,通过这些数据用Excel的三维地图,绘制出房价的热力图
以下是最终的效果:
3.2 使用Python的数据分析
备注:Python分析的数据,是5月重新爬取的数据,和Excel分析使用的数据有一些出入
3.2.1 对于房源信息表
3.2.1.1 同样先看一下描述统计
顺带瞅一眼,成都最贵的房子在哪里
3.2.1.2 按区域分组,并单价排名:
各区域占比绘制饼图:
3.2.1.3 按房型分组,并按照数量排名:
可以看出占比最大的房型分别是:'3室2厅 ', '2室1厅 ', '3室1厅 ', '2室2厅 ', '1室1厅 '
3.2.1.4 按房屋结构分组:
3.2.1.5 按房屋年龄分组分析:
3.2.2 周边配套信息表分析:
计算出周边配套的数量:
3.2.3 两表格联合分析:
3.2.3.1 地铁站数与二手房价格的相关性:
相关系数为:0.93,说明地铁站数与二手房价格有极强的相关性
3.2.3.2 公交站数与二手房价格的相关性:
相关系数为:0.68,说明公交站数与二手房价格有强相关性
3.2.3.3 医院和药店数与二手房价格的相关性:
相关系数为:0.75,说明公医院数与二手房价格有强相关性
相关系数为:0.02,说明药店站数与二手房价格极弱相关或无相关
3.2.3.5 教育资源与二手房价格的相关性:
分析数据,尾部数据样本占比较少,影响分析相关性,将占比小于1%的数据过滤出
小学,中学,幼儿园数量与二手房平均价格的相关系数分别为:-0.02、0.42、-0.65.
小学的数量和二手房平均价格为弱相关
中学的数量和二手房平均价格为中等程度相关
幼儿园的数量和二手房平均价格为强负相关
3.2.3.6 生活资源与二手房价格的相关性:
超市,银行,市场数量与二手房平均价格的相关系数分别为:-0.06、0.65、0.48.
超市的数量和二手房平均价格为无相关
银行的数量和二手房平均价格为强相关
市场的数量和二手房平均价格为中等程度相关
3.2.4 地理数据可视化:
整理需要的信息:
将两表进行联合:
用describe()方法,分析联合数据情况:
发现有部分经纬度超出成都市是范围,再次进行筛选
导入folium模块中相应的类
并绘制热力地图
热力地图放大可以发现,所有点的颜色一致,无法看出价格差异
用folium的Circle类,用函数可以添加我们相要的颜色:
用10000、15000、20000作为分界线
房价<10000:绿色
10000<房价<15000:黄色
15000<房价<20000:红色