基于网络爬虫的城市住房租金可视化分析.doc

上传人:温桑 文档编号:48746109 上传时间:2022-10-07 格式:DOC 页数:29 大小:3.58MB
返回 下载 相关 举报
基于网络爬虫的城市住房租金可视化分析.doc_第1页
第1页 / 共29页
基于网络爬虫的城市住房租金可视化分析.doc_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《基于网络爬虫的城市住房租金可视化分析.doc》由会员分享,可在线阅读,更多相关《基于网络爬虫的城市住房租金可视化分析.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、河北金融学院2019届本科毕业论文学生姓名:张诗豪学号:20151209032018系别班级:信息管理与工程系 15信息本二 专业(方向):信息与计算科学题目:基于网络爬虫的城市住房租金可视化分析指导者: 孟东霞 讲师评阅者:庞灵 讲师2019年4月26日毕业论文中文摘要基于网络爬虫的城市住房租金可视化分析摘 要:本文将选取北京这个城市,利用Python语言用网络爬虫的技术获取北京贝壳网上的租房区域的租赁信息,包括城区、地点、租赁方式、面积、户型、房屋朝向与价格,通过数据挖掘中的决策树模型分析出北京的住房租金受到哪些因素的影响,然后基于影响因子和房屋租金的关系对北京租房相关信息进行可视化分析。

2、在可视化网站的总览页面中,对北京地图上的所有城区根据其均价使用深浅程度不同的红色进行区分,展示了不同城区的租房均价以及它们的排名和差异,在同一城区的页面上展示了不同小区租房均价及它们的排名和对比效果、整租与合租房均价的对比效果、各种户型的占比等等,为在北京需要短期或长期租房的人们提供价格参考,具有现实的租房指导意义。关键词:北京市;城区;住房租金;网络爬虫;可视化1毕业论文外文摘要TitleReptileCityVisualization Analysis of Urban Housing Rent Based on Web CrawlerAbstract This article selec

3、t the city of Beijing as study object, use Python language and the technology of web crawlers to obtain information of different rental area in Beijing from shell network, including urban areas, location, leasing mode, area, household type, housing orientation and price, analyze the factors affectin

4、g housing rents in Beijing through the Decision Tree Algorithm of Data Mining, and then display the relationship between these impact factors and housing rents on the website. On the overview, all the urban areas are marked with varying degrees of red color according to their average price. The webs

5、ite also shows the average price of rented houses in different urban areas, as well as their rankings and comparisons. The pages in different urban areas show the average price of rented houses in different districts, their rankings and comparisons,. the proportion of various types of houses, etc. S

6、ome guidance can be given to those who want to rent a house in Beijing for short or long term, which brings some practical significance.Keywords: Beijing; urban areas; housing rent; web crawler; visualization1目 录 1绪论11.1 研究的背景及意义11.2 国内研究现状11.3 研究方法介绍22 网络爬虫的介绍32.1爬虫的工作原理32.2 网络爬虫常用的框架32.2.1 Nutch爬虫

7、框架32.2.2 Crawler4j爬虫框架32.2.3 Scrapy爬虫框架32.3 BeautifulSoup库的介绍33 数据的获取53.1 爬虫的流程53.2多线程的设计53.3数据的解析53.4爬取的数据存储结构64影响因子的分析84.1北京市住房租金影响因子的分析84.1.1模型的选取84.1.2数据预处理84.1.3模型参数的配置104.1.4挖掘结果104.2 同一城区的住房租金影响因子的分析114.2.1模型的选取114.2.2数据预处理114.2.3模型参数的配置134.2.4挖掘结果135数据的可视化展示145.1 Web端数据库的设计145.2 服务器后端数据处理145

8、.3 前端图表的绘制155.4 图表分析165.4.1 均价总览分布图165.4.2 各城区细节图175.4.3 户型占比图1815.4.4 不同城区各个地点均价情况20结 论22参 考 文 献2341绪论1.1 研究的背景及意义随着社会生产力飞速发展,经济高速的腾飞与国家的城镇化进程的加快,城市市郊的拆迁人口以及大量的外来务工人员涌入城市,使得城市人口数量急剧膨胀。住房问题已经演变成一个重大的社会问题。据统计,2018年北京商品房的销售价格是全市职工每月的平均工资的4倍,这种巨大的差距与高涨不下的房价令在北京工作的人们望而却步,使得购买住房几乎不太可能,租房相比于住房显然是更现实的需求,同时

9、对于工作不太稳定且待遇一般的职工和刚毕业的大学生而言,租赁住房是最佳选择1。北京租房现象十分普遍。为此而生的有大量的租房中介,大型的中介平台如自如租房、链家、贝壳、租客,中型的以租房为主要功能的有如去哪儿、58同城、赶集网等,也有线下小型中介。贝壳网上关于北京的租房除了怀柔区,密云区,延庆区三个非主要城市区之外的14个区都有大量的数据,而且贝壳网还对每个区的每个地点都进行了分类,数据方面大量且可靠。所以本文对贝壳网的租房信息进行了获取,然后挖掘出房租的影响因子,最后将北京住房租金的一些重要的影响因子以及房价之间的关系做了可视化分析,为新毕业的学生以及诸多北漂提供一个理论参考。1.2国内研究现状

10、国内现有部分文献研究北京房租上涨原因的分析,如冯晓爽、郑桂环在房租快速上涨的原因和风险13中指出近期房租快速上涨的主因是金融过度创新。“金融+长租公寓”模式使得房屋中介机构可以快速、大幅收购与租赁房源,从中提高了房租的价格,从而提高了中介机构扩大规模的能力。也有一些专家学者研究了房价与房租的关系,如北京大学中国经济研究中心的徐滇庆在房价与房租中指出房屋购买价格与租赁价格是紧密相关的,对于房主来说,购房之后再出租是一个投资行为,如果房价上涨的很快,投资者会预估房价会继续大幅度上涨,这时租金收入在业主的投资回报中所占得比例并不大,这种情况下业主不会很快提高租金。然而当房价没有继续快速增长的趋势,涨

11、幅预期下降之后,房主就会提高房租来提高他们的投资回报率。国内的大多研究还是多集中于分析房价或者房租上涨的这种话题上,虽说房价的影响因子可能和住房租金存在一定的关联性,但只分析房价还是无法给迫切需要租房的人一些直观的和一些现实的指导和建议,尤其是在现在这个在一线城市买房对一般人来说不太可能的情况下。这也是本次研究的意义。1.3研究方法介绍本文对北京房租的研究分为网络爬虫部分、影响因子分析部分与可视化部分。爬虫部分用来获取北京贝壳网租房信息,采用Python为主要技术,以Requests框架,Requests库是在Python原生的网络包中为了更好的满足爬虫的各种需求而衍生出的强大且轻便的库。分析

12、影响因子是为了找出数据众多属性中与房租有关的属性,这部分采用的是SQL Sever Analysis Services中的决策树,生成的决策树选择的特征就是输出属性的影响因子。可视化部分的设计是为了直观展示出影响因子与价格之间的关系与其它一些租客想了解的信息。前端负责显示界面以及图表的绘制。Web部署部分用的是Django框架.Django是基于Python的动态Web开发框架,功能强大,带有ORM映射数据库的强大前沿技术,本项目采用的存储方式就是用的ORM技术。在Web前端同时采用jQuery库中的HighCharts插件作为页面中图表生成的工具。前端样式和排版由HTML、CSS完成,同时也

13、使用amaze UI框架对页面进行美化。开发工具的是使用Pycharm。2 网络爬虫的介绍2.1爬虫的工作原理获得网络数据就要用到网络爬虫,网络爬虫也被称作网络蜘蛛或是网络机器人,它是按照设定好的规则,采集那些处于蛛网上节点的猎物数据。自动获取爬取对象的各类相关信息的程序是脚本。它的工作流程基本是按照以下几个步骤:1.首先找到URL,通过自身的程序解析;2.将收到的URL加入到待抓取队列;3.从队列中去除需要的URL,先通过解析DNS,取得主机的IP,再将URL对应的网页下载下来,存储进已下载网页库中。然后,把刚才的URL放到已抓取URL队列。4.对以抓取URL队列中的URL进行解析,分析在队

14、列中的其它的URL,并且将URL放入待抓取URL队列,然后进入到下一个循环队列中。直到遇到设定的中止条件,停止获取URL及解析。2.2网络爬虫常用的框架2.2.1 Nutch爬虫框架Nutch是一款可以支持分布爬取的爬虫框架,是Apache的项目之一,存储依赖于Hadoop。但是值得注意的是,如果集群数量比较少的话,使用Nutch效率会比较低。2.2.2 Crawler4j爬虫框架Crawler4j是一款基于Java的轻量级单机开源爬虫框架,不支持分布式爬取,整体架构非常简单,功能相对比较单一。2.2.3 Scrapy爬虫框架Scrapy是一款基于Python的网络爬虫框架,也不支持分布式爬取

15、,可以使用少量的代码进行工作。2.3 BeautifulSoup库的介绍编写爬虫时,主要调用的是BeautifulSoup库中的方法来解析界面,再获得数据。BeautifulSoup是Python中的一个库,它最常被用于数据爬取方面,它提供一些Python式的函数用来处理如导航、搜索等功能。它同时也是一个工具箱,通过解析文档的方式为用户提供需要抓取的数据,因为比较容易,一个爬虫所需要的代码量往往并不大。BeautifulSoup能自动将输入的文档转换为Unicode编码的形式,将输出文档转换为UTF-8编码的格式。因此在使用时,我们无需考虑编码方式,除非文档没有指定一个编码方式,这时,Beau

16、tifulSoup就不能自动识别编码方式了。而后,仅需要再说明一下原始编码方式即可。BeautifulSoup已成为和lxml、html6lib一样杰出的Python解释器,为用户便捷地提供不同的解析方法或更快捷的速度。使用过程中要先导入bs4的库,再调用其中的一些方法。from bs4 import BeautifulSoup在使用的过程中,先通过html = getHTMLText(url) #获得目标的urlsoup = BeautifulSoup(html, html.parser) #对目标的html页面进行解析方便之后的数据读取解析界面,获得目标网页的对应信息,现在网页端调出开发人

17、员工具,找到目标信息在网页中对应的信息,然后通过soup.select()的方法获取,返回的类型是list。3数据的获取3.1爬虫的流程爬虫的获取数据部分主要是获取到目标网页的HTML,然后对HTML进行解析,解析就是在相应的格式里面采用正则表达式使用模块对字符串进行截取,再对获取到的信息进行存储。图3-1北京贝壳网截图本文爬虫设计是爬取贝壳网的租房信息,通过爬取页面获取城市指定版块的租房信息,对于每个版块,获得版块下所有出租房的信息,并且将这些信息写入文件保存,获得需要的版块数据。图3-2北京贝壳网截图3.2多线程的设计贝壳网有着非常巨大的住房信息量,假如单个程序过程化运行必将导致耗时巨大,

18、并且面临突然断网这种情况无疑是会失去巨大的数据,或者需要重新爬取,为了解决此问题,先获取北京的城区数,然后获得城区数的地区数,使用一个字典来存储城区和地区的对应关系。这里将采用Python多线程的方式,引入ThreadPool为程序运行提供线程池,开辟多个线程,然后针对每个版块写一个文件,启动相应的线程进行操作,实现多个线程同时进行,在完成后退出。多线程爬虫可以使多个线程同时进行,有效提升获取信息的效率,节省很多时间,尤其是在数据量很大的情况下尤为明显。以下是该处使用的代码:# 针对每个板块写一个文件,启动一个线程来操作 pool_size = thread_pool_size pool =

19、threadpool.ThreadPool(pool_size) my_requests = threadpool.makeRequests(self.collect_area_zufang_data, args) / 投入线程池 pool.putRequest(req) for req in my_requests /使用该线程遍历需要爬取的列表 pool.wait() pool.dismissWorkers(pool_size, do_join=True) / 完成后退出以上部分的代码在爬虫的start函数部分,start函数是开启线程的方式,代码中为每个线程提供了等待时间,也在线程完成的

20、时候做出了销毁操作。3.3数据的解析数据解析采用bs4库下的BeautifulSoup包,是基于lxml解析服务的包,采用selector的方式对HTML数据解析。主要方法有如下两种:1.find方法,返回一个selector element对象。在本设计中有获取列表项中具体信息、获取下一页地址等用途。2.find_all方法,返回一个selector element列表。本设计中这个方法的主要目的是为了获取列表页中的所有列表项。html = response.contentsoup = BeautifulSoup(html, lxml)house_elements = soup.find_a

21、ll(div, class_=content_list-item)for house_elem in house_elements:price = house_elem.find(span, class_=content_list-item-price)desc1 = house_elem.find(p, class_=content_list-item-title)desc2 = house_elem.find(p, class_=content_list-item-des)上述代码就是通过BeautifulSoup对获取到的HTML进行解析,然后在Soup容器中找出所有的租房列表项,再获取

22、到每一项的文本,以下代码将获取到的文本转化为有规则的信息。price = price.text.strip().replace( , ).replace(元/月, )infos = desc1.split( )layout = infos1size = descs1.replace(, 平米)category_pat = re.search(rd室(d厅)*(d卫)*, desc2)position = re.search(r/(东南西北+)/, desc2).groups()0这些代码分别获取到了每一项中的价格、布局、面积、类别、朝向等信息。3.4爬取的数据存储结构数据获取之后就是数据的存储

23、,下面是数据存储的关键代码:class ZuFang(object): def _init_(self, district, area, xiaoqu, mode, layout, size, price, category, position): self.district = district self.area = area self.xiaoqu = xiaoqu self.layout = layout self.mode = mode self.size = size self.price = price self.category = category self.position

24、 = positionZuFang是定义的租房类,类中有district, area, xiaoqu, layout, size, price, category, position等属性。爬虫程序将网站上的信息爬取完成后,会将包含这些属性的对象扔进存储池里。 def text(self): return self.district + , + self.area + , + self.xiaoqu + , + self.mode + , + self.size + , + self.category + , + self.position + , + self.price self.posi

25、tion = position所有对象存储为字符串的形式,属性后用“,”隔开。以“,”隔开后,将所有属性处理成隔开的CSV文件对象,因为CSV文件是以纯文本形式存储表格数据,其中的每一行也就是一个对象。为了贴合Django对数据进行可视化和展示,还将数据放入了SQlite数据库中进行存储,将在本文后面章节进行讨论。134影响因子的分析本文将对整个北京市的住房租金的影响因子以及每个城区的住房租金的影响因子做出分析,以论证住房租金网页可视化的科学性。4.1北京市住房租金影响因子的分析4.1.1模型的选取因为爬取的数据有着较大的数据量,且本次挖掘的目的是分析北京市不同城区、租赁方式、面积、户型、朝向

26、、价格中有哪些属性与房屋价格有关,关系有多大。所以选用决策树模型。本文采用的是SQL Sever Analysis Services中的决策树。决策树的目标就是将数据集按对应的类标签进行分类。最理想的情况是通过特征的选择把不同类别的数据集贴上对应类标签。特征选择的目标使得分类后的数据集比较纯。衡量一个数据集纯度是通过信息熵,信息熵表示的是不确定度。信息熵越小的数据集,样本的确定性越高,当数据集的信息熵为0时,该数据集中只有一种类型的样本。当选择某个特征对数据集进行分类时,分类后的数据集信息熵会比分类前的小,其差值表示为信息增益。信息增益可以衡量某个特征对分类结果的影响大小。 训练数据集中有很多

27、类型的样本,通过对数据集信息熵的判断,逐层划分数据集,最终将每一类样本单独划分出来。建立后的决策树选择的特征也就是属性的影响因子,所以这里通过建立决策树找出租房价格的影响因子是科学的。4.1.2数据预处理分析影响全市房租价格的影响因素需要所有的数据,因为数据是根据每个城区的不同地点爬取的,被存放在不同的CSV文件中,所以先将所有表合并,下面是合并后但未进行其他处理的表。表4-1 北京房租数据表昌平安宁庄合租14平米南3390昌平奥林匹克公园合租12平米北2730昌平奥林匹克公园合租14平米南3690大兴枣园整租40平米1室1厅1卫南5530大兴枣园整租42平米1室1厅1卫南5490大兴西红门整

28、租56平米2室1厅1卫南6230大兴西红门整租47平米1室0厅1卫南5100朝阳管庄整租61平米1室1厅1卫北5900朝阳欢乐谷整租57平米2室1厅1卫南6060朝阳欢乐谷整租58平米1室1厅1卫西北5700朝阳四惠整租64平米2室1厅1卫南北6100海淀西二旗整租83平米2室1厅1卫南7200如表1-1所示,第一列是城区。同一个城市不同的城区距离城市中心的距离不同,差异化的经济发展水平、教育水平都会影响到不同区域位置的房租水平。这一列数据都是干净的,不需要处理。第二列是房屋的地点,是房屋所在的具体位置,这一列属性的种类繁多,不利于分析与房租之间的关系,且这列与第一列城区有很强的相关性,所以删

29、除这一列,留下第一列作为输入属性。第三列是租赁方式,租赁方式包括整租和合租:整租是指出租一整套房子,房子的全部费用由租房个体独自承担,合租是将一套房子拆分成多个房间进行出租,租房的个体共同承担租金。第三列与第五列户型存在关联性,第三列中合租房的第五列属性都缺失,将其都填充为一室,同时根据第五列户型的情况将第三列的脏数据替换为整租。观察数据后根据户型中室的数量将数据划为一室、一室整租、二室、三室、四室、大于等于五室。第四列是房屋面积,北京的房屋面积差异较大,有小到十几平米的合租房单间,中等户型九十平米左右,大户型一百五十平米左右,还有很多超过三百平米的出租房。为了后续建立决策树时可选择可离散化型

30、,现将平米都去掉,只留下数值。第六列是朝向,好的朝向使房间的通风率较好,温度,湿度,噪音等情况也都会比较好,对住房的舒适度影响较大。该列属性大多为有南,北,东,北,东南,东北,西南,西北,南北(整租房中既有朝南的房间,又有朝北的房间),东西(整租房中既有朝东的房间,又有朝西的房间)等,因为其他值的数据太少,将其合并命名为其他。最后一列是价格,不存在脏数据,所以不作处理。另外,在前面增加一列作为键值,下图是处理后的数据.表4-2 北京市房租数据处理后的表序号城区租赁方式面积户型朝向价格1昌平合租141室南33902昌平合租121室北27303昌平合租141室南36904大兴整租401室整租南55

31、305大兴整租421室整租南54906大兴整租562室南62307大兴整租471室南51008朝阳整租611室北59009朝阳整租572室南606010朝阳整租581室西北570011朝阳整租642室南北610012海淀整租832室南72004.1.3模型参数的配置首先将数据导入SQL Sever,然后用SQL Sever Analysis Services进行挖掘,选择决策树模型,将城区、租赁方式、面积、户型、朝向作为输入属性,将增设的序号设置为键值,将价格设为输出属性。其次设置数据类型,城区、租赁方式、户型、朝向选择为离散型数据,面积和价格选择为可离散型数据。然后是划分数据集,将测试集占比

32、设置为30%。最后设置决策树为3层,因为数据量过大,设置层数过多可能会导致决策树过大,所以3层是较好的选择。4.1.4挖掘结果下图是北京市影响因素与输出属性即价格的关联图。根据图4-1可以看北京市租房价格的影响因子为面积和城区。所以在下文的均价总览分布图中着重分析城区、面积和价格的关系。图4-1影响因子关联图4.2同一城区内的住房租金影响因子的分析4.2.1模型的选取本次挖掘意在分析同一城区内的租金影响因子,同样选择SQL Sever Analysis Services决策树模型,原因同4.1.1所述。4.2.2数据预处理下面都拿昌平区举例,因为数据的爬取是按照昌平区每个地点爬取的,被存放在不

33、同的CSV文件里,所以应先将所有昌平区的数据进行合并成一个大表。下表是合并后但未进行其他处理的数据。表4-3 昌平区房租数据表昌平安宁庄整租47平米1室0厅1卫南5100昌平安宁庄整租78平米2室1厅1卫西南7200昌平安宁庄整租58平米1室1厅1卫西北5500昌平北七家整租63平米2室1厅1卫南北6300昌平北七家整租84平米2室1厅1卫东南6500昌平东关整租66平米2室1厅1卫东南6000昌平东关整租74平米2室1厅1卫西北6800昌平东关整租65平米2室1厅1卫南北6200昌平东关整租83平米2室1厅1卫南7200昌平霍营整租65平米2室1厅1卫东5600昌平霍营整租132平米3室2厅

34、2卫南北12000昌平霍营阳光北里57平米1室1厅1卫南5000昌平霍营整租47平米1室0厅1卫南5100因为要研究昌平区内哪些因素是房租的影响因子,所以第一列值都是昌平,对结果毫无意义,删除整列。第二列是住房的具体地点,都是干净的,不需要处理。第三列与第五列户型存在关联性,第三列中合租房的第五列属性都缺失,将其都填充为一室,同时根据第五列户型的情况将第三列的脏数据替换为整租。观察数据后根据户型中房间的数量将数据划为一室、一室整租、二室、三室、四室、大于等于5室。第四列是房屋面积,为了后续建立决策树时设置为离散化型,现将平米都去掉,只留下数值。第六列是朝向,将其合并为南,北,东,北,东南,东北

35、,西南,西北,南北,其他。最后一列是价格,不存在脏数据,所以不作处理。另外,在前面增加一列作为键值,下图是处理后的数据.下表是处理过的数据:表4-4 昌平区房租数据处理后的表序号地点租赁方式面积户型朝向价格1安宁庄整租471室南51002安宁庄整租782室西南72003安宁庄整租581室西北55004北七家整租632室南北63005北七家整租842室东南65006东关整租662室东南60007东关整租742室西北68008东关整租652室南北62009东关整租832室南720010霍营整租652室东560011霍营整租1323室南北1200012霍营整租571室南50004.2.3模型参数的配

36、置首先将数据导入SQL Sever,然后用SQL Sever Analysis Services进行挖掘,选择决策树模型,将地点、租赁方式、面积、户型、朝向作为输入属性,将增设的序号设置为键值,将价格设为输出属性。其次设置数据类型,地点、租赁方式、户型、朝向选择为离散型数据,面积和价格选择为可离散型数据。然后是划分数据集,将测试集占比设置为30%。最后设置决策树为3层,因为数据量过大,设置层数过多可能会导致决策树过大,所以3层是较好的选择。4.2.4挖掘结果下图是昌平区影响因素与输出属性即价格的关联图。根据图4-2可以看昌平区租房价格的影响因子为地点和面积。所以在下文的各城区细节图中着重分析地

37、点、面积和价格的关系。 图4-2影响因子关联图5数据的可视化展示本文的Web端可视化界面使用Django作为后端服务器平台,前端使用AmazeUI设计界面的显示风格和样式布局,使用jQuery完成用户点击事件和页面动画过渡效果。利用jQuery的插件Highcharts来完成图表的绘制。5.1 Web端数据库的设计为了页面展示有更好的响应速度,对CSV里存储的数据进行了转存,将其存到了SQlite数据库中。得益于Django的ORM模型,本系统对数据库的操作全部变为Python对象的操作,数据库的每一项数据都被映射为对象,而对对象的create、update、delete、query等数据库常

38、用操作不再需要写SQL语句。编写SQL语句到编写Python对象操作的转变不仅使得代码美观易懂,更是减少了开发者在数据库语言的学习成本,也减少了程序员对数据库操作不当的风险。Django对数据库的聚合操作也是很贴切,为了实现前端数据的各种格式json数据生成,聚合操作至关重要,在下文中将有体现。以下分析本项目中Web端数据库在Django的加持下的设计。# 城区表,如房山区,昌平区,海淀区class Area(models.Model): title = models.CharField(max_length=50)# 每个城区的具体地点,如海淀区的白石桥,军事博物馆等class Place(

39、models.Model): area = models.ForeignKey(Area, related_name=places) title = models.CharField(max_length=50)# 每个租房信息的表class House(models.Model): place = models.ForeignKey(Place, related_name=houses, db_index=True) # 外键,街道 title = models.CharField(max_length=50, blank=True) # 名称 category = models.CharF

40、ield(max_length=100, blank=True, db_index=True) #合租或者整租 layout = models.CharField(max_length=50, blank=True) # 布局 price = models.IntegerField(blank=False) size = models.IntegerField(blank=False) position = models.CharField(max_length=50, blank=True)从上面的代码中可以看出, 分为了三个表,区域表,街道表,租房信息表,而区域对于街道是一对多的关系,同样

41、租房信息与街道表也是一对多的关系。这样设计是为了防止冗余,而且关联每个租房信息和它所在的小区的信息,方便用于地区分类或者街道分类。5.2服务器后端数据处理本部分主要是使用聚合操作,聚合操作的目的是为了使每个类(如区域、住房)通过聚合运算增加一项或多项属性。areas_obj = Area.objects.annotate(count=Count(places_houses),avg=Avg(places_houses_price),).order_by(-avg)上面代码为每个区域的对象增加两个属性,分别是每个区域下的租房信息总量与每个地区下租金的均价。这两项数据都是数据库中没有的,在筛选对象

42、时优先进行这步操作能够减轻之后的运算时间,提高网站性能。除了使用聚合运算为每一个对象增加属性外,还有许多信息通过聚合运算得不到,这样的情况下,使用Pandas的DataFrame对象计算出每个地区的价格主要分布区间,如下代码:zz = House.objects.filter(place_area=area, category=整租).order_by(price)df = DataFrame(price: house.price for house in zz)zz_almost = df.groupby(dfprice/2000*2000).count().idxmax().price上面

43、代码为每个区域计算出整租型租房的价格集中区间,数据间距为2000,要然后算出在价格分布中哪个区间的租房量最大。先筛选出这个区域的所有整租型租房,按照价格排序后将它们的价格保存在DataFrame的数据框里,然后通过Groupby进行统计数量,Idxmax()方法是为了得出最多租房信息区间的区间租金。如此的用法还在计算合租型租房里有用到。5.3前端图表的绘制绘制图表主要使用JS的插件Highcharts,本文使用JQuery化的插件使用,一般情况下,Highcharts 包含标题、坐标轴、数据列、数据提示框、图例、版权标签等,另外还可以包括导出功能按钮、标示线、标示区域、数据标签等。在本设计中,为了显示的美观,使用户能够在一张图里获取到更多的信息,对很多属性进行了个性化设计。本文的主要用法如下:$(#charts-map).highcharts(Map, / selector选择器选择图表所在位置 Title: , legend:, series:data,);其中最主要的是Series中的data属性,data是绘制图像所需的数据,数据在后端生成,然后通过Ajax通信服务传输到前端进行绘制。如下代码是使用Ajax获取数据,然后使用Highcharts绘制:$.ajax( url: /g

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁