R爬虫小白入门:Rvest爬链家网+分析(二)

640?wx_fmt=png

作者:汪喵行  R语言中文社区专栏作者

知乎ID:https://www.zhihu.com/people/yhannahwang


前言

上面一章我们已经成功爬取了链家网的数据。按照同样的方法爬取,又成功爬取了3w条上海二手房源的数据,那么这一章就写写关于上海二手房的分析。


用到的软件:R,Tableau

一开始还是在R中画的图,后来觉得不是很好看,所以用tableau。

首先读取文件

1library(ggplot2)
2house_info <- read.csv("house_inf0.csv",stringsAsFactors = FALSE)


1.哪个地方房价最高

在一开始,数据集里的所有的区都是混在一起的,所以要画图,有一种比较笨的方法是把它们都分开,然后算每个区的均值,最后得到了这张图:

R爬虫小白入门:Rvest爬链家网+分析(二)_第1张图片

很明显,静安/黄浦/徐汇是上海二手房均价最高的三个区。最高的静安区二手房价达到将近10w/平米,最低的是青浦区,大概二手房均价在3.5w/平米左右。

画这张图的时候,我的方法还是比较笨的,但是暂时没想到啥好方法。画图的代码见最后

在R里面画图没有tableau方便,并且也没有那么好看,所以之后还是用tableau来继续做吧。


2.各区房源所在楼层和房型公布


R爬虫小白入门:Rvest爬链家网+分析(二)_第2张图片

如图所示,在所有区域的房源中,静安的楼平均最高平均18.25层,其次是黄浦(16.74层),再是长宁(13.67)。最低的楼层是奉贤(6层),闵行以及青浦。看来市中心真的是寸土寸金啊。sigh。

对于房屋所处楼层的方差来说,黄浦,静安,虹口,普陀等区的楼层分布都很不均匀,静安最高二手房楼层为33层,最低为3层,而变化最小的闵行,最高二手房楼层在9.32左右,最低的在5.20左右。

由此可知,越靠近市中心,二手房房源的楼层越高,楼层之间的方差也很大,郊区的二手房源正好与市区的趋势相反。

图中的各种颜色代表了各种房型,这张图可能看的不是很清楚,我们看下一张:

R爬虫小白入门:Rvest爬链家网+分析(二)_第3张图片

哇知乎这个图的像素真的是渣到爆。

这是一个各地区的房源的户型图,每一个五角星的颜色越深,说明该类户型在该地区越多。这样我们可以直观看见,整个上海的2室1厅和2室2厅是最多的,其中浦东的2室1厅尤其(665个)。

3.各地区房源平均面积


R爬虫小白入门:Rvest爬链家网+分析(二)_第4张图片

由图可见,青浦/松江/奉贤等地区,二手房源的面积都是比较大的,而杨浦/闸北/虹口的房屋面积会比较小一些,可能这些区的人口居住密度比较大?静安/黄浦的二手房的平均面积比想象中的要大,这是一件蛮有意思的事情



  1. 房价: 静安/黄浦/徐汇是上海二手房均价最高的三个区,最低的是青浦区

  2. 楼层高度:静安的楼平均最高,其次黄浦,最低的是奉贤

  3. 户型:2室1厅和2室2厅最多,尤其浦东。市区的户型比较丰富。

  4. 平均面积:青浦/松江/奉贤等地区,二手房源的面积都是比较大的,杨浦/闸北/虹口的房屋面积会比较小一些,静安/黄浦区的房源面积没有想象中的小,黄浦区的房源平均面积甚至排到了第四(可能是给有钱人住的23333)

R爬虫小白入门:Rvest爬链家网+分析(二)_第5张图片

附上R画图源代码

 1house_avg <- house_info[,c(4,5)] #取原数据的“房屋所在区域”“单位价格”两个变量
2
3house_aa <- data.frame()
4#算出每个区的平均价
5ave_HP <- sum(house_info[house_info$house_loc=='黄浦',]$house_unitprice)/nrow(house_info[house_info$house_loc=='黄浦',])
6ave_BS <- sum(house_info[house_info$house_loc=='宝山',]$house_unitprice)/nrow(house_info[house_info$house_loc=='宝山',])
7ave_HK <- sum(house_info[house_info$house_loc=='虹口',]$house_unitprice)/nrow(house_info[house_info$house_loc=='虹口',])
8ave_JD <- sum(house_info[house_info$house_loc=='嘉定',]$house_unitprice)/nrow(house_info[house_info$house_loc=='嘉定',])
9ave_JA <- sum(house_info[house_info$house_loc=='静安',]$house_unitprice)/nrow(house_info[house_info$house_loc=='静安',])
10ave_MH <- sum(house_info[house_info$house_loc=='闵行',]$house_unitprice)/nrow(house_info[house_info$house_loc=='闵行',])
11ave_PD <- sum(house_info[house_info$house_loc=='浦东',]$house_unitprice)/nrow(house_info[house_info$house_loc=='浦东',])
12ave_PT <- sum(house_info[house_info$house_loc=='普陀',]$house_unitprice)/nrow(house_info[house_info$house_loc=='普陀',])
13ave_QP <- sum(house_info[house_info$house_loc=='青浦',]$house_unitprice)/nrow(house_info[house_info$house_loc=='青浦',])
14ave_SJ <- sum(house_info[house_info$house_loc=='松江',]$house_unitprice)/nrow(house_info[house_info$house_loc=='松江',])
15ave_XH <- sum(house_info[house_info$house_loc=='徐汇',]$house_unitprice)/nrow(house_info[house_info$house_loc=='徐汇',])
16ave_YP <- sum(house_info[house_info$house_loc=='杨浦',]$house_unitprice)/nrow(house_info[house_info$house_loc=='杨浦',])
17ave_ZB <- sum(house_info[house_info$house_loc=='闸北',]$house_unitprice)/nrow(house_info[house_info$house_loc=='闸北',])
18ave_CN <- sum(house_info[house_info$house_loc=='长宁',]$house_unitprice)/nrow(house_info[house_info$house_loc=='长宁',])
19aver_unit_price <- as.data.frame(c(ave_HP,ave_BS,ave_HK,ave_JD,ave_JA,ave_MH,ave_PD,ave_PT,ave_QP,ave_SJ,ave_XH,ave_YP,ave_ZB,ave_CN))
20names(aver_unit_price)[1]='aver_unit_price'
21location <- as.data.frame(c('黄浦','宝山','虹口','嘉定','静安','闵行','浦东','普陀','青浦','松江','徐汇','杨浦','闸北','长宁'))
22names(location)[1]='location'
23house_aa <- cbind(location,aver_unit_price)
24house_a1 <- house_aa[order(-house_aa$aver_unit_price),]
25#画图
26ggplot(data = house_a1,aes(x=house_a1$location,y=house_a1$aver_unit_price))+
27        geom_col(fill= "dark red",alpha = 0.9)+
28        labs(x="location",y="average_unit_price",
29            title = "Average unit_price for houses around SH")+
30        theme(axis.text.x = element_text(angle = 0,size=11),
31             panel.grid.major=element_blank(),
32             panel.grid.minor=element_blank(),
33             panel.background = element_rect(fill = "gray97"),
34             panel.border=element_rect(fill="transparent",color="light gray"),
35             plot.title = element_text(lineheight = 610,colour = "gray9"))


640?wx_fmt=gif


往期精彩:

  • 【3分钟速读】运营到底是干啥的?

  • R语言基于S3的面向对象编程

  • R语言信用评分卡:探索性数据分析

  • R语言中文社区2018年终文章整理(作者篇)

  • R语言中文社区2018年终文章整理(类型篇)

640?wx_fmt=jpeg

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战
回复 Python       1小时破冰入门
回复 数据挖掘     R语言入门及数据挖掘
回复 人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习     机器学习的商业应用
回复 数据科学     数据科学实战
回复 常用算法     常用数据挖掘算法

给我【好看】

你也越好看!

640?wx_fmt=png

你可能感兴趣的:(R爬虫小白入门:Rvest爬链家网+分析(二))