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

2019 年 3 月 2 日 R语言中文社区

作者:汪喵行  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.各地区房源平均面积


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



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

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

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

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



往期精彩:


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

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

给我【好看】

你也越好看!

登录查看更多
2

相关内容

最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
零基础人工智能入门(附源码)
PaperWeekly
6+阅读 · 2018年12月16日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
如何入门Python与机器学习 | 赠书
CSDN大数据
9+阅读 · 2017年11月12日
蒙特卡罗方法入门
算法与数学之美
7+阅读 · 2017年9月26日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
嘿,这是本应属于你的“红包”!
腾讯
3+阅读 · 2017年7月13日
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
Explanatory Graphs for CNNs
Arxiv
4+阅读 · 2018年12月18日
Arxiv
5+阅读 · 2018年3月28日
VIP会员
相关VIP内容
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
Python数据分析:过去、现在和未来,52页ppt
专知会员服务
99+阅读 · 2020年3月9日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
相关资讯
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
零基础人工智能入门(附源码)
PaperWeekly
6+阅读 · 2018年12月16日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
如何入门Python与机器学习 | 赠书
CSDN大数据
9+阅读 · 2017年11月12日
蒙特卡罗方法入门
算法与数学之美
7+阅读 · 2017年9月26日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
嘿,这是本应属于你的“红包”!
腾讯
3+阅读 · 2017年7月13日
Top
微信扫码咨询专知VIP会员