戴瑗 鄭傳行
摘? 要: 文章使用Python爬蟲并結(jié)合數(shù)據(jù)分析技術(shù),對(duì)鏈家網(wǎng)上南京二手房的所有房源數(shù)據(jù)進(jìn)行采集、清洗,再對(duì)清洗后的數(shù)據(jù)進(jìn)行可視化分析,研究隱藏在這些海量數(shù)據(jù)背后的規(guī)律。由此可獲得南京二手房的基本屬性特征以及二手房源的分布情況,起到購(gòu)房決策輔助作用。
關(guān)鍵詞: Python; 爬蟲; 數(shù)據(jù)挖掘; 可視化分析; 二手房
中圖分類號(hào):TP399????????? 文獻(xiàn)標(biāo)識(shí)碼:A???? 文章編號(hào):1006-8228(2021)01-37-04
Crawling and analyzing Nanjing second hand house data with Python
Dai Yuan, Zheng Chuanxing
(School of information, Guizhou university of F&E, Guiyang, Guizhou 550025, China)
Abstract: This paper uses Python crawler and data analysis technology to collect and clean all the house source data of Nanjing second-hand house on lianjia.com, and then the cleaned data is analyzed and visualized to study the laws hidden behind it. By doing so, the basic attribute characteristics of second-hand house and the distribution of second-hand house in Nanjing can obtained, which plays an auxiliary role in the decision-making of house purchase.
Key words: Python; crawler; data mining; visual analysis; second-hand housing
0 引言
國(guó)內(nèi)房地產(chǎn)快速發(fā)展,近幾年來,公民越來越關(guān)心房?jī)r(jià)問題,2016年的中央經(jīng)濟(jì)工作會(huì)議明確提出“房子是用來住的、不是用來炒的”,展現(xiàn)了住房是民生之本[1]。面對(duì)攀升的房?jī)r(jià),人們買房的壓力越來越大,為了緩解住房壓力,人們會(huì)選擇購(gòu)買二手房。二手房的房?jī)r(jià)除了受到最基本的區(qū)域、總價(jià)、單價(jià)、建筑面積的影響, 更受到了其他社會(huì)因素的影響。所以我們有必要對(duì)二手房?jī)r(jià)格背后的影響因素進(jìn)行研究[2]。
在買房之前,人們會(huì)在相關(guān)網(wǎng)站上搜索自己想要了解的住房信息,但是面對(duì)龐大且來源廣泛的網(wǎng)絡(luò)數(shù)據(jù),如何縮短網(wǎng)頁下載時(shí)間,如何分析大量數(shù)據(jù)并找出有用信息,就需要用到網(wǎng)絡(luò)爬蟲技術(shù)。本文通過Python爬蟲程序爬取鏈家網(wǎng)上所有的二手房數(shù)據(jù),爬取的字段包括所在區(qū)域、面積、朝向、樓層、戶型結(jié)構(gòu)、裝修情況、總價(jià)、單價(jià)等,并對(duì)采集到的這些數(shù)據(jù)進(jìn)行清洗[3]。最后對(duì)清洗過的數(shù)據(jù)進(jìn)行可視化分析,探索南京二手房建筑面積、位置、戶型等對(duì)二手房房?jī)r(jià)的影響情況。
1 Python數(shù)據(jù)分析簡(jiǎn)介
本文利用Requests和Beautifulsoup庫進(jìn)行網(wǎng)絡(luò)爬蟲。Requests是一個(gè)基于urllib,并且是用Python語言編寫的HTTP庫。Requests比urllib更加方便,它可以向需要爬取的網(wǎng)頁發(fā)送requests請(qǐng)求,然后自動(dòng)爬取HTML頁面并模擬瀏覽器請(qǐng)求提交,從而得到目標(biāo)網(wǎng)頁資源。beautifulsoup庫作為Python的第三方庫,可以解析HTML或XML文件中的數(shù)據(jù),提取網(wǎng)頁數(shù)據(jù)的Python庫[4],使其更加具結(jié)構(gòu)化和格式化。
在進(jìn)行數(shù)據(jù)分析時(shí)用到了Numpy、Matplotlib、Pandas這些第三方庫。把這些庫用在二手房信息爬取及分析中,不但能夠節(jié)約項(xiàng)目成本,還能提高信息資源的利用效率。Numpy底層使用C語言編寫,是Python的基礎(chǔ)計(jì)算系統(tǒng),通過提供Python對(duì)多維數(shù)組對(duì)象的支持即ndarray,直接對(duì)元素級(jí)別和數(shù)據(jù)進(jìn)行操作,運(yùn)算效率遠(yuǎn)高于純Python代碼。Matplotlib是一種可以生成高質(zhì)量圖標(biāo)的基于Python的數(shù)據(jù)可視化模塊[5],幫助用戶在各種硬拷貝格式和交互式環(huán)境下進(jìn)行MATLAB風(fēng)格的繪圖。Pandas作為數(shù)據(jù)分析包,經(jīng)常在Python做數(shù)據(jù)分析時(shí)用到,能夠快速地給Python提供結(jié)構(gòu)化的數(shù)據(jù)資源。
2 數(shù)據(jù)采集及數(shù)據(jù)清洗
2.1 數(shù)據(jù)采集
⑴ 鏈家網(wǎng)網(wǎng)站結(jié)構(gòu)分析
鏈家網(wǎng)(http://www.lianjia.com/)成立于2009年,是鏈家房地產(chǎn)經(jīng)紀(jì)有限公司為發(fā)展主要業(yè)務(wù)領(lǐng)域——新房、二手房、租房而創(chuàng)建的線上房產(chǎn)交易平臺(tái)。鏈家網(wǎng)上的二手房的主界面如圖1所示。圖1最上方的紅色方框展示的是目前南京市內(nèi)各地區(qū)關(guān)于二手房房源的位置區(qū)域,而中間的紅色方框表示在售房源的總數(shù)量,圖1最下方的紅色方框其實(shí)是二手房房源信息的縮略圖。由于鏈家網(wǎng)自帶有百度地圖的定位功能,所以這個(gè)縮略圖涵蓋了二手房房源頁面的URL地址標(biāo)簽,能夠直接得到小區(qū)的經(jīng)緯度信息。在用戶與網(wǎng)站的交互過程中,鏈家網(wǎng)能對(duì)這個(gè)過程產(chǎn)生的比如搜索數(shù)據(jù)、點(diǎn)擊數(shù)據(jù)等大數(shù)據(jù)進(jìn)行分析,掌握用戶的看房偏好,為其推薦感興趣的房源并且推薦公司好評(píng)優(yōu)先、熟悉該小區(qū)的房屋經(jīng)紀(jì)人對(duì)該用戶進(jìn)行服務(wù)。
⑵ 需要采集的網(wǎng)站數(shù)據(jù)
需要采集的房源數(shù)據(jù)主要包括二手房源的基本信息(總價(jià)、單價(jià)、所在小區(qū)名稱以及所在區(qū)域);基本屬性(房屋戶型、建筑面積、套內(nèi)面積、房屋朝向、裝修情況、配備電梯、所在樓層、戶型結(jié)構(gòu)、建筑類型、建筑結(jié)構(gòu)、梯戶比例);交易屬性(交易權(quán)屬、房屋用途、產(chǎn)權(quán)所屬、房本備件、掛牌時(shí)間、上次交易、房屋年限、抵押信息)。
⑶ 網(wǎng)站數(shù)據(jù)爬取流程
爬取鏈家網(wǎng)中南京市二手房的工作流程如圖2所示。
2.2 數(shù)據(jù)清洗
數(shù)據(jù)清洗就是對(duì)數(shù)據(jù)文件進(jìn)行重新監(jiān)測(cè),識(shí)別錯(cuò)誤并糾正的過程,對(duì)所爬取的數(shù)據(jù)進(jìn)行規(guī)范化操作,比如刪除重復(fù)數(shù)據(jù)、處理無效值和缺失值等[6]。原始數(shù)據(jù)通常來源于各種業(yè)務(wù)系統(tǒng),只是由于主題一致而集合在一起,故難免會(huì)有沖突的數(shù)據(jù)和錯(cuò)誤的數(shù)據(jù),這些我們并不需要的數(shù)據(jù)稱之為“臟數(shù)據(jù)”[7]。而消除這些“臟數(shù)據(jù)”,使過濾后的數(shù)據(jù)具有一致性的過程就是數(shù)據(jù)清洗。
本文清洗的原始數(shù)據(jù)部分是清洗數(shù)據(jù)項(xiàng)格式、對(duì)缺失值進(jìn)行處理,對(duì)齊雜亂的數(shù)據(jù)項(xiàng)。清洗后的示例數(shù)據(jù)如圖3所示。
3 數(shù)據(jù)可視化分析
數(shù)據(jù)可視化技術(shù)就是把數(shù)據(jù)以圖形圖表的方式呈現(xiàn)出來,它的目的是幫助人們更加方便地分析總結(jié)出數(shù)據(jù)背后隱藏的規(guī)律,為決策提供好的依據(jù)??梢暬夹g(shù)越來越受大眾歡迎,由于它的直觀性,這項(xiàng)技術(shù)發(fā)展迅速并成功取得相應(yīng)的成就。本文主要對(duì)二手房房源信息進(jìn)行分析,例如房源面積、戶型、總價(jià)、單價(jià)、所在區(qū)域等。主要步驟有數(shù)據(jù)加載、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)可視化呈現(xiàn)、數(shù)據(jù)規(guī)律總結(jié)等。
3.1 數(shù)據(jù)加載
數(shù)據(jù)準(zhǔn)備需要做很多工作,其中大部分來自于數(shù)據(jù)分析和數(shù)據(jù)建模,包括轉(zhuǎn)換、清理、加載等。經(jīng)過數(shù)據(jù)清洗后,完整的數(shù)據(jù)依然還保存在CSV文件中,這時(shí)候要將這些數(shù)據(jù)按照一定的要求加載到內(nèi)存里。為了加載處理清洗過濾后的數(shù)據(jù),可以使用Pandas所提供的DataFrame對(duì)象,Pandas主動(dòng)將表格型的數(shù)據(jù)轉(zhuǎn)換為DataFrame可以讀取的函數(shù)。數(shù)據(jù)加載的過程中需要注意關(guān)于數(shù)據(jù)項(xiàng)的行列索引處理,還有對(duì)缺失值的處理,以及數(shù)據(jù)類型的推斷和數(shù)據(jù)轉(zhuǎn)換的問題。
3.2 可視化分析
⑴ 詞云圖
為了尋找南京二手房房源數(shù)據(jù)背后的規(guī)律,用數(shù)據(jù)可視化的方法畫出詞云圖(圖4),通過圖4我們可以直觀地看出租客在關(guān)注房屋特征時(shí),詞云圖中的高頻詞是:鋼混、結(jié)構(gòu)、平米、普通住宅、商品房、非共有等。這表明購(gòu)房者最關(guān)心的首先是房屋結(jié)構(gòu)和面積,其次是房屋類型。
⑵ 南京各區(qū)域二手房房源數(shù)量前九
南京各區(qū)域的二手房房源數(shù)量前九折線圖如圖5所示,x軸表示南京二手房源所在區(qū)域名稱,y軸表示二手房房源數(shù)量,單位為套。從圖5折線圖可以明顯看出,江寧在售的二手房房源數(shù)量最多,這個(gè)地方的二手房數(shù)量高達(dá)5000多套。房源最少的是在六合區(qū),房源數(shù)量只有一套。因?yàn)榻瓕巺^(qū)離南京市中心更近,而六合與市區(qū)之間則隔著一條長(zhǎng)江,相比于六合,江寧區(qū)更是圍繞在各地鐵線兩邊,交通便利,所以江寧和六合這兩個(gè)區(qū)域的房源數(shù)量差距較大,其他地區(qū)的數(shù)量差別不是很大。
3 南京各區(qū)域二手房平均單價(jià)分析
圖6是南京市各區(qū)域二手房的平均單價(jià)柱狀圖,x軸是南京市各區(qū)域名稱,y軸是單價(jià)(元/平米)。建鄴區(qū)還有鼓樓區(qū)的平均單價(jià)最高,高達(dá)40000元/平米。可能是因?yàn)檫@兩個(gè)區(qū)的地理位置特別好,作為中心城區(qū)的建鄴區(qū),經(jīng)濟(jì)發(fā)展迅速,是中國(guó)東部地區(qū)的金融服務(wù)中心,房?jī)r(jià)一直持高,到現(xiàn)在已經(jīng)是全南京房?jī)r(jià)最高的區(qū)域之一。而鼓樓區(qū)是江蘇省南京市的核心地段,也是國(guó)家重要的科技創(chuàng)新中心以及航運(yùn)物流服務(wù)中心,鼓樓區(qū)地理環(huán)境優(yōu)越,瀕臨長(zhǎng)江并有高山環(huán)繞、湖水相依,坐擁許多商場(chǎng),聚集了休閑、餐飲與購(gòu)物于一體的商業(yè)氛圍,所以平均單價(jià)這幾年來也一直位居高位。根據(jù)圖6顯示,不難看出南京市各個(gè)區(qū)域的二手房平均單價(jià)都在20000元/平米以上(除去有誤差的六合區(qū)),還有看起來平均單價(jià)偏低的浦口區(qū),也比前幾年翻了一倍,說明南京這幾年的整體房?jī)r(jià)漲勢(shì)迅猛。
4 南京二手房建筑面積分析
南京二手房建筑面積分布區(qū)間柱狀圖如圖7所示,x軸是房源數(shù)量,y軸是建筑面積。其中,建筑面積在50-100平米內(nèi)的房源最多,超過一萬多套,100-150平米內(nèi)的房源位居第二,而300-350平米的房源最少。說明在南京二手房市場(chǎng)中,中小戶型占據(jù)了主流。
5 南京二手房總價(jià)與建筑面積關(guān)系
南京二手房總價(jià)與面積關(guān)系散點(diǎn)圖如圖8所示,x軸表示建筑面積,y軸表示總價(jià)。我們從圖8中了解到總價(jià)與建筑面積呈正相關(guān)關(guān)系。房屋建筑面積越大,價(jià)格也就越高,符合基本常識(shí)。總價(jià)0-1400萬元與建筑面積0-300平米這個(gè)區(qū)域內(nèi),數(shù)據(jù)點(diǎn)分布密集。
6 南京二手房房屋戶型情況
對(duì)南京二手房最常出現(xiàn)的戶型進(jìn)行計(jì)數(shù)并進(jìn)行可視化分析如圖9所示,南京二手房最常出現(xiàn)的戶型為二室一廳。二室二廳和三室二廳的戶型也不少。
4 結(jié)束語
本文利用Python爬取鏈家網(wǎng)上南京二手房的相關(guān)信息,將采集到的二手房信息進(jìn)行數(shù)據(jù)清洗過濾,最后通過可視化分析從中提煉出能幫助人們做出購(gòu)房決策的信息[8]。這個(gè)方法不僅局限于南京二手房信息,也可以適用于不同城市的買房租房需求,購(gòu)房租房人員可以據(jù)此掌控房屋市場(chǎng)動(dòng)態(tài),預(yù)測(cè)其趨勢(shì),然后做出合理抉擇。
參考文獻(xiàn)(References):
[1] 王曉娟.重慶二手房?jī)r(jià)格影響因素研究[J].廊坊師范學(xué)院學(xué)報(bào):自然科學(xué)版,2019.3.
[2] 劉航.基于Python的重慶二手房爬取及分析[J].電腦知識(shí)與技術(shù),2019.15(36):6-7,17
[3] 朱俊.二手房數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西南交通大學(xué)碩士學(xué)位論文,2017.
[4] 王碧瑤.基于Python的網(wǎng)絡(luò)爬蟲技術(shù)研究[J].數(shù)字技術(shù)與應(yīng)用,2017.5:76-76
[5] 羅博煒.基于Python的數(shù)據(jù)可視化[J].信息記錄材料,2019.[6] 姚沖,閉鑫業(yè).基于集成學(xué)習(xí)的武漢二手房估價(jià)模型研究[J].
商訊,2019.
[7] 王芳.基于Python的招聘網(wǎng)站信息爬取與數(shù)據(jù)分析[J].信息技術(shù)與網(wǎng)絡(luò)安全,2019.8.
[8] 趙綠草,饒佳冬.基于python的二手房數(shù)據(jù)爬取及分析[J].電腦知識(shí)與技術(shù)(學(xué)術(shù)版),2019.7:1-3
收稿日期:2020-09-07
基金項(xiàng)目:貴州省科技計(jì)劃項(xiàng)目(黔科合基礎(chǔ)[2019]1054號(hào))
作者簡(jiǎn)介:戴瑗(1997-),女,重慶榮昌人,碩士生,研究方向?yàn)樾畔①Y源管理、金融數(shù)據(jù)分析。
通訊作者:鄭傳行(1977-),男,貴州遵義人,教授,碩士生導(dǎo)師,博士,研究方向?yàn)榻鹑跀?shù)據(jù)分析。