php做网站弊端/百度精简版网页入口
目录
- 一.项目背景
- 二.项目任务
- 三.数据分析
- 1 数据爬取
- 2 数据清洗与处理
- 3 数据分析:
- 3.1 描述性分析 10
- 3.1.1 查看 均值、中位数、标准差、四分位数: 10
- 3.1.2 查看房价的 最大值 和 最小值 10
- 3.1.3 连续变量 看 最小、最大值、平均数、中位数、标准差 11
- 3.2 探索性分析 11
- 3.2.1 单位面积房价频数图 11
- 3.2.2 二手房区域饼图 12
- 3.2.3 各地平均房价 12
- 3.2.4 不同楼层数目占比与价格 13
- 3.2.5 房间数与单位面积价格箱图 14
- 3.2.6 不同厅数单位面积房价箱图 15
- 3.2.7 交通便利与否数列与价格 15
- 3.2.8 不同建筑结构的平均价格 16
- 3.2.9 不同装修平均价格 17
- 3.2.10 不同朝向平均价格 17
- 3.3 数据建模
- 四.总结:
一.项目背景
当今社会,随着社会的发展,房价问题已成了一个普遍的问题,而房地产市场的供给和需求的高度层次性和差别性由于人口、环境、文化、教育、经济等因素的影响,房地产市场在各个区域间的需求情况各不相同,从而造就了房价高低不同,房价问题已成了一个普遍的问题,而房地产市场的供给和需求的高度层次性和差别性由于人口、环境、文化、教育、经济等因素的影响,房地产市场在各个区域间的需求情况各不相同,从而造就了房价。随着国家经济的高速发展,房价问题已经成为经济发展中的突出问题,同时也是民众最关心的民生问题.近年来,中国各地房价都在大幅上涨。如今南宁房价居高不跌,使打工人望尘莫及,因此,想对南宁房价加以分析与研究,找出低房价区域。
二.项目任务
此次项目任务是针对想在南宁买房自住或者房地产投资的客户,对南宁房价进行分析,分析的开始则是在网上爬取数据,并对数据进行可视化分析。当中所需要的技术是python的scrapy爬虫框架,以及matplotlib、pyecharts包。爬取数据后,对南宁二手房进行分析,让买方清楚南宁二手房状况,理解价格,尝试找出南宁房价规律,对选择二手房能防止被骗。也可以使卖方清楚自己房子的定位价格,并对数据建立预测模型,根据假想条件,预测出房价。
三.数据分析
1 数据爬取
此次获取数据采用的是scrapy爬虫框架,爬取的网址是链家网,地址选择的是南宁市。我爬出了6570条数据,链家的爬虫机制是爬取的条数是有限的,而我采取的反反爬虫对策是根据南宁市的每个区域分别爬取,这样就可以对全站爬出数据,不再受到限制。代码如下:
import scrapy
from ..items import LianjiaItemclass LjSpider(scrapy.Spider):name = 'lj'allowed_domains = ['lianjia.com'] #域名范围!!!start_urls = ['http://nn.lianjia.com/ershoufang/']start_urls = []locations = ['xixiangtangqu', 'qingxiuqu', 'jiangnanqu', 'xingningqu','liangqingqu','yongningqu'] # 城区for loc in locations:for page in range(1, 40):url = "http://nn.lianjia.com/ershoufang/{}/pg{}/".format(loc, page)start_urls.append(url)def parse(self,response):urls = response.xpath('//div[@class="info clear"]/div[@class="title"]/a/@href').extract() #获取每个二手房连接for url in urls: #逐条遍历出来print(url)yield scrapy.Request(url,callback=self.parse_lj)def parse_lj(self,response):item = LianjiaItem()try:item['ttprice'] = response.xpath('concat(.//span[@class="total"]/text(),.//span[@class="unit"]/span/text())').getall() #房子价格except:item['ttprice']=""try:item['price'] =response.xpath('.//span[@class="unitPriceValue"]/text()').getall() #元/平米except:item['price']=""try:item['place'] = response.xpath('.//div[@class="areaName"]//span/a[1]/text()').getall() #所在区域except:item['place']=""try:item['street'] = response.xpath('/html/body/div[5]/div[2]/div[4]/div[2]/span[2]/a[2]/text()').getall() #所在街道except:item['street']=""base1 = response.xpath('//div[@class="base"]//ul') ift=response.xpath('//div[@class="baseattribute clear"]/div[@class="name"]//text()').getall()try:item['huxing'] = base1.xpath('./li[1]/text()').getall() #房屋户型except:item['huxing']=""try:item['floor'] = base1.xpath('./li[2]/text()').getall() #所在楼层except:item['floor']=""try:item['area'] = base1.xpath('./li[3]/text()').getall() #建筑面积except:item['area']=""try:item['jiegou'] = base1.xpath('./li[4]/text()').getall() #户型结构except:item['jiegou']=""try:item['btype'] = base1.xpath('./li[6]/text()').getall() #建筑类型except:item['btype']=""try:item['chaoxiang'] = base1.xpath('./li[7]/text()').getall() #房屋朝向except:item['chaoxiang']=""try:item['build'] = base1.xpath('./li[9]/text()').getall() #装修情况except:item['build']=""try:item['tihu'] = base1.xpath('./li[10]/text()').getall() #梯户比例except:item['tihu']=""try:item['lift'] = base1.xpath('./li[11]/text()').getall() #配套电梯except:item['lift'] =""try:item['sub'] = ift[3] #交通便利except:item['sub'] = ""try:item['diya'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[7]/span[2]/text()').getall() #是否抵押except:item['diya'] =""try:item['name'] = base1.xpath('/html/body/div[5]/div[2]/div[4]/div[1]/a[1]/text()').getall() #小区名称except:item['name'] =""try:item['time'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[1]/span[2]/text()').getall() #挂牌时间except:item['time'] =""try:item['quanshu'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[6]/span[2]/text()').getall() #产权权属except:item['quanshu'] =""try:item['yongtu'] = base1.xpath('//*[@id="introduction"]/div/div/div[2]/div[2]/ul/li[4]/span[2]/text()').getall() #房屋用途except:item['yongtu'] =""yield item
得出的数据字段:
2 数据清洗与处理
得到数据后,对空值的剔除,修改格式,对价格单位的剔除方便后面分析
处理数据前:
获取数据后,使用pandas库,经过去重,排除空值,拆分
处理数据后:
图2-2
我把房间数目厅数都单独做出一列,楼层也是如此,其中‘rn’代表房间数,‘hall’代表厅数,’washroom’代表卫生间数,‘floor_1’代表楼层,‘floor’代表楼楼高。
3 数据分析:
3.1 描述性分析 10
3.1.1 查看 均值、中位数、标准差、四分位数: 10
3.1.2 查看房价的 最大值 和 最小值 10
3.1.3 连续变量 看 最小、最大值、平均数、中位数、标准差 11
3.2 探索性分析 11
3.2.1 单位面积房价频数图 11
3.2.2 二手房区域饼图 12
3.2.3 各地平均房价 12
3.2.4 不同楼层数目占比与价格 13
3.2.5 房间数与单位面积价格箱图 14
3.2.6 不同厅数单位面积房价箱图 15
3.2.7 交通便利与否数列与价格 15
3.2.8 不同建筑结构的平均价格 16
3.2.9 不同装修平均价格 17
3.2.10 不同朝向平均价格 17
3.3 数据建模
四.总结:
1.在完成项目过程中,全程由python实现,这也使我的代码能力有所提高,对数据处理能力更加了,scrapy的爬虫框架理解得更加深刻。
2.不足:是对数据理解层面不够,未能做到更清晰的分析,在之后会翻阅更多的资料来完善自己。
3.数据选取字段不充足,未能加上经纬度,由于2020年土地划分等级网上未能找出,所以未能加上地段等级,虽有2010年的地段划分,可是得出拟合结果一般,所以我为选择加上。
4.在南宁,平均房价都保持在一万出头价格,而且在良庆区和青秀区价格会更贵,在售的二手房也多。房间的厅数也会影响房子的平均价格,相反房间数存在影响不及厅数的大。
5.在买房过程中,如果我们有二次出售的想法,应参照上图选择房子所在地,建筑结构。建筑结构选择钢混结构会更好。在选择房源投资的话应注意
6.尽量选择青秀区和良庆区之间,因为房价高与在售房多透露出南宁未来的发展趋势所在地,对将来的房价升涨与否存在影响。
完整文档请移步