备案 控制台
开发者社区 大数据 文章 正文

用数据说话:北京房价数据背后的数据

简介:

从2014年对楼市的普遍唱衰,到2015年的价格回暖,到底发生了怎样的改变?本文就尝试通过大数据来和丰富的图表,为大家展现数据背后的数据。

  • 数据采集采用笔者用C#开发的爬虫工具。
  • 数据清洗ETL采用了笔者开发的工具软件。
  • 数据分析采用ipython notebook和pandas
  • 可视化使用了matplotlib和seaborn.
  • 热力图使用了百度地图API, 按经纬度0.01度为一个子区域,计算其中的平均值作为当前区域的房价/二手房数量。

至于搭建ipython notebook和安装相应类库的操作,以及各个类库使用方法,可参考相应的教程。

数据来源

这些数据是笔者在2014年10月年和2015年10月份两次,在链家官网上抓取的在售二手房数据,2014年约为64000条,2015年总计约7W条。数据源可能会有偏差,因此结论仅供参考。附件有前1W条样例数据,可供下载。

首先我们导入所需的类库:

 
  
 
  
  1. # -*- coding:utf-8 -*- 
  2. import mongo; 
  3. import pandas as pd; 
  4. import csv; 
  5. from pandas import DataFrame,Series 
  6. 之后加载所需的数据: 
  7.  
  8. table2014 = pd.read_table("LJ2014.txt",encoding='utf-8',engine='python',quoting=csv.QUOTE_NONE) 
  9. table2015 = pd.read_table("LJ2015.txt",encoding='utf-8',engine='python',quoting=csv.QUOTE_NONE) 
  10. table2014[u'小区名']=table2014[u'小区名'].map(lambda x:unicode(x).strip("'")) 
  11. table2014[u'区县']=table2014[u'区县'].map(lambda x:unicode(x).strip("'")) 
  12. table2014[u'楼名']=table2014[u'楼名'].map(lambda x:unicode(x).strip("'")) 
  13. yeartable2014[u'年份'].map(lambda x:str(x).split('/')[0]) 
  14. table2014[u'小区']=table2014[u'位置'].map(lambda x:unicode(x).strip("'")) 
# -*- coding:utf-8 -*- import mongo; import pandas as pd; import csv; from pandas import DataFrame,Series

之后加载所需的数据:

table2014 = pd.read_table("LJ2014.txt",encoding='utf-8',engine='python',quoting=csv.QUOTE_NONE)
table2015 = pd.read_table("LJ2015.txt",encoding='utf-8',engine='python',quoting=csv.QUOTE_NONE)
table2014[u'小区名']=table2014[u'小区名'].map(lambda x:unicode(x).strip("'"))
table2014[u'区县']=table2014[u'区县'].map(lambda x:unicode(x).strip("'"))
table2014[u'楼名']=table2014[u'楼名'].map(lambda x:unicode(x).strip("'"))
year= table2014[u'年份'].map(lambda x:str(x).split('/')[0])
table2014[u'小区']=table2014[u'位置'].map(lambda x:unicode(x).strip("'"))

疯长的房价

从1992年到2015年,北京的房价经历了怎样的疯狂?可以查看下面的图表。

可以看到,1992年到2002年,呈现一个非常稳定的状态。从2008年起,北京的房价如同火箭一般上窜。

有意思的是,如果按照建造时间来绘制图表,会发现在2000年和2004年左右,达到高峰。在6W套二手房中,2000年总共建造了7697套,占比百分之11.21%。

 
 
  
  1. xcqu2014=table2014.groupby(by=u'位置'
  2. p=year.value_counts(); 
  3. pp=p.sort_index()[50:-1] 
  4. p.plot(title=u'北京各年建造房屋数量变化'

到了2014年,北京各个区县的二手房价格如下图:

 
  
  1. areag=table2014.groupby(by=u'区县'
  2. areag[u'价格'].mean().order(ascending=True).plot(kind='barh',title=u'各城区的二手房平均房价'

西城区和东城区的平均价格在五万五左右,之所以没有达到网上其他数据所提到的丧心病狂的9万,是因为我们分析的是二手房。目前二环内新楼盘的数量极少,几乎没有讨论的价值。

我们将房价以热力图方式绘制在地图上,就会非常直观:

颜色越深,代表其价格越高。除了西城,东城这些老城区,中关村(包含大量的学区房)和国贸(北京CBD)都价格高企。

如果我们改变缩放等级,进一步缩小地图范围,可以看到最贵的房子,集中在西单,南锣鼓巷,国贸,以及北新桥地区。

这些最贵小区的房价有多贵呢?下面列出排名前十的十个小区的价格:

xcqu2014[u'价格'].mean().order(ascending=False)[1:10].plot(kind='barh',title=u'价格最高的十个小区的平均房价')

文华胡同的位置在哪里呢?笔者专门去搜索了一下。这个超牛无比,价格在33万/平的文华胡同在靠近闹市口大街的西单商圈。

更夸张的是,两套房子都是平房,面积分别是12平和15平,其中一套还是1949年建的。中介给出的宣传标语是,最牛实验二小学区房,抢抢抢!这么小的面积,估计是四合院的厢房改造的吧。现在官网上已经下架。

什么样的房子最多?

我们先看,什么类型的楼房最多,下面给出了楼房总体高度的比例。可以看到,二手房中,六层是最多的。国家规定,七层就要装电梯了。因此在2000年以前,大部分的居民楼都是6层。

lc=lc=table2014.groupby(by=u'楼层').size();
lc.order(ascending=False)[:20].plot(kind='barh',title=u'楼高比例')

再看看不同面积的房子所占总数的比例。我们取面积为40-140平米的房子,进行了统计分析,结论如下图:

size=table2014.groupby(by=u'面积').size();
import re;
takenum= re.compile('\d+');
size=size[size.index.map(lambda x:takenum.match(x) is not None)]
size.index=size.index.map(lambda x:int(x))
size.order(ascending=False)[:100].sort_index().plot(kind='line',title=u'房型面积和对应比例')

首先选出面积值不为空且为数字的所有行,之后将其转换为int类型,后对其进行排序并绘图。

可见,60平的一室一厅或两室一厅最为常见。90平米的三居和两居也较多。

我们再对二手房存量绘制热力图:

可以看到,二手房主要集中在天通苑,北苑,望京,十里堡和通州。这基本上与北京2004年发布的《北京市城市总体规划2004-2020》的内容相符:

很有意思的是,绿色的区域相当空旷,比如笔者目前所在的三元桥地区,和酒仙桥之间隔了好大一片荒地,晚上夜跑时荒无人烟。

2014年到2015年的房价变化

下面是刚需读者最关心的内容,2014年到2015年的北京房价,经历了怎样的变化?众所周知,2014年房价走低,整体唱衰,甚至有商家打出了降价6000元/平的广告来推销房子。2015年,降准降息政策出炉,公积金贷款比例提高,北京房价回暖,我们知道肯定涨价了。但到底涨了多少呢?

这部分的代码多一些,选取价格少于10万,面积大于四十平米的房子,以减少错误的数据。求出2014年和2015年小区的交集,构造change结构,里面保存了每个小区的房子数量,2014年和2015年的平均价格。

 
  
 
  
  1. table2014table2014= table2014[(table2014[u'价格']<100000) & (table2014[u'面积']>40)] 
  2. table2015table2015= table2015[(table2015[u'单价']<100000) & (table2015[u'面积']>40)] 
  3. xcqu2014=table2014.groupby(by=u'位置'
  4.  
  5. table2015[u'面积']= np.round(table2015[u'总价']*10000/table2015[u'单价']) 
  6.  
  7. xcqu2015=table2015.groupby(by=u'小区'
  8. p2015=xcqu2015.mean()[u'单价'] 
  9. p2014=xcqu2014.mean()[u'价格'] 
  10. xcqumonunt2014=xcqu2014.size() 
  11.  
  12. xcqumerge=p2014.index&p2015.index 
  13. changeDataFrame({'2014': p2014[xcqumerge].values,'2015':p2015[xcqumerge].values,'mount2014':xcqumonunt2014[xcqumerge],'mount2015':xcqumonunt2015[xcqumerge]}) 
  14.  
  15. change['diff']=change['2015']-change['2014'] 
  16. change['percent']= np.round( change['diff']/change['2014']*100.0) 

我们按照2014和2015年价格增减的百分比,绘制出下面的房价变化数量比例图。可以看到,房价变化基本呈现正态分布趋势。但均值不在0点,靠近5%左右,整体右移:

 
 
 
 
  1. change[(change.percent>-30) & (change.percent<50)].groupby(by='percent').size().plot(title=u'不同涨跌幅度房子所占的数量'

经过统计,2014年的平均房价为40125/平,2015年为42535/平。涨价比例5.64%。也就是说,一套三百万的房子,平均涨了16万左右。

 
 
 
 
  1. change[(change.percent>-30) & (change.percent<50)].mean(by='percent'
  2.  
  3. 2014         40054.083797 
  4. 2015         42400.225776 
  5. mount2014       15.352119 
  6. mount2015       13.466281 
  7. diff          2346.141979 
  8. percent          5.508430 

我们列出10万元以下单价,2015年小区内二手房数量超过20套的涨价排名前十的小区:

 
 
 
 
  1. change[change.mount2015>20].sort(columns='percent',ascending=False)[:10] 

上地房价怎么涨了这么多?即使在北京,7万8的价格都已经是豪宅,可是上地的房子,一般都是普通的住宅。

原因还是学区房,海淀区教改使得这边的房子变化极大。 上地东里小区内建有上地实验小学,该小学可直升一零一中学上地分校,一零一中学上地分校位于上地西里北侧,就是这9年直升的诱惑导致该区域房价直线攀升。可怜天下父母心!

当然,有涨价就有降价:基本上,降价的小区都在非中心城区,例如樱花园就在顺义。

 
 
 
 
  1. change[change.mount2015>20].sort(columns='percent',ascending=True)[:10] 

结论

5%的涨幅,已经说明2015年比2014年价格回暖不少。也有少部分郊区小区降价。当然,这种涨幅和之前火箭般的涨价不可同日而语。可以肯定的是,像北京这样的城市,房子几乎是不可能大跌的。但未来的事情,谁知道呢?

安得广厦千万间,大庇天下寒士俱欢颜!

文章已经很长,因此没有将更多的内容囊括其中。我们还做了以下的事情:

  • 分析不同小区涨降价的原因并将其可视化到地图上。
  • 同一个小区中,不同的房子价格差别很大,甚至能差两万元。为什么会出现这种情况?
  • 根据房子周边的学校,医院,商场等场所,计算房子的附加价值。
  • 尝试预测不同小区未来的房价趋势。

  • 本文作者:沙漠之鹰
  • 来源:51CTO
知与谁同
目录
相关文章
ModelScope运营小助手
|
8月前
|
数据采集 数据挖掘 数据处理
探索“数据菜谱”无限可能:首届Data-Juicer大模型数据竞赛
数据是LLaMA、Alpaca等大语言模型(LLM) 的“食物” ,你心中的大模型米其林菜单会是什么样呢?
ModelScope运营小助手
633 0
此星光明
|
23天前
|
编解码 人工智能 移动开发
气候变化和人类活动对中国植被固碳的贡献量化数据月度合成产品
气候变化和人类活动对中国植被固碳的贡献量化数据月度合成产品
此星光明
15 0
是Yu欸
|
23天前
|
机器学习/深度学习 算法 数据挖掘
社交网络分析7:社交网络舆情分析 、 社交网络舆情演化传播建模 、 社交网络舆情用户研究 意见领袖识别 情感分析 、结构洞 、 生命周期 、 舆情分析 知识图谱 主题图谱 、 异质平均场
社交网络分析7:社交网络舆情分析 、 社交网络舆情演化传播建模 、 社交网络舆情用户研究 意见领袖识别 情感分析 、结构洞 、 生命周期 、 舆情分析 知识图谱 主题图谱 、 异质平均场
是Yu欸
516 0
-开发达人-
|
机器学习/深度学习 传感器 算法
北大&北航团队揭示电子转移规律,深度学习定量预测96种元素在任意压力下的电负性
北大&北航团队揭示电子转移规律,深度学习定量预测96种元素在任意压力下的电负性
-开发达人-
127 0
pushytao
|
Go
2020中石油组队训练第八场记录(上)
问题 D: Eeny Meeny 时间限制: 2 Sec 内存限制: 128 MB 题目描述 “Eeny meeny miny moe” is a well-known nursery rhyme in English, used (among other things) by kids to “randomly” select members of a team. It exists in many variations, one of which goes like this: Eeny, meeny, miny, moe, Catch a tiger by the toe.
pushytao
45 0
2020中石油组队训练第八场记录(上)
pushytao
|
Go 网络架构 iOS开发
2021中石油组队训练第八场记录(下)
题目描述 Alice and Bob decide to share a chocolate bar, which is an n by m rectangular grid of chocolate cells. They decide that Alice should get a < n·m pieces and that Bob should get b = n·m − a pieces. To split the chocolate bar, they repeatedly take a single piece of chocolate and break it either
pushytao
84 0
2021中石油组队训练第八场记录(下)
-编程工程师-
|
传感器
穿科技︱GOW智能T恤衫:时刻记录生命特征
穿科技︱GOW智能T恤衫:时刻记录生命特征
-编程工程师-
134 0
穿科技︱GOW智能T恤衫:时刻记录生命特征
spaceack
|
SQL 数据采集 JSON
天池大数据竞赛 Spaceack带你利用Pandas,趋势图与桑基图分析美国选民候选人喜好度
竞赛地址: https://tianchi.aliyun.com/competition/entrance/531837/introduction 首先,这是一篇面向新人的教程导向的分析文章,(by the way其实我也是新手,从比赛开始才学的Pandas库,这也是我的一篇学习笔记),所以会包含很多函数的基础用法,解题思路等等, 流程会比较详细。 其次,本文在官方教程基础上会加入创新内容,但是绝不会为了用而用某种新方法,一定本着分析数据有所帮助的原则和对数据敬畏的态度来做。
spaceack
401 0
天池大数据竞赛 Spaceack带你利用Pandas,趋势图与桑基图分析美国选民候选人喜好度
头条资讯
刘慈欣对话卡梅隆:《三体》的深度和广度,需要至少六部电影才能完美呈现
科幻电影适合原创剧本,而不适合改编。但当前国内科幻编剧太少了。
头条资讯
562 0
技术小能手
|
Web App开发 数据采集 Linux
六个维度、数万条数据帮你揭穿房租大涨的背后(附代码)
技术小能手
1567 0

热门文章

最新文章

  • 1
    基于OpenCV的双目摄像头测距(误差小)
  • 2
    Linux块层技术全面剖析-v0.1
  • 3
    Python零基础学习笔记(二)——数据的存储
  • 4
    Java9模块化遇坑
  • 5
    封装之打线简介
  • 6
    SSH远程管理OpenSSH使用
  • 7
    当autoBCC遇上scan to email
  • 8
    谷歌更改警告方式:可能会受到有国家资助的黑客组织攻击
  • 9
    MVC
  • 10
    使用EA逆向生成数据库E-R图
  • 1
    基于ssm+vue.js+uniapp小程序的家纺用品销售管理系统附带文章和源代码部署视频讲解等
    122
  • 2
    基于ssm+vue.js+uniapp小程序的游戏虚拟道具交易网站附带文章和源代码部署视频讲解等
    88
  • 3
    基于ssm+vue.js+uniapp小程序的代驾应用系统附带文章和源代码部署视频讲解等
    108
  • 4
    基于ssm+vue.js+uniapp小程序的学生工作管理系统附带文章和源代码部署视频讲解等
    83
  • 5
    基于ssm+vue.js+uniapp小程序的公司进销存管理系统附带文章和源代码部署视频讲解等
    85
  • 6
    基于ssm+vue.js+uniapp小程序的金融支付终端管理系统附带文章和源代码部署视频讲解等
    60
  • 7
    基于ssm+vue.js+uniapp小程序的校园疫情管控系统附带文章和源代码部署视频讲解等
    71
  • 8
    基于ssm+vue.js+uniapp小程序的个体户商城附带文章和源代码部署视频讲解等
    40
  • 9
    基于ssm+vue.js+uniapp小程序的长安材料批发市场管理系统附带文章和源代码部署视频讲解等
    60
  • 10
    基于SpringBoot+Vue+uniapp微信小程序的微信小程序跑腿的详细设计和实现
    50
  • 相关课程

    更多
  • 【新人赛】工业蒸汽量预测建模算法代码开源分享合集
  • 跨越N次元 一键变身AI漫画人
  • 场景实践-通过阿里云数据分析工具实现共享单车骑行分析
  • 创新应用类比赛汇总
  • 数据挖掘类比赛汇总
  • 场景实践 - 基于阿里云PAI机器学习平台使用时间序列分解模型预测商品销量
  • 相关电子书

    更多
  • 回归职业教育的本质:内容为王,质量至上,赢在口碑
  • 回归职业教育的本质 内容为王,质量至上,赢在口碑
  • 机器能预报多久后的天气——机器学习和可预报性
  • 相关实验场景

    更多
  • 函数计算部署AI艺术字应用,生成新春文字头像
  • 基于阿里云DeepGPU实例,用AI画唯美国风少女
  • 一键创建和部署高分电影推荐语音技能
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    聚圣源绿化公司起名参考姓宁的起名梁伟发契约之吻与真红之瞳睿字和什么字搭配起名2022年女孩起名足球越位五行缺金的男孩应起什么名字手机股票姓名大全免费起名宝典女孩起小名大全洋气一点的爱丽团购重生之大企业家工作室怎么起名大全给姓潘的女孩起名大全大全医疗器械公司起名字好听醉西游起名中药药起名tonystark男孩起名木字旁的三生三世枕上书怎么给男孩起个的英文翻译名字周记600男孩起名名字测分属猪陈姓起名新生儿孩子起名婴儿起乳名猪年宝宝给牧羊犬起什么名字好听呢生辰八字公司起名要点用翊字起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

    聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化