熱線電話:13121318867

登錄
首頁精彩閱讀房屋價格數據采集與分析
房屋價格數據采集與分析
2018-03-30
收藏

房屋價格數據采集與分析

隨著互聯網的發展,可供分析的信息越來越多,利用互聯網上的信息來對生活中的問題做一些簡單的研究分析,變得越來越便利了。本文就從數據采集、數據清洗、數據分析與可視化三部分來看看新的一年里房市的一些問題。

數據采集:

數據采集即從網頁上采集我們需要的指定信息,一般使用爬蟲實現。當前開源的爬蟲非常多,處于簡便及學習的目的,在此使用python的urllib2庫模擬http訪問網頁,并BeautifulSoup解析網頁獲取指定的字段信息。本人獲取的鏈家網上的新房和二手房數據,先來看看原始網頁的結構:

首先是URL,不管是新房還是二手房,鏈家網的房產數據都是以列表的方式存在,比較容易獲取,如下圖:

其中包含的信息有樓盤名稱、地址、價格等信息,回到原始網頁,看看在html中,這些信息都在什么地方,如下圖:

值得注意的是,原始的html為了節省傳輸帶寬一般是經過壓縮的,不太方便分析,可以借助一些html格式化工具進行處理再分析。知道這些信息后,就可以模擬http請求來拉取html網頁并使用BeautifulSoup提取指定的字段了。

fw = open("./chengdu.txt","a+")  
    index = [i+1 for i in range(32)]  
    for pa in index:    
        try:  
            if pa==1:  
                url = "http://cd.fang.lianjia.com/loupan/"  
            else:  
                url = "http://cd.fang.lianjia.com/loupan/pg%d/"%(pa)  
            print "request:"+url  
            req = urllib2.Request( url )  
            req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")  
            req.add_header("Accept","*/*")  
            req.add_header("Accept-Language","zh-CN,zh;q=0.8")  
              
            data = urllib2.urlopen( req )  
            res = data.read()  
            #print res  
            #res = res.replace(" ","")  
            #print res  
            #objects = demjson.decode(res)  
              
            soup = BeautifulSoup(res)  
            houseLst = soup.findAll(id='house-lst')  
            resp = soup.findAll('div', attrs = {'class': 'info-panel'})  
              
            for i in range(len(resp)):  
                name =  resp[i].findAll('a', attrs = {'target': '_blank'})[0].text   
                  
                privice = resp[i].findAll('span', attrs = {'class': 'num'})  
                privice =  privice[0].text  
                   
                region = resp[i].findAll('span', attrs = {'class': 'region'})  
                address =  region[0].text.split('(')[0]  
                ##解析獲得經緯度  
                location,city,district = getGdLocation(name)  
                if not location:  
                    location = getBdLocation(address)#自定義函數  
                if not location:  
                    continue  
                formatStr = "%s,%s,%s,%s,%s\n"%(city,district,name,location,privice)  
                print formatStr  
                fw.write(formatStr)  
        except:  
            pass  
    fw.close()  
數據清洗

數據清洗,顧名思義就是將不合規的數據清理掉,留下可供我們能夠正確分析的數據,至于哪些數據需要清理掉,則和我們最終的分析目標有一定的關系,可謂仁者見仁智者見智了。在這里,由于是基于地理位置做的一個統計分析,顯然爬取的地理位置必須是準確的才行。但由于售房者填寫的地址和樓盤名稱可能有誤,如何將這些有誤的識別出來成為這里數據清洗成敗的關鍵。我們清洗錯誤地理位置的邏輯是:使用高德地圖的地理位置逆編碼接口(地理位置逆編碼即將地理名稱解析成經緯度)獲得樓盤名稱和樓盤地址。對應的經緯度,計算二者對應的經緯度之間的距離,如果距離值超過一定的閥值,則認為地址標注有誤或者地址標注不明確。經過清洗后,獲取到的成都地區的在售樓盤及房屋數量總計在3000套的樣子。

經過清洗后的數據格式為:

包括市、區、樓盤/房屋名稱、經緯度、價格四個維度。

數據分析與可視化:

首先是新推樓盤掛牌價格與銷售價格

市中心依然遵循了寸獨存金的原則,銷售價格遠遠高于郊縣,一方面原因是位置地段、配套的獨特性,一方面也是由于可供銷售的土地面積、樓盤數量極為有限。

二手房銷售價格和掛牌數量

二手房交易重要集中在市區及一些經濟比較發達的郊縣,不同區縣的價格分化并不大,可能原因是老城區銷售的二手房存在一部分老房子、同時二手房的價格賣家寫的比較隨意。

二手房數據的箱型圖

這個就更為明顯的印證了上面的結論,主城區的二手房存在一部分價格遠低于市場均價的(即老房子),也有一部分價格昂貴的(新房、豪宅)出售,郊縣的價格均方差則會低很多。

房屋銷售熱度的空間可視化

房屋銷售熱度以該區域的房屋銷售數量和房屋銷售價格綜合來衡量,計算方式以該區域銷售的房屋數量及銷售價格進行加權。

新房銷售熱度

二手房銷售熱度

主城區沒什么好說的了,人口密度大、買房售房的都多。在南邊有一塊遠離市區的地方、新房和二手房的交易熱度都很高,即成都市天府新區,目前配套和各項設施都不太完善,去這里花高價買房安家的老百姓想必不會太多,猜測是去年炒房熱過年,這些人現在開始出售房屋了。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢