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

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

数据采集:

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

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

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

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

BeautifulSoup提取指定的字段了。

[python] view plain copy print?

fw = open("./chengdu.txt","a+")  
index = [i+1 for i in range(32)]  
for pa in index:    
 try:  
 if pa==1:  
            url = "http://cd.fang.lianjia.com/loupan/" 
 else:  
            url = "http://cd.fang.lianjia.com/loupan/pg%d/"%(pa)  
 print "request:"+url  
        req = urllib2.Request( url )  
        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")  
        req.add_header("Accept","*/*")  
        req.add_header("Accept-Language","zh-CN,zh;q=0.8")  
 
        data = urllib2.urlopen( req )  
        res = data.read()  
 #print res 
 #res = res.replace(" ","") 
 #print res 
 #objects = demjson.decode(res) 
 
        soup = BeautifulSoup(res)  
        houseLst = soup.findAll(id='house-lst')  
        resp = soup.findAll('div', attrs = {'class': 'info-panel'})  
 
 for i in range(len(resp)):  
            name =  resp[i].findAll('a', attrs = {'target': '_blank'})[0].text   
 
            privice = resp[i].findAll('span', attrs = {'class': 'num'})  
            privice =  privice[0].text  
 
            region = resp[i].findAll('span', attrs = {'class': 'region'})  
            address =  region[0].text.split('(')[0]  
 ##解析获得经纬度 
            location,city,district = getGdLocation(name)  
 if not location:  
                location = getBdLocation(address)#自定义函数 
 if not location:  
 continue 
            formatStr = "%s,%s,%s,%s,%s\n"%(city,district,name,location,privice)  
 print formatStr  
            fw.write(formatStr)  
 except:  
 pass 
fw.close()  

数据清洗:

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

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

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

数据分析与可视化:

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

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

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

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

二手房数据的箱型图

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

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

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

新房销售热度

二手房销售热度

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

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

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2018-02-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据小魔方

这是一篇很务正业的可视化推送~(上篇)

自带学习R语言以来,从来没用把这些技能用在自己的专业方向上,说好的学以致用呢~ 最近看到的一篇微信公众号推文,内容是关于山东省各县(细化到137个县级行政区)2...

2995
来自专栏SDNLAB

P4编程理论与实践——理论篇

由于对SDN充满着兴趣,在学习了一段时间OpenFlow之后,一次偶然的机会接触到了P4。P4可以实现很多新的Idea,但是无奈于国内的实践资料太少了(有些资料...

1219
来自专栏目标检测和深度学习

资源 | Texture:一个优雅的开源学术论文书写工具

机器之心整理 作者:思源 近日,Substance 在 GitHub 上开源了一个用于结构文本的文字处理工具 Texture,他们表示该工具像 LaTeX 一样...

33510
来自专栏数据结构与算法

网络最大流算法—最高标号预流推进HLPP

吐槽 这个算法。。 怎么说........ 学来也就是装装13吧。。。。 长得比EK丑 跑的比EK慢 写着比EK难 思想 大家先来猜一下这个算法的思想吧:joy...

3036
来自专栏机器之心

资源 | Texture:一个优雅的开源学术论文书写工具

机器之心整理 作者:思源 近日,Substance 在 GitHub 上开源了一个用于结构文本的文字处理工具 Texture,他们表示该工具像 LaTeX 一样...

2915
来自专栏CDA数据分析师

手把手教你用Python分析电影 | 以《蚁人2》为例

《蚁人2》自8月24日在中国大陆上映以来,已经有将近一个月。作为《复仇者联盟3》之后漫威出品的首部电影,《蚁人2》对漫威宇宙电影的剧情承转起着关键作用。9月20...

722
来自专栏数据小魔方

一点儿建议、一枚彩蛋~~~

这段时间写了太多的教程,感觉自己都写烦了,不知道大家看的烦不烦,今天没有教程,写一点儿心得总结下这段时间以来的经验和体会,顺便介绍一款图表插件,也将是小魔方下一...

3435
来自专栏PPV课数据科学社区

【学习】笨办法学R编程(一)

在倚天屠龙记中,有一人唤作火工头陀。此人练功不靠心法,只靠模仿他人招式,由外而内,自成一家。练习编程也有如此的法门,不看文字描述,只观察和模仿别人...

3065
来自专栏CDA数据分析师

手把手教你用Python分析豆瓣电影——以《我不是药神》《邪不压正》为例

《我不是药神》是由文牧野执导,宁浩、徐峥共同监制的剧情片,徐峥、周一围、王传君、谭卓、章宇、杨新鸣等主演 。影片讲述了神油店老板程勇从一个交不起房租的男性保健品...

1263
来自专栏钱曙光的专栏

一周极客热文:8张图理解Java

图:equals()方法、hashCode()方法的区别 HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在于: 如果两...

1757

扫码关注云+社区