鏈家網(wǎng)上海市二手房數(shù)據(jù)采集與分析_第1頁
鏈家網(wǎng)上海市二手房數(shù)據(jù)采集與分析_第2頁
鏈家網(wǎng)上海市二手房數(shù)據(jù)采集與分析_第3頁
鏈家網(wǎng)上海市二手房數(shù)據(jù)采集與分析_第4頁
鏈家網(wǎng)上海市二手房數(shù)據(jù)采集與分析_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

目錄

1引言1

1.1項(xiàng)目背景1

1.2開發(fā)環(huán)境與工具1

1.2.1Python簡介1

1.2.2hadoop簡介1

1.2.3pyecharts簡介2

2需求分析2

2.1可行性需求分析2

2.2采集目標(biāo)功能分析3

2.3關(guān)鍵技術(shù)分析3

2.3.1網(wǎng)絡(luò)爬蟲技術(shù)3

2.3.2文件存取技術(shù)3

2.3.3可視化技術(shù)3

3數(shù)據(jù)采集4

3.1采集頁面分析4

3.2字段分析5

3.3編程實(shí)現(xiàn)5

4數(shù)據(jù)清洗與處理10

4.1數(shù)據(jù)清洗說明10

4.2數(shù)據(jù)清洗需求10

4.3編程實(shí)現(xiàn)11

5數(shù)據(jù)統(tǒng)計(jì)與分析14

5.1數(shù)據(jù)準(zhǔn)備14

5.2數(shù)據(jù)分析與展示15

5.2.1統(tǒng)計(jì)上海各區(qū)的房源數(shù)量和價(jià)格15

5.2.2統(tǒng)計(jì)每年建造的房屋數(shù)量和價(jià)格16

5.2.3統(tǒng)計(jì)最受歡迎的的樓層和平均價(jià)格17

I

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

5.2.4統(tǒng)計(jì)各個戶型的數(shù)量個平均價(jià)格18

5.2.5分析關(guān)注人數(shù)與價(jià)格之間的關(guān)系19

5.3本章小結(jié)20

6設(shè)計(jì)小結(jié)20

參考資料21

II

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

鏈家網(wǎng)上海市二手房數(shù)據(jù)采集與分析

1引言

以上海市的鏈家網(wǎng)二手房數(shù)據(jù)為研究對象,利用Python編程語言和相關(guān)技

術(shù),完成了數(shù)據(jù)采集、清洗、分析和可視化等一系列工作。通過對房屋價(jià)格、

面積、位置、戶型、朝向等多維度數(shù)據(jù)的統(tǒng)計(jì)分析,可以更好地了解上海市二

手房市場的現(xiàn)狀和趨勢,為購房者、房地產(chǎn)公司和政府監(jiān)管部門提供有益的參

考。同時(shí),本畢業(yè)設(shè)計(jì)也探討了Python在數(shù)據(jù)采集、清洗、分析和可視化等方

面的應(yīng)用,對于進(jìn)一步提升相關(guān)領(lǐng)域的數(shù)據(jù)處理能力和技術(shù)水平有一定的參考

價(jià)值。

1.1項(xiàng)目背景

隨著中國城市化的快速發(fā)展,房地產(chǎn)市場成為一個非常重要的經(jīng)濟(jì)領(lǐng)域。

其中,二手房市場對于購房者、房地產(chǎn)公司以及政府監(jiān)管機(jī)構(gòu)都具有重要意義。

因此,對二手房市場的數(shù)據(jù)進(jìn)行采集和分析,可以幫助人們更好地了解市場現(xiàn)

狀,做出更明智的投資決策,同時(shí)也可以幫助政府部門監(jiān)管市場秩序。而在這

一過程中,數(shù)據(jù)采集、清洗、分析和可視化等技術(shù)都發(fā)揮著至關(guān)重要的作用。

1.2開發(fā)環(huán)境與工具

1.2.1Python簡介

Python是一種高級編程語言,它的語法簡潔易懂,學(xué)習(xí)曲線較為平緩,因

此被廣泛應(yīng)用于各種領(lǐng)域,包括Web開發(fā)、數(shù)據(jù)科學(xué)、人工智能等等。Python

可以運(yùn)行在多個操作系統(tǒng)上,包括Windows、MacOS和Linux,而且有豐富的第

三方庫和工具可以方便地實(shí)現(xiàn)各種功能。Python也有很多優(yōu)秀的開源項(xiàng)目和社

區(qū)支持,使得開發(fā)和分享代碼變得更加容易??傊琍ython是一門易學(xué)易用、

功能強(qiáng)大、生態(tài)豐富的編程語言。。

1.2.2hadoop簡介

Hadoop是一個用于處理大數(shù)據(jù)的開源軟件框架,可以在廉價(jià)的硬件設(shè)備上

運(yùn)行。Hadoop的兩個核心模塊是HDFS和MapReduce。HDFS(HadoopDistributed

FileSystem)是一個分布式文件系統(tǒng),可以將數(shù)據(jù)存儲在多臺服務(wù)器上,提供

1

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

高可靠性和容錯能力,同時(shí)也支持大數(shù)據(jù)的高速讀寫。MapReduce是一種數(shù)據(jù)處

理模型,它能夠并行處理大規(guī)模數(shù)據(jù)集。它將數(shù)據(jù)劃分成許多小的塊,并在集

群上進(jìn)行并行計(jì)算,最后將結(jié)果匯總起來。MapReduce的核心思想是將數(shù)據(jù)分布

式地處理,這樣可以充分利用大規(guī)模集群的處理能力,從而實(shí)現(xiàn)快速處理大數(shù)

據(jù)。

1.2.3pyecharts簡介

Pyecharts是一個Python可視化庫,它可以幫助用戶用代碼生成各種各樣

的圖表,比如折線圖、柱狀圖、餅圖等。它使用的是百度的Echarts圖表庫作

為底層支持,因此生成的圖表非常漂亮、交互性強(qiáng)。同時(shí),Pyecharts還具有良

好的可擴(kuò)展性和靈活性,可以與各種Python框架和數(shù)據(jù)源進(jìn)行集成,使用非常

方便。

2需求分析

2.1可行性需求分析

1)技術(shù)可行性

采集部分:使用Scrapy框架進(jìn)行數(shù)據(jù)爬取,該框架已經(jīng)成為Python爬蟲

領(lǐng)域的標(biāo)準(zhǔn)框架,可用于高效地提取所需的數(shù)據(jù)。清洗部分:使用MapReduce

處理數(shù)據(jù),該技術(shù)可以分布式處理大規(guī)模數(shù)據(jù),能夠處理上海鏈家網(wǎng)的海量數(shù)

據(jù)。分析部分:使用Hive進(jìn)行數(shù)據(jù)分析,該工具可以輕松地處理大規(guī)模的數(shù)據(jù)

集,并且具有高性能和可擴(kuò)展性。可視化部分:使用Pyecharts庫進(jìn)行數(shù)據(jù)可

視化,該庫是一個基于Echarts的Python可視化庫,可以將數(shù)據(jù)轉(zhuǎn)換為直觀、

易于理解的可視化圖表。

2)資源可行性

采集和分析數(shù)據(jù)需要大量的計(jì)算資源,而且上海鏈家網(wǎng)二手房數(shù)據(jù)的更新

速度很快,因此需要強(qiáng)大的硬件和網(wǎng)絡(luò)資源來支持項(xiàng)目的正常運(yùn)行。本項(xiàng)目需

要使用高性能的計(jì)算機(jī)和高速的網(wǎng)絡(luò)連接,確保數(shù)據(jù)采集、清洗、分析和可視

化過程的高效性和穩(wěn)定性。

3)經(jīng)濟(jì)可行性

本項(xiàng)目的經(jīng)濟(jì)可行性主要取決于成本和收益之間的平衡。對于成本方面,

需要考慮硬件和軟件的費(fèi)用、人力成本等;對于收益方面,可以通過數(shù)據(jù)分析

和可視化,為房地產(chǎn)投資者提供有價(jià)值的信息和指導(dǎo)。同時(shí),還可以通過出售

2

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

數(shù)據(jù)或提供數(shù)據(jù)服務(wù)等方式獲得收益。

2.2采集目標(biāo)功能分析

本次項(xiàng)目的數(shù)據(jù)集的來源是上海鏈家網(wǎng)二手房網(wǎng)站,是通過scrapy爬取上

海市二手房的全部數(shù)據(jù)。分析鏈家網(wǎng)網(wǎng)頁信息,明確我們需要爬取的二手房出租

參數(shù)有租房名稱、住房簡介、地址、住房類型、戶型、價(jià)格、建筑面積在對原

始數(shù)據(jù)進(jìn)行預(yù)處理后我們會對其數(shù)據(jù)進(jìn)行多個維度的分析。

2.3關(guān)鍵技術(shù)分析

2.3.1網(wǎng)絡(luò)爬蟲技術(shù)

網(wǎng)絡(luò)爬蟲(又稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱

為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者

腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。但

是,網(wǎng)絡(luò)爬蟲技術(shù)的使用需要遵守相關(guān)法律法規(guī)和道德規(guī)范,同時(shí)應(yīng)尊重網(wǎng)站

的隱私和版權(quán),不進(jìn)行惡意訪問和數(shù)據(jù)濫用。

2.3.2文件存取技術(shù)

文件存儲技術(shù)是指用來存儲和管理數(shù)據(jù)文件的技術(shù),包括硬盤、U盤、光盤、

磁帶等儲存介質(zhì)。在計(jì)算機(jī)應(yīng)用中,文件存儲技術(shù)是最基本、最常用的技術(shù)之

一。在文件存儲技術(shù)中,硬盤是最常用的儲存介質(zhì)之一,其使用成本低、容量

大、讀寫速度快、可靠性高。U盤則是一種小型、便攜式的存儲設(shè)備,可隨身攜

帶,容量較小但讀寫速度較快。光盤也是常見的儲存介質(zhì),它具有高容量、長

期保存、易于傳播等特點(diǎn)。磁帶則主要用于備份數(shù)據(jù)和存檔,其存儲容量較大,

但讀寫速度較慢。

2.3.3可視化技術(shù)

可視化(Visualization)是利用計(jì)算機(jī)圖形學(xué)和圖像處理技術(shù),將數(shù)據(jù)轉(zhuǎn)

換成圖形或圖像在屏幕上顯示出來,再進(jìn)行交互處理的理論、方法和技術(shù)。在

數(shù)據(jù)分析領(lǐng)域,可視化技術(shù)可以幫助人們更好地理解數(shù)據(jù),從而做出更準(zhǔn)確的

決策。在現(xiàn)代數(shù)據(jù)處理技術(shù)的發(fā)展中,可視化技術(shù)成為數(shù)據(jù)處理技術(shù)不可或缺

的一環(huán),它可以使復(fù)雜數(shù)據(jù)變得易于理解和應(yīng)用。

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

3數(shù)據(jù)采集

3.1采集頁面分析

鏈家網(wǎng)()是中國最大的房地產(chǎn)在線交易平臺之一,成立于

2001年,總部位于北京市。該平臺提供了房屋買賣、租賃、房屋估價(jià)等房地

產(chǎn)相關(guān)服務(wù),涵蓋了全國范圍內(nèi)的房地產(chǎn)信息。在鏈家網(wǎng)中,每個城市都是一

個獨(dú)立的url,比如長沙市的url和上海市的url不相同,也不能通過跳轉(zhuǎn)進(jìn)

入其他城市的頁面。

本次項(xiàng)目主要采集上海市的房源信息,在百度搜索上海鏈家網(wǎng)即可找到官

網(wǎng),如下圖3-1所示:

圖3-1上海鏈家網(wǎng)

由于上海市房源數(shù)量非常巨大,如果使用requests進(jìn)行數(shù)據(jù)采集,效率會

相當(dāng)?shù)拖?。requests主要用于小規(guī)模的數(shù)據(jù)抓取和簡單的爬蟲需求,而scrapy

更適用于大規(guī)模的數(shù)據(jù)抓取和復(fù)雜的爬蟲需求。

所以本次項(xiàng)目使用scrapy進(jìn)行數(shù)據(jù)采集,scrapy有以下幾個特點(diǎn):

1)高效性:Scrapy基于Twisted異步網(wǎng)絡(luò)框架實(shí)現(xiàn),可以高效地處理大規(guī)模

爬取任務(wù),支持并發(fā)和異步請求,能夠快速地爬取目標(biāo)網(wǎng)站的數(shù)據(jù)。

2)可擴(kuò)展性:Scrapy提供了多種可擴(kuò)展的組件,如中間件、擴(kuò)展和管道,用

戶可以通過編寫自己的組件來實(shí)現(xiàn)各種自定義功能和擴(kuò)展需求。

3)靈活性:Scrapy提供了豐富的配置選項(xiàng)和可定制化的設(shè)置,用戶可以根據(jù)

實(shí)際需求來自定義爬蟲的行為、流程和數(shù)據(jù)處理邏輯。

綜上所述,Scrapy是一款功能強(qiáng)大、高效、可擴(kuò)展、靈活、方便、處理規(guī)則豐

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

富、支持多種數(shù)據(jù)格式的Python網(wǎng)絡(luò)爬蟲框架,適用于各種規(guī)模和復(fù)雜度的爬

蟲任務(wù)。

3.2字段分析

點(diǎn)擊頁面的“開始找房“按鈕,進(jìn)去選房頁。在選房頁中可以在篩選框中條

件查找自己感興趣的房源,在本項(xiàng)目中為了保證數(shù)據(jù)分析的真實(shí)性和正確性,

這里需要全量采集數(shù)據(jù),篩選框中都選擇全部。如下圖3-2所示:

圖3-2房源篩選頁

本次數(shù)據(jù)采集的字段有:房源名稱、區(qū)域、地址、戶型、面積、年份等字段,

這些字段都在縮略頁中有顯示,如下圖3-3所示:

圖3-3房源字段

通過觀察發(fā)現(xiàn),大多數(shù)字段都保存在HTML中,在解析字段時(shí),可以直接使

用xpath方法進(jìn)行獲取。其中“區(qū)域“字段比較特殊,在縮略頁中并沒有顯示,

所以在采集“區(qū)域”字段時(shí)需要逐一請求每個區(qū)域的url,并將該區(qū)域名稱進(jìn)行

保存。

3.3編程實(shí)現(xiàn)

到指定的目錄下,打開命令窗口,輸入如下命令創(chuàng)建scrapy項(xiàng)目,如下圖3-4

所示:

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖3-4創(chuàng)建scrapy項(xiàng)目

其中,lianjia是項(xiàng)目名稱,執(zhí)行該命令會在當(dāng)前目錄下創(chuàng)建一個名為

lianjia的Scrapy項(xiàng)目。該項(xiàng)目的目錄結(jié)構(gòu)如下圖3-5所示:

圖3-5scrapy項(xiàng)目的目錄結(jié)構(gòu)

Scrapy項(xiàng)目創(chuàng)建完成后,還需要根據(jù)具體需求進(jìn)行配置和修改,比如編寫

書解析方法、設(shè)置User-Agent、設(shè)置Pipeline、設(shè)置爬取速度限制等等。

1、Spider類實(shí)現(xiàn)

在Scrapy中,Spider類是用戶編寫爬蟲程序的核心類,它定義了如何進(jìn)行

網(wǎng)頁抓取、如何提取數(shù)據(jù)以及如何跟進(jìn)鏈接等一系列操作。在Spider類中,用

戶需要定義一些屬性和方法來實(shí)現(xiàn)網(wǎng)頁爬取的流程和邏輯。

需要設(shè)置的關(guān)鍵屬性如下圖3-6所示:

圖3-6設(shè)置spider類的屬性

這些基本屬性的設(shè)置可以在Spider類中進(jìn)行,用于指定爬蟲程序需要爬取

的網(wǎng)站和頁面。在爬蟲程序運(yùn)行時(shí),Scrapy會根據(jù)這些屬性自動發(fā)送請求,并

把響應(yīng)數(shù)據(jù)傳給回調(diào)函數(shù)進(jìn)行處理,從而實(shí)現(xiàn)數(shù)據(jù)的抓取和處理。

在回調(diào)函數(shù)parse方法中,通過xpath語法定位到區(qū)域的列表頁,通過for

循環(huán)遍歷每個區(qū)的url。如下圖3-7所示:

圖3-7區(qū)域列表

Parse方法的詳情如下圖3-8所示:

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖3-8parse方法

該parse方法是獲取區(qū)域url和名稱的關(guān)鍵方法。通過XPath表達(dá)式從響

應(yīng)對象中提取出上海所有區(qū)的鏈接和名稱,存儲在area_items變量中。通過循

環(huán)遍歷所有的區(qū)鏈接和名稱,并且通過yield語句將鏈接和名稱封裝在Request

對象中返回。每個Request對象都會被Scrapy框架自動發(fā)送請求,且返回的響

應(yīng)數(shù)據(jù)會被傳遞給parse_area方法進(jìn)行處理。它從起始URL開始,逐步解析網(wǎng)

站上的頁面,抽取出需要的數(shù)據(jù),并通過yield語句返回給Scrapy框架的

parse_area方法繼續(xù)處理。

parse_area方法如下圖3-9所示:

圖3-9parse_area方法

在parse_area方法中,通過循環(huán)遍歷每個房源的標(biāo)簽,通過xpath方法獲

取房源的各個字段,并將這些字段保存到字典中,并通過yield語句返回給

Scrapy框架進(jìn)行后續(xù)處理。

前面的parse方法和parse_area方法可以獲取到房源的所有字段,但是還

無法進(jìn)行翻頁處理,所以在parse_area方法中加入以下代碼即可進(jìn)行翻頁,如

下圖3-10所示:

圖3-10翻頁處理

next_page_url:該語句通過XPath表達(dá)式獲取下一頁的鏈接。在該實(shí)現(xiàn)中,

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

//a[contains(@class,"item-next")]/@href表示查找包含class屬性值

為"item-next"的a元素,并且獲取它的href屬性值。ifnext_page_url:

該語句判斷下一頁的鏈接是否存在。如果存在,就繼續(xù)進(jìn)行下一步操作;否則,

程序結(jié)束。

response.urljoin(next_page_url):該語句用于將下一頁的鏈接轉(zhuǎn)換為絕

對路徑。在Scrapy框架中,如果請求的URL是相對路徑,則需要使用該語句將

其轉(zhuǎn)換為絕對路徑,以便正常訪問網(wǎng)站。

2、LianjiaItem類實(shí)現(xiàn)

在Scrapy中,Item是用于存儲爬取到的數(shù)據(jù)的容器,類似于字典(dict)

的數(shù)據(jù)結(jié)構(gòu)。通過定義一個Item類型,并指定其包含哪些字段,可以將爬取到

的數(shù)據(jù)存儲為結(jié)構(gòu)化的形式,便于后續(xù)的數(shù)據(jù)處理和存儲。

Scrapy中的Item類需要繼承自scrapy.Item類,并通過定義各個字段來

描述數(shù)據(jù)的結(jié)構(gòu)。每個字段都是scrapy.Field類型的實(shí)例,用于描述每個字段

的類型和屬性,如是否允許為空、是否需要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換等。

在Spider中,當(dāng)爬取到一條數(shù)據(jù)時(shí),可以將其打包成一個Item實(shí)例并通

過yield語句返回,從而傳遞給ItemPipeline進(jìn)行后續(xù)處理。Item是一種

輕量級的數(shù)據(jù)容器,與數(shù)據(jù)存儲和處理邏輯解耦,使得爬蟲代碼更加簡潔清晰,

也方便進(jìn)行代碼復(fù)用和維護(hù)。

LianjiaItem類如下圖3-11所示:

圖3-11LianjiaItem類

LianjiaItem類是scrapy.Item子類,用于存儲從上海鏈家網(wǎng)爬取的房源信

息。其中,每個字段都是scrapy.Field類型的實(shí)例,用于描述每個字段的類型

和屬性。在spider中獲取到的房源信息會被打包成一個LianjiaItem實(shí)例并

在yield語句中返回,從而傳遞給Pipeline進(jìn)行后續(xù)處理。

3、Pipeline類實(shí)現(xiàn)

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

在Scrapy中,Pipeline是用于對爬取到的數(shù)據(jù)進(jìn)行處理的組件。Pipeline

接收爬蟲Spider返回的Item對象,然后進(jìn)行一系列的處理,例如數(shù)據(jù)清洗、

數(shù)據(jù)過濾、數(shù)據(jù)存儲等,并將處理結(jié)果傳遞給下一個Pipeline或輸出到文件系

統(tǒng)、數(shù)據(jù)庫等存儲介質(zhì)。

LianjiaPipeline類如下圖3-12所示:

圖3-12pipeline類

該P(yáng)ipeline會將爬取到的數(shù)據(jù)保存到一個txt文件中。在初始化函數(shù)

__init__()中,會創(chuàng)建一個文件對象self.file,文件名為"shData.txt",模式

為"w"即寫模式,編碼為"utf-8"。然后,將該文件的第一行寫入數(shù)據(jù)字段的名

稱,即LianjiaItem類中定義的字段名稱。在process_item()函數(shù)中,將傳入

的item對象轉(zhuǎn)換為字符串格式,并寫入文件中。最后,關(guān)閉文件的操作在

close_spider()函數(shù)中完成,該函數(shù)會在爬蟲結(jié)束時(shí)自動被調(diào)用。

4、運(yùn)行爬蟲程序

使用scrapycrawllianjia命令即可啟動scrapy框架,程序運(yùn)行結(jié)束后回

到當(dāng)前目錄下生成shData.txt,打開shData.txt文件如下圖3-13所示:

圖3-13shData.txt

數(shù)據(jù)采集是數(shù)據(jù)分析和數(shù)據(jù)挖掘的重要前置步驟,獲取到的數(shù)據(jù)可以用于建

模、預(yù)測、分類、聚類、可視化等任務(wù)。本項(xiàng)目一共采集了6萬多條記錄,這

個數(shù)據(jù)量已經(jīng)滿足了數(shù)據(jù)分析和可視化的要求。

9

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4數(shù)據(jù)清洗與處理

爬蟲采集上海鏈家網(wǎng)二手房源數(shù)據(jù)后,可以進(jìn)行數(shù)據(jù)清洗來保證數(shù)據(jù)的質(zhì)量

和準(zhǔn)確性,包括數(shù)據(jù)去重、數(shù)據(jù)篩選、數(shù)據(jù)格式化等,以便更好地進(jìn)行數(shù)據(jù)分

析和挖掘。例如,在上海鏈家網(wǎng)爬取的二手房源數(shù)據(jù)中可能會存在重復(fù)數(shù)據(jù),

如同一個房源在不同的時(shí)間點(diǎn)被采集,采集到的數(shù)據(jù)可能存在略微差異,因此

需要進(jìn)行數(shù)據(jù)去重處理,以避免數(shù)據(jù)分析時(shí)對同一數(shù)據(jù)進(jìn)行重復(fù)計(jì)算,從而導(dǎo)

致分析結(jié)果的誤差。

4.1數(shù)據(jù)清洗說明

使用MapReduce進(jìn)行數(shù)據(jù)清洗的優(yōu)勢在于其具有可伸縮性和容錯性。它是

一種分布式計(jì)算框架,能夠?qū)⒋髷?shù)據(jù)集分成若干個小數(shù)據(jù)集,對小數(shù)據(jù)集進(jìn)行

計(jì)算,最后將計(jì)算結(jié)果進(jìn)行合并,從而實(shí)現(xiàn)分布式計(jì)算。因此,當(dāng)數(shù)據(jù)量非常

大時(shí),可以使用MapReduce將數(shù)據(jù)分布到多臺計(jì)算機(jī)上進(jìn)行處理,提高處理速

度和效率。此外,MapReduce還具有容錯性,即當(dāng)某臺計(jì)算機(jī)出現(xiàn)故障時(shí),可以

將任務(wù)重新分配到其他計(jì)算機(jī)上進(jìn)行處理,從而保證了整個數(shù)據(jù)處理過程的可

靠性和穩(wěn)定性。

4.2數(shù)據(jù)清洗需求

原始文件的數(shù)據(jù)格式為txt文件,字段之間使用逗號進(jìn)行分隔,在使用

maoreduce讀取文件時(shí),需要使用逗號切分每一行,編寫對應(yīng)字段的數(shù)據(jù)清洗方

法。通過觀察原始數(shù)據(jù),可以剔除以下幾點(diǎn)數(shù)據(jù)清洗需求:

1)House_info字段是一個復(fù)合字段,可以從該字段拆分出:房型、面積、朝

向、裝修風(fēng)格、樓層和房源類型等字段

2)follow_info字段同樣也是一個復(fù)合字段,從該字段中拆分出:關(guān)注人數(shù)和

發(fā)布時(shí)間。

3)在all_price和square_price字段代表價(jià)格字段,在原始數(shù)據(jù)中,價(jià)格使

用逗號分隔,這一點(diǎn)跟字段分隔符發(fā)生了沖突,如下圖4-1所示:。需要將

該字段格式化,并剔除單位。如:”52878,806元/平”處理之后為:

“52878806“。

圖4-1價(jià)格字段的格式

10

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

4.3編程實(shí)現(xiàn)

house_info字段是一個復(fù)合字段,通過觀察發(fā)現(xiàn),它有兩種格式,第一種

是包含了“年建”字段,第二種是不包含“年建”字段,在切分成數(shù)組后長度

上會有區(qū)別,包含“年鍵”的數(shù)組長度為7,不包含”年鍵”的數(shù)組長度為6。

這兩種情況需要分別處理。代碼如下圖所示:

圖4-2處理house_info字段

clean_house_info方法,用于清理鏈家網(wǎng)二手房源信息中的

"house_info"字段。方法接收一個字符串類型的"house_info",并將其按照

"|"字符進(jìn)行切分。如果切分后的數(shù)組長度為7,則將"|"替換為","并返

回字符串。如果長度不為7,則調(diào)用"connect"方法將切分后的前5個元素

拼接成一個字符串,并在第5個和第6個元素之間添加兩個逗號,然后再與

最后一個元素拼接并返回一個字符串。

connect,用于將多個字符串連接起來,并以逗號分隔。其中用到了可變

參數(shù),和StringBuilder類,代碼如下4-3所示:

圖4-3connect方法

通過編寫clean_follow_info方法用于處理follow_info字段。該方法使用

正則表達(dá)式解析輸入字符串follow_info,提取出其中的數(shù)字,并拼接成以逗號

分隔的字符串返回。

具體步驟如下:

1)使用正則表達(dá)式(\\d+).*?(\\d+)編譯一個模式compile;

11

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

2)使用模式compile對輸入字符串follow_info進(jìn)行匹配,返回一個匹配器

matcher;

3)如果匹配成功,提取出第一個數(shù)字和第二個數(shù)字,并拼接成以逗號分隔的字

符串返回;

4)如果匹配失敗,返回以兩個逗號分隔的空字符串。

例如,當(dāng)輸入字符串follow_info為看房5次,歷時(shí)1個月時(shí),該方法的返

回值為5,1。代碼如下圖4-4所示:

圖4-4clean_follow_info方法

在前面數(shù)據(jù)清洗需求分析小結(jié)已經(jīng)提到,all_price字段和unit_price字

段種的逗號與字段分隔符發(fā)生沖突,為了避免后續(xù)的數(shù)據(jù)處理發(fā)生錯誤,這里

需要進(jìn)行處理。clean_price方法如下圖4-5所示:

圖4-5clean_price方法

該函數(shù)實(shí)現(xiàn)的是清洗房源價(jià)格的功能,將價(jià)格拼接成統(tǒng)一的格式。輸入?yún)?shù)

有兩個:price_pre是房源價(jià)格的前綴,price_slice是房源價(jià)格的后綴,剔除

后綴種的單位字符串,最后將前綴和后綴拼接成新的字符串,并返回。

12

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

在map方法種,利用數(shù)據(jù)清洗方法處理各個字段,map方法代碼如下圖4-6

所示:

圖4-6map方法

用于HadoopMapReduce中的數(shù)據(jù)清洗。該函數(shù)會將輸入的一行數(shù)據(jù)按照逗

號分隔符進(jìn)行切割,如果切割后的字段數(shù)量不為10,則返回,否則進(jìn)行數(shù)據(jù)清

洗操作。具體地,它會調(diào)用clean_house_info()函數(shù),將房屋信息中的豎線符

號“|”替換為逗號“,”;調(diào)用clean_follow_info()函數(shù),從關(guān)注信息字段中

提取出關(guān)注人數(shù)和帶看次數(shù);調(diào)用clean_price()函數(shù),將價(jià)格信息字段中的元

/平去掉。

數(shù)據(jù)清洗完成后,函數(shù)會將處理后的字段用逗號拼接成一個字符串,并在最

后一個字段后面加上換行符,再寫出到Hadoop的輸出文件中。由于MapReduce

中的輸出要求是鍵值對形式的,因此在這里鍵使用了NullWritable類型,值則

是Text類型,代表輸出的是一個文本字符串。

在main方法中,指定輸入和輸出路徑,用于將輸入的數(shù)據(jù)集和輸出的結(jié)果

寫入到指定的文件中。創(chuàng)建了一個MapReduce作業(yè),并為其設(shè)置了相關(guān)的屬性,

例如Mapper類和Reducer類,輸入鍵和值以及輸出鍵和值的類型。使用Hadoop

的Configuration類創(chuàng)建了一個配置對象,用于設(shè)置作業(yè)相關(guān)的屬性,例如集

群的地址和端口等。調(diào)用waitForCompletion()方法來啟動作業(yè)并等待其完成。

13

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖4-7mapreduce運(yùn)行日志

程序運(yùn)行結(jié)束之后會到指定的目錄中生成output文件夾,這個output文件

夾中的part-r-00000文件就是數(shù)據(jù)清洗的結(jié)果文件。如下圖4-8所示:

圖4-8mapreduce運(yùn)行結(jié)果

5數(shù)據(jù)統(tǒng)計(jì)與分析

5.1數(shù)據(jù)準(zhǔn)備

數(shù)據(jù)分析部分使用hive數(shù)據(jù)倉庫管理工具來完成,hive能夠數(shù)據(jù)文件映射

成一張表,它提供了類SQL語句和大量的函數(shù)。Hive數(shù)據(jù)存儲使用的是hdfs分

布式文件系統(tǒng),計(jì)算引擎用的mapreduce框,所以能夠比較輕松的處理大數(shù)據(jù)。

創(chuàng)建hive表將數(shù)據(jù)文件導(dǎo)入,如下圖5-1所示:

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖5-1創(chuàng)建hive表

使用hive提供的load語句將part-r-00000文件導(dǎo)入到hive表中,因?yàn)槭?/p>

從本地文件系統(tǒng)導(dǎo)入,所以在命令中需要加入local關(guān)鍵字。如下圖5-2所示:

圖5-2數(shù)據(jù)導(dǎo)入

數(shù)據(jù)導(dǎo)入成功之后就可以使用sql對數(shù)據(jù)進(jìn)行多維度、多角度的分析了。

數(shù)據(jù)分析結(jié)果使用insertoverwrite語句導(dǎo)入到本地,后續(xù)使用pyecharts進(jìn)

行數(shù)據(jù)的可視化。

5.2數(shù)據(jù)分析與展示

5.2.1統(tǒng)計(jì)上海各區(qū)的房源數(shù)量和價(jià)格

編寫sql查詢上海鏈家網(wǎng)的房源數(shù)據(jù)按照區(qū)域分組,并按照數(shù)量從多到少排

序。查詢結(jié)果包括區(qū)域、房源數(shù)量以及每個區(qū)域平均房價(jià)(保留兩位小數(shù))。

selectregion,count(1)asnum,round(avg(unit_price),2)asprice

fromshlianjie

groupbyregion

orderbycount(1)desc

圖5-3統(tǒng)計(jì)上海各區(qū)的房源數(shù)量和價(jià)格

從上圖可知,徐匯區(qū)是上海市二手房數(shù)量最多的區(qū),其次是浦東區(qū)和普陀區(qū)。

15

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

其中,徐匯區(qū)二手房數(shù)量達(dá)到14965套,遠(yuǎn)遠(yuǎn)超過其他區(qū),可能是由于其交通

便利、人口密集等因素影響的結(jié)果。

在二手房平均價(jià)格方面,徐匯區(qū)同樣是最高的,達(dá)到71637.43元/平米。其

次是浦東區(qū)、普陀區(qū)和寶山區(qū)。從平均價(jià)格來看,這些區(qū)的二手房市場相對較

為活躍,購買者的購房意愿較強(qiáng)。

從區(qū)域分布來看,這些二手房數(shù)量和平均價(jià)格較高的區(qū)域大多位于上海市中

心區(qū)域和新城區(qū)域,包括徐匯區(qū)、浦東區(qū)、普陀區(qū)、黃浦區(qū)和靜安區(qū)等。這些

區(qū)域的房價(jià)相對較高,可能是由于其地理位置優(yōu)越、城市資源豐富等因素影響

的結(jié)果。

5.2.2統(tǒng)計(jì)每年建造的房屋數(shù)量和價(jià)格

從shlianjie表中提取出年份,并統(tǒng)計(jì)每個年份的房源數(shù)量和平均單價(jià),然

后按照房源數(shù)量倒序排序。

selectregexp_extract(year,"\\d{4}")asyear,count(1)as

num,round(avg(unit_price),2)asprice

fromshlianjie

groupbyregexp_extract(year,"\\d{4}")

orderbycount(1)desc

圖5-3每年建造房屋的數(shù)量和價(jià)格

根據(jù)上面的數(shù)據(jù),我們可以了解到上海市從1955年至2021年期間,共建造

房屋共計(jì)41515套,建造的年代分布比較廣泛,其中,1980年至2008年是上海

16

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

市建造房屋數(shù)量比較密集的年代。下面是該數(shù)據(jù)的分析報(bào)告:

其中,房屋數(shù)量的最大值為3711套,最小值為2套,平均值為728.77套;

建造房屋的平均價(jià)格的最大值為147976元/平方米,最小值為45555元/平方米,

平均值為77911.56元/平方米。

5.2.3統(tǒng)計(jì)最受歡迎的的樓層和平均價(jià)格

將房屋所在樓層(storey)、關(guān)注度(follow)、房屋數(shù)量(num)和平均

單價(jià)(price)分組,并按關(guān)注度從高到低排序,最后限制結(jié)果為前10條記錄。

關(guān)注度越高代表該樓層越受歡迎。

selectstorey,sum(follow)asfollow_num,count(1)as

num,round(avg(unit_price),2)asprice

fromshlianjie

groupbystorey

orderbysum(follow)desc

limit10

圖5-4統(tǒng)計(jì)房源的分布

中樓層和高樓層是二手房市場的主要房源類型,其中中樓層房屋數(shù)量最多,

高樓層房屋價(jià)格相對較高。在中樓層中,6層建筑的數(shù)量最多,而在高樓層中,

18層和19層建筑的數(shù)量最多。頂層房屋數(shù)量相對較少,但價(jià)格較低,可能受到

樓層高度的限制。高樓層(共10層)和16層建筑的數(shù)量相對較少,可能受到

市場需求和規(guī)劃規(guī)定的限制。高樓層(共32層)建筑數(shù)量相對較多,但價(jià)格較

17

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

低,可能受到建筑物所在區(qū)域和建筑年代的影響。

總之,樓層高度在二手房市場中具有重要影響,購房者應(yīng)根據(jù)自身需求和預(yù)

算綜合考慮。

5.2.4統(tǒng)計(jì)各個戶型的數(shù)量個平均價(jià)格

統(tǒng)計(jì)鏈家數(shù)據(jù)中每種戶型的數(shù)量和均價(jià)。其中unit_type是戶型的類型,例

如:“1室1廳”、“2室1廳”等等。num統(tǒng)計(jì)了該戶型的房屋數(shù)量,price

統(tǒng)計(jì)了該戶型的平均房價(jià)。

selectunit_type,count(1)asnum,round(avg(unit_price),2)asprice

fromshlianjie

groupbyunit_type

圖5-5統(tǒng)計(jì)各戶型的數(shù)量和平均價(jià)格

首先,根據(jù)數(shù)據(jù),3室2廳戶型是數(shù)量最多的,其次是2室1廳和1室1廳,

數(shù)量分別為19832和5453。而戶型數(shù)量最少的為8室3廳,僅有12個。此外,

4室1廳、3室1廳、4室2廳和2室2廳這些常見戶型的數(shù)量也較多。

其次,就平均價(jià)格而言,8室3廳和4室3廳這兩種戶型的平均價(jià)格最高,

分別為102919和65586.22元。而6室3廳和高檔大戶型5室3廳的平均價(jià)格

則相對較低,分別為29992.5和47314.4元。從整體來看,各個戶型的平均價(jià)

格都在6萬到8萬之間,沒有太大的差別。值得注意的是,1室0廳和3室0廳

的樣本數(shù)量較少,平均價(jià)格的可靠性可能較低。

綜上所述,根據(jù)提供的數(shù)據(jù)分析,房屋的數(shù)量和平均價(jià)格與戶型有關(guān),不同

18

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

戶型的數(shù)量和價(jià)格也有所不同,其中6室3廳和8室3廳的平均價(jià)格較高,而1

室1廳和2室1廳的數(shù)量較多。

5.2.5分析關(guān)注人數(shù)與價(jià)格之間的關(guān)系

從shlianjie表中選擇關(guān)注人數(shù)數(shù)(follow)和單位價(jià)格(unit_price),

并且只保留跟隨數(shù)不等于0的行。根據(jù)關(guān)注人數(shù)和單位價(jià)格繪制出散點(diǎn)圖,即

可分析其中的關(guān)系。

selectfollow,unit_price

fromshlianjie

wherefollow!=0

圖5-6關(guān)注人數(shù)與價(jià)格之間的關(guān)系

根據(jù)數(shù)據(jù),可以看出高房價(jià)的房屋關(guān)注人數(shù)較少,低房價(jià)的房屋關(guān)注人數(shù)較

多。

從統(tǒng)計(jì)學(xué)的角度來看,這個結(jié)論得到了很好的支持。房價(jià)與關(guān)注人數(shù)之間的

相關(guān)性是負(fù)相關(guān)的,即房價(jià)上漲時(shí),關(guān)注人數(shù)下降。這種趨勢可能與消費(fèi)者的

心理有關(guān),高房價(jià)的房屋一般比低房價(jià)的房屋更為昂貴,購買者通常更為謹(jǐn)慎,

關(guān)注度較低。另外,低房價(jià)的房屋通常更適合購買者的預(yù)算,因此更多的購買

者會對其關(guān)注和關(guān)心。

在未來的房地產(chǎn)市場分析中,這種趨勢可以被用來預(yù)測購房者的關(guān)注點(diǎn),以

及如何調(diào)整營銷策略以吸引更多的潛在客戶。

19

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

5.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論