加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 教程 > 正文

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

发布时间:2018-08-25 04:46:39 所属栏目:教程 来源:徐麟
导读:副标题#e# 技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战 房价高是北漂们一直关心的话题,本文就对北京的二手房数据进行了分析。 本文主要分为两部分:Python爬取赶集网北京二手房数据,R对爬取的二手房房价做线性回归分析,适合

Data.csv知识点存储文件路径默认是工作目录,关于Python中如何查看工作目录:

  1. import os  
  2.  
  3. #查看pyhton 的默认工作目录 
  4. print(os.getcwd()) 
  5.  
  6. #修改时工作目录 
  7. os.chdir('e:workpython') 
  8. print(os.getcwd()) 
  9. #输出工作目录 
  10. e:workpython 
  • 爬虫打印的是字典形式,每个房屋信息都是一个字典,由于Python中excel相关库是知识盲点,所以爬虫的时候将字典循环直接写入了CSV。

Pycharm中打印如下:

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

将字典循环直接写入CSV效果如下:

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

  • 很多初学者对于Address不知如何处理,这里强调一下Beautiful Soup 中.contents的用法,亲身体会,我在这里花了好多时间才找到答案。

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

02、R对爬取的二手房房价做一般线性回归分析

下面我们用R对抓取的赶集网北京二手房数据做一些简单的分析。

数据的说明

  • Name:主要是商家的醒目标题,不具备分析参考意义
  • Type:卧室数、客厅数、卫生间数
  • Area:面积(平方米)
  • Towards:朝向
  • Floor:楼层
  • Decorate:装修情况,如精装修、简单装修、毛坯房
  • Address:二手房的地址
  • TotalPrice:总价
  • Price:均价(元/平方米)

数据清洗

  1. data<-read.csv("E://Data For R/RData/data.csv") 
  2. DATA<-data[,-c(1,7)]#将Name和Address两列去掉 
  3. DATA[sample(1:nrow(DATA),size=10),] 

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

  1. #在爬取的时候加入了判断,所以不知道爬取的数据中是否存在缺失值,这里检查一下 
  2. colSums(is.na(DATA)) 

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

  1. #这里将Type的卧室客厅和卫生间分为三个不同的列 
  2. ##这里需要注意,有一些房屋没有客厅如:1室1卫这时候需要单独处理,还有一些没有厕所信息。 
  3. library(tidyr) 
  4. library(stringr) 
  5. DATA=separate(data=DATA,col=Type,into = c("Bedrooms","Halls"),sep="室") 
  6. DATA=separate(data=DATA,col=Halls,into = c("Halls","Toilet"),sep="厅") 
  7. ##将卫生间后面的汉字去掉 
  8. DATA$Toilet<-str_replace(DATA$Toilet,"卫","") 
  9. ###如图六,将Halls中带有汉字去掉,因为有一些房屋信息没有客厅,如:1室1厅,在分成卧室和客厅时,会将卫生间分到客厅一列。 
  10. DATA$Halls<-str_replace(DATA$Halls,"卫","") 
  11. ##取出没有客厅信息的数据,这些数据被separate到Halls列 
  12. newdata<-DATA[which(DATA$Toilet %in% NA),2] 
  13. newdata 
  14. ##将没有客厅的房屋信息Halls列填充为0 
  15. DATA[which(DATA$Toilet %in% NA),2]<-0 
  16. DATA[which(DATA$Toilet %in% NA),3]<-newdata 
  17. colSums(DATA=="") 
  18.   Bedrooms      Halls     Toilet       Area    Towards      Floor   Decorate  
  19.          0          0          2          0          0          0          0  
  20. TotalPrice      Price  
  21.          0          0  
  22.  
  23. ##发现有2个厕所没有信息,将其填写为0。 
  24. DATA$Toilet[DATA$Toilet == ""]<-0 

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

  1. ##这里将Area后的㎡去掉 
  2. DATA$Area<-str_replace(DATA$Area,"㎡","") 
  3.  
  4. ##查看Towards的类型 
  5. table(DATA$Towards) 
  6.  
  7. Towards    北向  东北向  东南向  东西向    东向  南北向    南向  西北向  
  8.      51      25      23      50      65      32    1901     678      38  
  9.  西南向    西向  
  10.      28      26  
  11. ##将Floor信息带括号的全部去除 
  12. DATA$Floor<-str_replace(DATA$Floor,"[(].*[)]","")##正则表达式 
  13. #查看Floor的类别信息 
  14.  低层  地下  高层 共1层 共2层 共3层 共4层 共5层  中层  
  15.   632    32   790    36    61   101    68   130  1016  
  16.  
  17. #分别将TotalPrice和Price后面的万元、元/㎡去掉 
  18.  
  19. DATA$TotalPrice<-str_replace(DATA$TotalPrice,"万元","") 
  20. DATA$Price<-str_replace(DATA$Price,"元/㎡","") 
  21.  
  22. head(DATA) 

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

  1. ##将数据转换格式 
  2. DATA$Bedrooms<-as.factor(DATA$Bedrooms) 
  3. DATA$Halls<-as.factor(DATA$Halls) 
  4. DATA$Toilet<-as.factor(DATA$Toilet) 
  5. DATA$Area<-as.numeric(DATA$Area) 
  6. DATA$TotalPrice<-as.numeric(DATA$TotalPrice) 
  7. DATA$Price<-as.numeric(DATA$Price) 
  8. DATA$Towards<-as.factor(DATA$Towards) 
  9. DATA$Decorate<-as.factor(DATA$Decorate) 
  10. str(DATA) 

Python爬取北京二手房数据,分析北漂族买得起房吗? | 附完整源码

以上数据清洗完毕。

03、描述性分析

这部分的主要思路是探究单个自变量对因变量的影响,对房价的影响因素进行模拟探究之前,首先对各变量进行描述性分析,以初步判断房价的影响因素。这里探究各个因素对总价影响。

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读