




摘? 要:文章以都勻市出租房為例,運用Python對安居客網上房源信息進行采集,對獲取的數據進行清洗和處理,并從數據中選擇小區、戶型、朝向、住房面積和租房價格等特征進行數據分析和可視化展示,最后使用隨機森林模型對租金價格進行預測。通過分析與價格預測,以期幫助尋租者在選擇房源時能獲取特定的需求信息,從而做出更好的決策。
關鍵詞:出租房;數據分析;可視化;租金;隨機森林
中圖分類號:TP311;TP181? ? ? ? ? ? ? ? ?文獻標識碼:A文章編號:2096-4706(2021)16-0096-04
Rental Information Visualization and Price Prediction Based on Python
LI Tao
(School of Computer and Information, Qiannan Normal University for Nationalities, Duyun? 558000, China)
Abstract: Taking the rental housing in Duyun City as an example, this paper uses Python to collect the housing source information of Anjuke real estate network, cleans and processes the obtained data, selects the characteristic data of community, house type, orientation, housing area and rental price from the data for data analysis and visual display, and finally uses the random forest model to predict the rental price. Through analysis and price forecasting, it is expected to help renters obtain required information when selecting houses, so as to make better decisions.
Keywords: rental housing; data analysis; visualization; rent; random forest
0? 引? 言
在中國持續城鎮化建設過程中,農村富余勞動力逐步向城市進行轉移[1]。由于現階段城鎮的房價高,買房比較困難,相當多買不起房的人只能租房。因此,這些年來國內的租房人群十分龐大,市場需求也很旺盛。與此同時,房價是在不斷上漲的,租金也隨著房價的上漲而上漲。文章以貴州省黔南州都勻市為例,以安居客租房網站上的掛牌房源數據為研究對象,對采集原始數據進行清理、異常值和缺失值處理以及特征向量數字化處理等工作,并選取相應特征向量進行可視化分析。在此基礎上,運用隨機森林預測模型來預測租金價格以及走向。其工作主要集中在以下6個方面:
(1)選取并收集URL,存儲在待抓取的URL列表。
(2)使用Requests庫抓取頁面。
(3)使用Beautiful Soup解析頁面內容。
(4)數據存儲及預處理。
(5)分析數據并可視化。
(6)運用隨機森林模型預測房租價格。
通過分析,可以了解到目前市面上出租房各項基本特征及房源分布情況,并對不同區域房租價格進行預測,為群體大眾進行租房決策提供了參考意見,還會對當地政府合理地規范租房市場提供重要的數據支持。
1? 數據采集及預處理
1.1? 選取及提取網頁
選取安居客黔南都勻租房頁面(https://qn.zu.anjuke.com/fangyuan/duyun/),頁面上顯示所有出租房房源信息共25頁。通過分析這些頁面的URL地址,發現其呈現出如下規律,除了第一頁URL地址為“https://qn.zu.anjuke.com/fangyuan/duyun/px”其他頁面的URL地址為“https://qn.zu. anjuke .com/fangyuan /duyun/px3-p+數字”。網頁獲取代碼為:
url_list = []
for i in range(25):
if i == 0:
url = ‘https://qn.zu.anjuke.com/fangyuan/duyun/px3’
url_list.append(url)
else:
url = ‘https://qn.zu.anjuke.com/fangyuan/duyun/px3-p’+str(i + 2) + ‘/’
url_list.append(url)
for i in range(len(url_list)):
response = requests.get(url_list[i], headers=headers)
1.2? 使用Beautiful Soup解析頁面內容
Beautiful Soup提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。它通過解析文檔為用戶提供需要抓取的數據[2]。Beautiful Soup已成為和lxml、html6lib一樣出色的python解釋器,為用戶靈活地提供不同的解析策略或強勁的速度[3]。針對下載的網頁文檔,使用Beautiful Soup提供各種選擇器進行目標數據的解析并抽取。核心代碼為:
soup = BeautifulSoup(response.text, ‘lxml’)
totaldivlist = soup.find_all(“div”, attrs={“class”, “zu-itemmod”}) #每頁房源信息列表
lenth = len(totaldivlist)? #每頁房源的數目
for j in range(lenth):
house_info = totaldivlist[j].find(“div”, attrs={“class”, “zu-info”}) #房源名
house_name = house_b[0].text
house_u = house_info.find(name=”a”)
house_url = house_u[‘href’]#房源的鏈接
house_t = totaldivlist[j].find(“p”, attrs={“class”, “details-item tag”})
house_ty = house_t.find_all(name=”b”) #戶型
for k in range(len(house_ty)):
if k == 0:
house_type += house_ty[k].text + ‘室’
elif k == 1:
house_type += house_ty[k].text + ‘廳’
else:
house_area = house_ty[k].text + ‘平米’#房源面積
house_location = totaldivlist[j].find(“span”, attrs={“class”, “cls-2”}).text #戶型朝向
address = totaldivlist[j].find(“address”, attrs={“class”, “details-item”}).text #地址
price_span = totaldivlist[j].find(“div”, attrs={“class”, “zu-side”})
price = price_span.find(‘b’).text + ‘元/月’? #租房價格
1.3? 數據清理及存儲
1.3.1? 數據清理
從網頁中獲取的數據均為文本數據,這些數據并不能直接進行數據分析。在數據分析和可視化之前,需要先去掉一些臟數據,修正一些錯誤數據,對存儲數據進行預處理,如房租價格、房屋面積的數字化處理,房型數據的分割(廳、室和衛),如3室1廳1衛等。
1.3.2? 數據存儲
為了能夠對出租房房源信息進行可視化,同時對租房價格趨勢做出合理的預測,獲取的房源數據,是從安居客網爬取的2021年3月到6月掛牌都勻市出租房房源信息,共1 039條數據。
Python中,常用數據存儲是數據庫(MySQL或Redis數據庫)以及文件存儲,如CSV文件和Excel文檔等。本文中采用CSV文件進行數據存儲。
2? 數據分析與可視化
本階段是對房源數據從整體上進行探究性分析,通過數據可視化呈現,能更好、更直觀的認識數據,并尋找和探尋數據背后的內在規律。文章針對出租房房源的所屬小區、住房面積、戶型(室數、廳數和衛數)、朝向和出租房價格等特征項進行分析。
2.1? 都勻出租房基本信息可視化分析
2.1.1? 都勻各熱門小區出租房及占比分析
都勻各熱門小區出租房及占比分析餅圖如圖1所示,選取并顯示房源數量最多的7個熱門小區。從圖中可以看出,伯爵花園小區提供的房源占據了整體房源數據中的31.250%,其他各個小區的占比差別不大。由此看出,房源的地理位置很大程度決定租房的需求,鄰近市中心區域,租房的需求和房源供應量就隨之提升。
2.1.2? 出租房屋面積的分布
如圖2都勻出租房面積餅圖所示,大約82%的房源的建筑面積集中在100平方米以下,大面積的房源數量比較少。面積80平方米以下房源數據覆蓋的范圍比較廣泛,滿足絕大多數租房者的租賃需求。
2.2? 出租房價格可視化分析
2.2.1? 都勻租房價格區間與房源數量之間關系
都勻各熱門小區租房每月均價與房源數量之間關系如圖3所示。從圖中可以看出,能提供出租房源數量最多小區是伯爵花園小區,共74套,每月租房均價1 392元。每月租房均價最高小區是碧桂園濱江一號,每月均價為2 257元,共20套。提供出租房源數量最少小區是文峰家園小區,共13套,每月租房均價1 223元。每月租房均價最低小區是平惠小區,每月均價為950元,共20套。
2.2.2? 都勻租房價格與出租房面積之間關系
都勻出租房面積與每月租房均價關系如圖4所示。從圖中可以看出150平方米以上的房租每月均價是最高的,為1 904元/月。30平方米以下的房租每月均價是最低的,為751元/月。
每月租房均價的范圍從751元/月到1 646元/月,面積從30平方米到150平方米,完全滿足絕大多數人的租賃需求。位置的選擇上基本覆蓋都勻市主要的各個熱門小區。
3? 房租價格預測分析
近年來,作為機器學習算法之一的隨機森林受到越來越廣泛的關注。隨機森林[4]是一種統計學習理論,利用bootstrap抽樣的方式從原始數據集中抽取多個樣本,對每個bootstrap樣本進行決策樹建模,組合多個決策樹投票得到最終預測結果。
隨機森林算法具有需要調整的參數較少、不必擔心過度擬合、分類速度快、能高效處理大樣本數據、能估計特征因素的重要性、很好的處理類別變量、有較強的抗噪聲能力等優點[5]。與線性回歸相比,避免了線性回歸事先假定的線性關系不符合實際造成較大誤差的情況。且隨機森林不用對函數形式事先進行假設,避免了假設誤差。
首先利用自助抽樣法,從原始數據集中抽取B個樣本,且每個樣本容量都與原始數據集相同;然后對B個樣本分別建立B棵樹,得到B個結果;最后,對這B個結果取平均值得到最終的預測結果。基于隨機森林的出租房價格評估模型計算如下,出租房的隨機森林模型由B棵樹組成,{F1(X),F2(X),…,FB(X)},其中X={x1,x2,…,xp}是出租房的維特征向量。結果會產生B個結果,,……,。其中,是第b棵樹的預測結果。算法流程為:
(1)原始數據含樣本量為1 039多個,應用bootstrap方式抽樣選擇30個樣本集,構建30棵決策樹。每次抽樣未被抽到的樣本構成OOB樣本作為隨機森林的驗證樣本。
(2)樣本中特征變量個數為6,使用隨機森林做回歸時,通常選取特征變量個數除以3。本文每一次劃分選擇2個變量。
(3)每一棵決策樹生長到最大,無須進行剪枝,重復上述步驟直到生成30棵決策樹。
通過如上步驟,建立得到出租房的隨機森林價格評估模型,將OOB樣本輸入隨機森林模型得到房價預測精度。預測效果如圖5所示。
從圖5中可以看到隨機森林模型有較好的評估精度,能夠有效的挖掘出樣本所隱含的信息,能較準確地對房租價格進行預測,具有實用價值[6]。
4? 結? 論
本文通過爬蟲程序爬取都勻市出租房房源信息,通過數據清理及預處理后,以可視化方式對不同小區的租房價格,戶型類型及租房面積進行展示,同時引入隨機森林預測模型對房租價格進行較為準確的預測,為尋租者在查找出租房源的過程中提供了便利。
參考文獻:
[1] 王鳳麗,侯建華.邊緣青年的現狀與出路 [N].中華讀書報,2021-02-10(19).
[2] 崔慶才.Python3網絡爬蟲開發實戰教程 [M].北京:人民郵電出版社,2018:168
[3]陳海燕,朱慶華,?,?基于Python的網頁信息爬取技術研究 [J].電腦知識與技術,2021,17(8):195-196.
[4] 葛新權,張守一.變系數季度預測模型 [J].預測.1995(1):62-63+55.
[5] 劉冬琴.自然場景下交通標志檢測算法研究 [D].北京:北京交通大學,2016.
[6] 王洪.基于K-means和BP神經網絡的房租價格批量評估研究 [D].武漢:華中農業大學,2019.
作者簡介:李濤(1974.05—)男,漢族,安徽蕪湖人,副教授,碩士研究生,研究方向:智能信息處理及軟件工程。