【案例分析】杭州二手房数据分析

2017 年 8 月 8 日 数萃大数据 鲁伟

记得上次用rvest包从某家网上爬取了杭州二手房数据,并详细介绍了爬取经过,后来有朋友留言说“哎,你这什么分析都没有啊”,当然什么分析都没有咯,小编给大家介绍就是如何用R语言来抓数据。后来小编一想,这好好的数据不能闲置,于是就拿来做一点分析,正好最近又在学习ggplot2,一起拿来进行简单的数据分析练手吧。本文参考了R语言中文社区的上海二手房数据分析,它的数据量比较大,拿清洗后的数据做了完整的回归分析和k均值聚类,限于数据特征的原因,小编这里后来放弃了做回归的打算,仅在ggplot2图形展示之后给了一个聚类分析,毕竟这里做的是简单的数据分析。

   

1
数据准备

将上次的爬虫代码稍微修改了下,以便对杭州各主城区进行分城区抓取。想了解抓取过程的童鞋可在文末点击阅读全文。总共抓取了杭州8个主城区大约8000条二手房数据,清洗后共得到7331条数据。有人可能会说我数据量比较小,数据确实是有点少了但那也没办法,杭州比不了北京和上海有那么多二手房房源。数据集有12个属性,包括房名、户型、面积、朝向、装修情况、有无电梯、地址、房龄、房屋总价、房屋单价和所属城区。完整数据结构如图所示。


    

为了对房屋面积、房龄和房价这样的连续属性进行分组,小编在数据集里面增加了四列,分别是面积分组、房龄分组、总价分组和单价分组。可在R里面简单看一下数据集的数据结构:



2
杭州二手房数据总体概览

接下来主要结合ggplot2对杭州二手房数据进行简单的可视化展示,一方面了解下目前杭州的二手房房价行情,另一方面就是为了练习ggplot2绘图语法,毕竟以后画图全用它了。

杭州二手房各区房源数量分布:

ggplot(hzhouse, aes(region)) + geom_bar(width = 0.7, fill = "skyblue3")


    

总体来看市区的二手房市场还是相对活跃的,西湖区拥有最多的二手房房源,可能是得益于其较大的城区面积,余杭大多属于城郊,也因为其面积较大,二手房数量也比较多。其余主城区二手房房源数量差距并不大,在此按下不表。

杭州二手房户型分布:

sort(summary(hzhouse$type), decreasing = T)[1:10]
3室2厅 2室2厅 2室1厅 4室2厅 1室1厅 3室1厅 1室0厅 5室2厅 5室3厅 4室3厅
2234   1117    957    791    790    406    369    229     62     50

杭州二手房最受欢迎的户型竟然是3室2厅型,而全城3室2厅型二手房房均面积有119.586平米,户型均价也有27740.64元,看来在杭州买房的人还是喜欢偏大户型,但最重要的还是有钱。   

typeup30 <- c('3室2厅','2室2厅','2室1厅','4室2厅','1室1厅','3室2厅','1室0厅','5室2厅','5室3厅','4室3厅','6室2厅','1室2厅','2室0厅','4室1厅','6室3厅')
hzhouse$type.new <- ifelse(hzhouse$type %in% typeup30, hzhouse$type, 'others')
typenew <- data.frame(table(hzhouse$type.new))
ggplot(typenew, aes(reorder(Var1,-Freq), Freq)) + geom_bar(stat = 'identity', fill = "skyblue3") + geom_text(aes(label = Freq), hjust = 0.5,vjust = -0.3) + xlab('type') + ylab('counts')

    杭州二手房户型前15分布图:

    

    

    杭州二手房面积分布:

ggplot(hzhouse, aes(area_fz)) + geom_bar(fill = "skyblue3")


面积在50~100平米之间的二手房约占了45%,200平米以上的豪宅仅占了8%,结合前面的最受欢迎的3室2厅户型来看,杭州二手房面积基本还是集中在100平左右。


杭州二手房房屋朝向前五统计

sort(table(hzhouse$orientation),decreasing=T)[1:5]
 南 南北   北 东南   东
3970 2256  196  176  138

买过房或者住寝室的大多会对房屋朝向耿耿于怀。就拿小编研究生寝室来说吧,阳台正怼着北边,常年不见天日,搁杭州这温暖潮湿的空气衣服发霉那是常有的事儿。还有东西向的只有早晚才能见阳光,北向的天天喝西北风,衣服也晒不干,至于风水讲究什么的就更复杂了,反正房屋朝向对于买房者而言肯定是重中之重了。


中国人自古讲究房屋坐北朝南,杭州二手房朝向当然毫不例外的是南或南北朝向,而地理原因、城市规划等都有可能是存在其他朝向的房屋的原因。


杭州二手房楼层分布:

ggplot(hzhouse, aes(floor)) + geom_bar(width = 0.5,fill = "skyblue3")

    


买房者对楼层的重视也是不言而喻,按理说顶层和低层的房子一般人都不太喜欢,顶层房子冬天冷夏天热,低楼层比较潮湿等等,这两种房子住起来不是那么舒服,所以原本以为卖房的大部分是这两种楼层。  不过从数据上看,楼层分布比较平均,原因可能和楼层的划分有关系,比如一座16层的楼房,1 ~ 5为低层,6 ~ 10为中层,11 ~ 16为高层,这样中楼层就比较多了。也不知道未知楼是什么鬼,可能是地下室也说不准。


杭州二手房房龄分布:

ggplot(hzhouse,aes(year)) + geom_bar(fill = "skyblue3")    

从图上看,杭州房子在05年和09年分别有一个建造高峰,具体当年是怎样的开发背景小编也没有去查,总之杭州二手房整体房龄还是较小的,市场上特别老的房子并不多。   

杭州二手房单价分布:

ggplot(hzhouse, aes(unitprice)) + geom_histogram(fill = "skyblue3")


原来杭州也有总价超4000万、单价近10万的二手房,赶紧查下数据看看是何方宝地,原来是东方润园的一套豪华联排别墅,吃根辣条压压惊。杭州二手房数据总体概览就简单看下了,下面再看看分城区的二手房数据概览。


3
杭州各城区二手房数据概览

先看看各城区二手房市场均价:

avg_unitprice <- aggregate(hzhouse$unitprice, by = list(hzhouse$region), mean)
avg_unitprice
 Group.1    x
1  滨江区 16055.57
2  拱墅区 19234.16
3  江干区 30840.30
4  上城区 28059.14
5  西湖区 31595.43
6  下城区 30222.90
7  萧山区 27901.41
8  余杭区 33646.74

反正这房子小编是觉得买不起了。

各城区二手房均价分布:

杭州各城区总价分布:

ggplot(hzhouse, aes(region, totalprice)) + geom_boxplot(outlier.colour="darkgreen", fill="skyblue3") + ylim(0,2000)


上城、西湖和滨江二手房总价均值和中位数都位居前列,且数据分布空间也比较广,而余杭等离市区较远的城区分布则较为集中,可能是同一时期建造的缘故。余杭区有个很明显2000万的异常点。


各城区单价分布:

ggplot(hzhouse, aes(region, unitprice)) + geom_boxplot(outlier.colour = "darkgreen", fill = "skyblue3") + ylim(5000,1000)

简单说下单价的几点,出去萧山和余杭之外,杭州其他6个城区的二手房单价大多都在25000以上,杭州本身核心城区并不大,6个主城区在地理上都比较紧凑,相互之间并不存在价格的大差距。现在单价10k的二手房在杭州可真没有了。江干的那个单价10万的房子可真扎眼啊,还扎心,没错,就是那套在前面揪出来的东方润园联排别墅。


限于篇幅,杭州各城区面积和房龄的箱线图分布这里就不摆了哈,再简单看两个扎心的数据就结束本节。

杭州单价最贵二手房地点分布:

newhzhouse <- subset(hzhouse,hzhouse$unitprice >= 78000, select = c(address, unitprice))
newhzhouse <- newhzhouse[-c(3,6,10,11,12,14,15,16,17,18,19),]
ggplot(newhzhouse, aes(address, unitprice)) + geom_bar(stat= "identity", fill = "skyblue3") + geom_text(aes(label = unitprice), colour = "black", hjust = 0.5, vjust = -0.3)

单价10万的那个联排别墅在钱江新城哈,见怪不怪。

杭州哪些地方豪宅多:

haozfang <- subset(hzhouse,hzhouse$totalprice >= 1800, select = c(address, totalprice))
haozfang <- haozfang[-c(5,6,9,10,11,15,16,19,20,22,24),]
ggplot(haozfang, aes(address, totalprice)) + geom_bar(stat = "identity", fill = "skyblue3") + geom_text(aes(label = totalprice), colour = "black", hjust = 0.5, vjust = -0.3)

    

都是1800万以上的房子,扎心了老铁!以后想在杭州买房的童鞋看到这些小区的名字赶紧躲开哈!


4
杭州二手房数据的简单聚类分析

虽说我们数据不多只有7000条,但为了练手小编也决定给这7000条二手房数据分个类,看看哪些房子应该被放在一起,考察下各类二手房的总体特征如何。在采用k均值聚类法之前,我们先看看这些数据到底能聚为几类。    

standrad <- data.frame(scale(hzhouse[, c("area", "totalprice", "unitprice")]))
myplot <- tot.wssplot(standrad, nc=15)

其中tot.wssplot为自编函数,这里就限于篇幅就不放函数代码了。

不同聚类数目下的组内平方和图:

    

    从该图可以看出,我们将数据聚为6类较为合适。下面直接进行k均值聚类:

set.seed(1234)
clust <- kmeans(x = standrad, centers = 6, iter.max = 100)
table(clust$cluster)

  1    2    3    4    5    6
1440  801  692 2333  121 1943

table(hzhouse$region, clust$cluster)
       
          1   2   3   4   5   6
 滨江区 343  20   1  38   3 378
 拱墅区 405  80   2  79  18 308
 江干区 135 161 115 262  10 127
 上城区  45  43  42 257   8 236
 西湖区 112 114 171 684  23 405
 下城区 164 113 107 348  21 194
 萧山区 108  43  42 184   5 146
 余杭区 128 227 212 481  33 149

aggregate(hzhouse$area, list(hzhouse$type), mean)
  Group.1         x
1   0室1厅  53.39500
2   0室2厅  51.33000
3   0室3厅 102.00000
4   0室5厅 185.00000
5   0室7厅 157.65000
6  11室5厅 133.00000
7  12室0厅 103.00000
8  13室5厅 994.00000
9   1室0厅  61.67206
10  1室1厅  53.11600

按聚类结果,比较各类中房子的平均面积、平均价格和平均单价:

aggregate(hzhouse[,c(3,10,11)], list(clust$cluster), mean)
 Group.1      area totalprice unitprice
1       1 140.45822   264.7014  18968.43
2       2 202.27441   628.9700  32011.09
3       3 111.02678   543.7095  49775.58
4       4  79.55775   252.9940  31921.65
5       5 328.45289  1617.2479  50873.14
6       6  67.56440   125.1951  18940.49

    所以,大体上而言,我们就可以将7000多套杭州二手房划分为以下几类:

    1. 超大户型。如上述第2类,平均面积在200平以上,总价和单价都比较高,户型也在4室2厅以上。这类房源大多处于城区中心,地理位置优越,各类资源集中造就其高价。

    2. 豪宅型。如上述第5类,基本以联排别墅为主,地段好,房子大,精装修,价格超千万。7000多套杭州二手房仅有121套这样的房子,毕竟是豪宅。

    3. 城郊大户型。如上述第1类,该类房源面积大,户型在3室2厅以上,但总价并不夸张,单价也是6类房型中较低的,可以预见的是这类房源并不在市中心或者离市中心较远。萧山部分、余杭多这样的房源。

    4. 精装小户型。如上述第4类,房子不大但价格不菲,多是地段优越的精装小户型,以2室1厅或3室1厅为主,全杭州这样的房源最多。

    5. 单身公寓或大众蜗居型。如上述第6类,和第4类一样,该类房型也是杭州的主流二手房类型之一,面积略小于精装小户型,价格相对便宜,是在城市打拼的年轻人的首选。

    6. 地段型。上述第3类,地段极好,在地铁口的几率极大,算不上大户型但价格惊人。

    

    最后绘制面积与单价的散点图,并按聚类进行划分:

ggplot(hzhouse[,c(3,10,11)], aes(x = area, y = unitprice, color = factor(clust$cluster))) + geom_point(pch = 20,size =3) + scale_colour_manual(values = c("red","blue","darkgreen","pink","orange","purple"))


对照该图和前述分析,相信大家能对杭州二手房的聚类分析有一个直观的感受啦。小编的杭州二手房数据分析练手到这里就结束啦,还有很多值得挖掘的内容,在这里限于篇幅就不去做了,大家有兴趣可以找我拿到数据按照这些套路自己练一练,这些都是可行的。

 

4
结语

说是简单的数据分析,但全程做下来小编也是花了不少时间的。基本的数据清洗就花了一整天时间,更不用说后面的画图调参数之类。还是那句话,纸上得来终觉浅,绝知此事要躬行。ggplot2我也是最近才上手,很多地方还很茫然,前面画图小到调一个简单的参数都要琢磨好久,但我相信这就是学习数据分析的过程,鼓励大家和小编一样,自己动手按照个人兴趣整一个数据集,然后用R或者Python进行分析,当你开始做了你就上道了。


回想小编当初刚读研那会儿,某天晚上躺在床上愉快地刷着知乎,刷到一条“数据分析是21世纪最性感的职业”,于是小编就很激动,认为自己找到了方向,下决心毅然决然地要成为一名数据分析师。后来,数据科学家这一名词又火起来了,作为一名对新事物极为敏感的小编,又下决心要成为一名数据科学家,快两年过去了,小编心底默默感激这个充满机会与挑战的数据时代,当初的那份对数据分析的热情好在还留在自己的精气神里。





参考资料

 https://zhuanlan.zhihu.com/p/24802969







推荐阅读

微课|ggplot2: 基础知识

微课|ggplot2: 散点图

微课|ggplot2: 折线图

微课|R基础绘图:箱线图

【Python微课】系列之一:Matplotlib基础绘图

【统计思想之十六】—— 古人学问无遗力,少壮工夫老始成。

易图秒懂の人工智能诞生

【案例分析】NBA球员投篮数据分析与可视化

更多微课请关注【数萃大数据】公众号,点击学习园地—可视化






欢迎大家关注微信公众号:数萃大数据





课程公告

python大数据分析培训班【杭州站】

时间:2017年8月18日-22日

地点:杭州亚朵吴酒店

更多详情,请扫描下面二维码

网络爬虫与文本挖掘培训班【宁波站】

时间:2017年9月23日-25日

地点:维也纳国际酒店(机场店)

更多详情,请扫描下面二维码










登录查看更多
1

相关内容

数据分析是指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
【大数据白皮书 2019】中国信息通信研究院
专知会员服务
137+阅读 · 2019年12月12日
今日头条技术架构分析
互联网架构师
11+阅读 · 2019年8月19日
2019年Q1中国互联网流量季度分析报告
艾瑞咨询
5+阅读 · 2019年5月15日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
【入门】数据分析六部曲
36大数据
18+阅读 · 2017年12月6日
shiny动态仪表盘应用 | 中国世界自然文化遗产可视化案例
R语言中文社区
10+阅读 · 2017年11月29日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
【大数据白皮书 2019】中国信息通信研究院
专知会员服务
137+阅读 · 2019年12月12日
相关资讯
今日头条技术架构分析
互联网架构师
11+阅读 · 2019年8月19日
2019年Q1中国互联网流量季度分析报告
艾瑞咨询
5+阅读 · 2019年5月15日
一文看懂怎么用 Python 做数据分析
大数据技术
24+阅读 · 2019年5月5日
文本分析与可视化
Python程序员
9+阅读 · 2019年2月28日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
教你用Python爬虫股票评论,简单分析股民用户情绪
数据派THU
10+阅读 · 2017年12月12日
【入门】数据分析六部曲
36大数据
18+阅读 · 2017年12月6日
shiny动态仪表盘应用 | 中国世界自然文化遗产可视化案例
R语言中文社区
10+阅读 · 2017年11月29日
Top
微信扫码咨询专知VIP会员