美文网首页数据-R语言-图表-决策-Linux-Python
R爬虫小白入门:Rvest爬链家网+分析(二)

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

作者: 天善智能 | 来源:发表于2019-03-04 10:32 被阅读40次

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!

对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tstoutiao,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。

作者:汪喵行  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.哪个地方房价最高

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

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

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

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

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

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

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

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

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

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

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

3.各地区房源平均面积

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

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

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

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

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

  • 附上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"))

    往期精彩:

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


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


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


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

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

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

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

    相关文章

    网友评论

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

      本文链接:https://www.haomeiwen.com/subject/cpsbuqtx.html