王福成 齊 平
(1合肥工業(yè)大學(xué)管理科學(xué)與工程 安徽合肥 230009;2銅陵學(xué)院服務(wù)計(jì)算研究所 安徽銅陵 244000)
近年來,各大城市的房?jī)r(jià)問題一直是大眾最為關(guān)心的問題之一,其中二手房交易市場(chǎng)更加活躍.由于大部分地區(qū)的城市化進(jìn)程,人口眾多、住房面積減少,使得房?jī)r(jià)大漲,如何找到合適的住房已成為常見的民生難題.隨著互聯(lián)網(wǎng)、大數(shù)據(jù)等技術(shù)的快速發(fā)展,用戶獲取房源信息從傳統(tǒng)的中介市場(chǎng)慢慢的轉(zhuǎn)向互聯(lián)網(wǎng).如今互聯(lián)網(wǎng)中已經(jīng)存在大量的房源信息,使用網(wǎng)絡(luò)爬蟲技術(shù)爬取有用的數(shù)據(jù),并對(duì)爬取得到的數(shù)據(jù)進(jìn)行清洗、統(tǒng)計(jì)和可視化分析,幫助用戶理解網(wǎng)絡(luò)中的大數(shù)據(jù),并且挖掘出各種房源的分布情況以及價(jià)格等特征走向,幫助用戶做出更好的決策.
網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)蜘蛛,是由程序設(shè)計(jì)者編寫的能自動(dòng)抓取網(wǎng)頁信息并加以解析存儲(chǔ)的程序.一般先指定一個(gè)或多個(gè)初始的URL作為種子,在不斷抓取網(wǎng)頁信息的過程中將爬取到的新URL存入U(xiǎn)RL訪問隊(duì)列中,在爬取完當(dāng)前網(wǎng)頁資源后從URL訪問隊(duì)列中調(diào)出一個(gè)再次進(jìn)行爬取,一直重復(fù)到滿足程序設(shè)計(jì)者的停止條件或者爬完URL隊(duì)列為止,爬取出的網(wǎng)頁資源會(huì)進(jìn)行一定的解析、篩選然后存儲(chǔ)入文件或數(shù)據(jù)庫中[1].
網(wǎng)絡(luò)爬蟲可以對(duì)數(shù)據(jù)信息進(jìn)行自動(dòng)采集,比如應(yīng)用于搜索引擎中對(duì)站點(diǎn)進(jìn)行爬取收錄,應(yīng)用于數(shù)據(jù)分析與挖掘中對(duì)數(shù)據(jù)進(jìn)行采集,應(yīng)用于金融分析中對(duì)金融數(shù)據(jù)進(jìn)行采集.除此之外,還可以將網(wǎng)絡(luò)爬蟲應(yīng)用于輿情監(jiān)測(cè)與分析、目標(biāo)客戶數(shù)據(jù)的收集、房地產(chǎn)信息收集等各個(gè)領(lǐng)域.
目前,數(shù)據(jù)分析在各個(gè)行業(yè)和領(lǐng)域得到了廣泛的應(yīng)用.?dāng)?shù)據(jù)分析的一般過程主要體現(xiàn)在以下三個(gè)方面[2]:①數(shù)據(jù)預(yù)處理。由于數(shù)據(jù)的獲取方式千差萬別,獲得原始數(shù)據(jù)之后,數(shù)據(jù)往往存在不規(guī)范等問題,在分析之前首先要進(jìn)行數(shù)據(jù)預(yù)處理.②描述性數(shù)據(jù)分析。數(shù)據(jù)預(yù)處理之后,這些數(shù)據(jù)可能仍然不符合實(shí)際的需要,可以通過繪制表格、圖形化、統(tǒng)計(jì)學(xué)等方式來分析數(shù)據(jù)中的規(guī)律.③預(yù)測(cè)性分析.在描述性分析的前提下,研究人員可以選擇不同的算法模型,應(yīng)用數(shù)學(xué)統(tǒng)計(jì)、機(jī)器學(xué)習(xí)等方法,對(duì)事物的發(fā)展趨勢(shì)進(jìn)行推斷.
Python具有豐富和強(qiáng)大的庫,其語言簡(jiǎn)潔、優(yōu)雅,不僅能應(yīng)用于數(shù)據(jù)分析與爬蟲,還可以進(jìn)行軟件開發(fā)、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)等等,Python具有大量的開源工具包,為數(shù)據(jù)處理與數(shù)據(jù)分析提供了極大的便利,如今Python已經(jīng)廣泛應(yīng)用于分析各大行業(yè)的大數(shù)據(jù).
Scrapy是一種用于抓取網(wǎng)站和提取結(jié)構(gòu)化數(shù)據(jù)的應(yīng)用程序框架,可廣泛應(yīng)用于信息處理,數(shù)據(jù)挖掘或歷史存檔.最初Scrapy是為網(wǎng)絡(luò)抓取而設(shè)計(jì)的,但它也可以用于使用API或者作為通用網(wǎng)絡(luò)爬蟲來提取數(shù)據(jù)[3].
當(dāng)前比較知名的展示二手房信息的網(wǎng)站有58同城、趕集網(wǎng)、鏈家網(wǎng)等,考慮到二手房的房源數(shù)據(jù)量要大、要真實(shí)可靠,通過研究發(fā)現(xiàn),鏈家網(wǎng)的房源信息更新速度快、房源信息全面,該研究選擇鏈接網(wǎng)合肥站進(jìn)行數(shù)據(jù)爬取.打開Anaconda Jpyter Notebook編輯器,新建Python3程序,開始編寫爬蟲程序,首先創(chuàng)建爬蟲類,定義初始化、獲取最大頁數(shù)、爬取頁及解析頁的方法,同時(shí)設(shè)定爬取字段,如圖1所示.
圖1 爬蟲爬取字段
利用for循環(huán)從第一頁開始進(jìn)行翻頁,回調(diào)爬取頁與解析頁的方法,對(duì)每一頁的信息進(jìn)行同樣的提取,直到最后一頁.為了避免爬取過程中出現(xiàn)異常,爬取每一頁結(jié)束后將爬取到的數(shù)據(jù)以追加的形式記錄到csv文件中存儲(chǔ),運(yùn)行程序直到爬取工作全部完成.
從網(wǎng)站上爬取得到的數(shù)據(jù),存在空值、不完整、重復(fù)值、數(shù)據(jù)不規(guī)范等問題,不能直接用作數(shù)據(jù)分析,在使用前首先進(jìn)行數(shù)據(jù)的預(yù)處理,數(shù)據(jù)的預(yù)處理主要從以下幾個(gè)方面進(jìn)行:
(1)重復(fù)值和空值處理.重復(fù)值主要表現(xiàn)重復(fù)行,重復(fù)行影響數(shù)據(jù)分析的效果,使用pandas工具包的drop_duplicates()方法直接刪除重復(fù)的數(shù)據(jù).對(duì)于空值的處理方式比較多,如用固定值填充、用均值填充、用眾數(shù)填充、用上下數(shù)據(jù)填充、用插值法填充等,文章選擇的填充方法是對(duì)數(shù)值列用均值填充、文本列用固定值填充.經(jīng)過分析數(shù)據(jù)集的“單價(jià)”與“地鐵”列存在空值情況,使用fillna()方法,填充“單價(jià)”為均值,“地鐵”填充為“無”.
(2)字段合并.根據(jù)數(shù)據(jù)分析的需要,須生成房源的詳細(xì)地址,獲取經(jīng)緯度信息,為生成熱力圖做準(zhǔn)備,從數(shù)據(jù)集中可以看出,“小區(qū)”和“位置”這兩列可以確定房源的具體位置,將這兩列合并生成新的列“地址”.
(3)字段值格式化.對(duì)數(shù)據(jù)集初步分析,發(fā)現(xiàn)需要計(jì)算的字段“面積”“單價(jià)”都是文本型的,原數(shù)據(jù)攜帶的有單位信息.首先需要用字符串處理方法去除單位信息,然后將這兩個(gè)字段的數(shù)據(jù)類型轉(zhuǎn)換為float類型.
使用Python的內(nèi)置函數(shù)對(duì)數(shù)據(jù)集進(jìn)行描述性統(tǒng)計(jì)分析,得到的結(jié)果如表1所示.可以看出,合肥市二手房的價(jià)格均值約為173.4萬,平均面積102.6平方米,兩者相除得出的每平米均價(jià)約1.4萬多,與統(tǒng)計(jì)結(jié)果中每平米單價(jià)的均價(jià)基本一致,說明該數(shù)據(jù)異常值不明顯,可以進(jìn)行數(shù)據(jù)可視化.
表1 數(shù)據(jù)描述性統(tǒng)計(jì)結(jié)果
數(shù)據(jù)可視化技術(shù)將數(shù)據(jù)轉(zhuǎn)換成圖形圖表,為決策提供依據(jù)[4].對(duì)合肥市每個(gè)區(qū)域二手房數(shù)量、單價(jià)進(jìn)行分析,形成單價(jià)的折線圖和數(shù)量的柱狀圖,可視化結(jié)果如圖2所示.
圖2 合肥市二手房區(qū)域、數(shù)量、單價(jià)統(tǒng)計(jì)
從圖2可以看出,各區(qū)域的二手房數(shù)量和單價(jià)的對(duì)比關(guān)系,其中政務(wù)區(qū)數(shù)量不多,但是價(jià)格最高,房市屬于比較高熱的區(qū)域;蜀山區(qū)數(shù)量最少、價(jià)格最低,屬于偏遠(yuǎn)偏冷門的區(qū)域.
二手房市場(chǎng)情況,可以從二手房的關(guān)注度得到體現(xiàn),現(xiàn)對(duì)合肥市每個(gè)區(qū)域的二手房關(guān)注度、主要戶型的關(guān)注度進(jìn)行分析,并且分析每個(gè)區(qū)域二手房關(guān)注度的柱狀圖,可視化結(jié)果如圖3所示.從戶型結(jié)構(gòu)的市場(chǎng)關(guān)注度來看,2室2廳、3室3廳、5室3廳、6室3廳等中大戶型關(guān)注度較高,從區(qū)域的市場(chǎng)關(guān)注度來看,各區(qū)域差別不大,高新區(qū)、濱湖區(qū)等新規(guī)劃的地區(qū)關(guān)注度較高.
圖3 合肥市二手房關(guān)注度統(tǒng)計(jì)
合肥市2016年-2019年的二手房市場(chǎng)價(jià)格走勢(shì)如圖4所示,2016年價(jià)格處在頂峰,2017年價(jià)格下跌較大,而后逐年小幅度上升.從房?jī)r(jià)走勢(shì)來看合肥二手房市場(chǎng)并沒有受到最近兩年的房市低迷狀況的太大影響.2018年與2019年這兩年每月的房?jī)r(jià)變化,如圖5所示,2019年房?jī)r(jià)整體高于2018年,2018年的房?jī)r(jià)波動(dòng)較大,2019年的房?jī)r(jià)比較平穩(wěn).
圖4 合肥市2016~2019年二手房?jī)r(jià)格趨勢(shì)
圖5 合肥市2018年與2019年二手房單價(jià)走勢(shì)對(duì)比
為了更直觀的統(tǒng)計(jì)合肥市二手房房源數(shù)量以及分布情況,在合肥市市區(qū)地圖上繪制二手房分布的熱力圖,繪制熱力圖首先需要獲取每個(gè)房源的詳細(xì)位置信息,詳細(xì)的位置信息可以由數(shù)據(jù)集中“位置”和“小區(qū)”兩個(gè)字段合并得到,然后由詳細(xì)位置信息獲取房源的經(jīng)緯度信息,最后調(diào)用經(jīng)緯度信息再生成熱力圖.
根據(jù)房源的詳細(xì)地址獲取經(jīng)緯度,需要調(diào)用百度地圖提供的API,使用百度地圖API首先需要登錄百度地圖開放平臺(tái),然后申請(qǐng)密鑰,得到訪問應(yīng)用AK碼,之后參考百度示例代碼,編寫生成熱力圖的JavaScript程序.瀏覽器中運(yùn)行程序,生成的熱力圖如圖6所示.
圖6 合肥二手房分布熱力圖
在熱力圖中,顏色越深的區(qū)域代表房源數(shù)量越多,顏色越淺的區(qū)域代表房源數(shù)量越少.從圖6可以看出,二手房主要集中在二環(huán)以內(nèi),另外在天鵝湖體育公園附近、濱湖新區(qū)等分布較為密集.這說明二手房交易中,地理環(huán)境也是一個(gè)主要考慮指標(biāo).
隨著web 2.0時(shí)代的網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)中數(shù)據(jù)量異常龐大,研究爬蟲技術(shù)與數(shù)據(jù)可視化技術(shù)對(duì)用戶從大數(shù)據(jù)中挖掘出數(shù)據(jù)潛在的價(jià)值是非常有意義的.文章對(duì)合肥二手房的房源進(jìn)行了分布情況、關(guān)注度、價(jià)格趨勢(shì)等進(jìn)行了分析.但是針對(duì)不同的人群,對(duì)二手房信息關(guān)注的焦點(diǎn)是不一樣的,比如購房者希望從不同類型的房源找出性價(jià)比最高的二手房.后續(xù)針對(duì)這些需求,還要進(jìn)行相應(yīng)的研究.
九江學(xué)院學(xué)報(bào)(自然科學(xué)版)2020年3期