楼盘价格数据采集与可视化分析

 向AI转型的程序员都关注了这个号???


大数据挖掘DT数据分析  公众号: datadw



本文代码在公众号 datadw 里 回复 楼盘  即可获取。


本文就从数据采集、数据清洗、数据分析与可视化三部分来看看新的一年里房市的一些问题。


数据采集:

         数据采集即从网页上采集我们需要的指定信息,一般使用爬虫实现。当前开源的爬虫非常多,处于简便及学习的目的,在此使用python的urllib2库模拟http访问网页,并BeautifulSoup解析网页获取指定的字段信息。本人获取的链家网上的新房和二手房数据,先来看看原始网页的结构:


         首先是URL,不管是新房还是二手房,链家网的房产数据都是以列表的方式存在,比较容易获取,如下图:



其中包含的信息有楼盘名称、地址、价格等信息,回到原始网页,看看在html中,这些信息都在什么地方,如下图:



值得注意的是,原始的html为了节省传输带宽一般是经过压缩的,不太方便分析,可以借助一些html格式化工具进行处理再分析。知道这些信息后,就可以模拟http请求来拉取html网页并使用

BeautifulSoup提取指定的字段了。

本文来自 微信公众号 datadw  【大数据挖掘DT数据分析】


[python] view plain copy print?

  1. fw = open("./chengdu.txt","a+")  

  2. index = [i+1 for i in range(32)]  

  3. for pa in index:    

  4.     try:  

  5.         if pa==1:  

  6.             url = "http://cd.fang.lianjia.com/loupan/"  

  7.         else:  

  8.             url = "http://cd.fang.lianjia.com/loupan/pg%d/"%(pa)  

  9.         print "request:"+url  

  10.         req = urllib2.Request( url )  

  11.         req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")  

  12.         req.add_header("Accept","*/*")  

  13.         req.add_header("Accept-Language","zh-CN,zh;q=0.8")  

  14.           

  15.         data = urllib2.urlopen( req )  

  16.         res = data.read()  

  17.         #print res  

  18.         #res = res.replace(" ","")  

  19.         #print res  

  20.         #objects = demjson.decode(res)  

  21.           

  22.         soup = BeautifulSoup(res)  

  23.         houseLst = soup.findAll(id='house-lst')  

  24.         resp = soup.findAll('div', attrs = {'class''info-panel'})  

  25.           

  26.         for i in range(len(resp)):  

  27.             name =  resp[i].findAll('a', attrs = {'target''_blank'})[0].text   

  28.               

  29.             privice = resp[i].findAll('span', attrs = {'class''num'})  

  30.             privice =  privice[0].text  

  31.                

  32.             region = resp[i].findAll('span', attrs = {'class''region'})  

  33.             address =  region[0].text.split('(')[0]  

  34.             ##解析获得经纬度  

  35.             location,city,district = getGdLocation(name)  

  36.             if not location:  

  37.                 location = getBdLocation(address)#自定义函数  

  38.             if not location:  

  39.                 continue  

  40.             formatStr = "%s,%s,%s,%s,%s\n"%(city,district,name,location,privice)  

  41.             print formatStr  

  42.             fw.write(formatStr)  

  43.     except:  

  44.         pass  

  45. fw.close()  


数据清洗:

数据清洗,顾名思义就是将不合规的数据清理掉,留下可供我们能够正确分析的数据,至于哪些数据需要清理掉,则和我们最终的分析目标有一定的关系,可谓仁者见仁智者见智了。在这里,由于是基于地理位置做的一个统计分析,显然爬取的地理位置必须是准确的才行。但由于售房者填写的地址和楼盘名称可能有误,如何将这些有误的识别出来成为这里数据清洗成败的关键。我们清洗错误地理位置的逻辑是:使用高德地图的地理位置逆编码接口(地理位置逆编码即将地理名称解析成经纬度)获得楼盘名称和楼盘地址。对应的经纬度,计算二者对应的经纬度之间的距离,如果距离值超过一定的阀值,则认为地址标注有误或者地址标注不明确。经过清洗后,获取到的成都地区的在售楼盘及房屋数量总计在3000套的样子。


经过清洗后的数据格式为:



包括市、区、楼盘/房屋名称、经纬度、价格四个维度。


数据分析与可视化:

首先是新推楼盘挂牌价格与销售价格



市中心依然遵循了寸独存金的原则,销售价格远远高于郊县,一方面原因是位置地段、配套的独特性,一方面也是由于可供销售的土地面积、楼盘数量极为有限。


二手房销售价格和挂牌数量



二手房交易重要集中在市区及一些经济比较发达的郊县,不同区县的价格分化并不大,可能原因是老城区销售的二手房存在一部分老房子、同时二手房的价格卖家写的比较随意。


二手房数据的箱型图



这个就更为明显的印证了上面的结论,主城区的二手房存在一部分价格远低于市场均价的(即老房子),也有一部分价格昂贵的(新房、豪宅)出售,郊县的价格均方差则会低很多。


房屋销售热度的空间可视化

房屋销售热度以该区域的房屋销售数量和房屋销售价格综合来衡量,计算方式以该区域销售的房屋数量及销售价格进行加权。


新房销售热度


二手房销售热度


主城区没什么好说的了,人口密度大、买房售房的都多。在南边有一块远离市区的地方、新房和二手房的交易热度都很高,即成都市天府新区,目前配套和各项设施都不太完善,去这里花高价买房安家的老百姓想必不会太多,猜测是去年炒房热过年,这些人现在开始出售房屋了。

via http://blog.csdn.net/zbc1090549839/article/details/54692147



人工智能大数据与深度学习

搜索添加微信公众号:weic2c

长按图片,识别二维码,点关注



大数据挖掘DT数据分析

搜索添加微信公众号:datadw


教你机器学习,教你数据挖掘

长按图片,识别二维码,点关注

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值