成都二手房調(diào)查分析

背景:新住房政策頒布闰非,影響了成都房屋銷售市場膘格。需要了解近期二手房市場的熱門房屋信息,以調(diào)整貸款產(chǎn)品财松。
數(shù)據(jù):爬取二手房交易網(wǎng)站近期數(shù)據(jù)瘪贱,成都各個區(qū)域交易熱度較高的房屋信息。
目標:分析成都各區(qū)域二手房市場走勢辆毡,了解各區(qū)域交易情況菜秦,通過SPSS為房屋處置提供數(shù)據(jù)支持,做出可視化報告舶掖。
潛在風險:貸款項目受房價行情影響較大球昨,存在房價波動、變現(xiàn)難等風險眨攘。目前二次抵押在所有住宅抵押項目中占比例較多主慰。(二次抵押:房屋剩余價值進行抵押借款。二抵無法享受優(yōu)先受償權(quán)期犬,因此風險較一抵稍大)


制定目標——獲取數(shù)據(jù)——挖掘&分析——撰寫報告
思路&流程

針對成都二手房市場河哑,近期的變動做出分析與預(yù)測。


二手房市場現(xiàn)狀

【一】 爬取數(shù)據(jù)

選擇的是目前成都最大的二手房屋交易網(wǎng)站貝殼網(wǎng)龟虎,以熱度為標準璃谨,爬取相關(guān)房屋信息。

import requests
from lxml import etree
import pandas as pd
import re
IO='https://cd.ke.com/ershoufang/?utm_source=baidu&utm_medium=ppc&utm_term=%E8%B4%9D%E5%A3%B3&utm_content=%E5%93%81%E7%89%8C_%E5%93%81%E7%89%8C&utm_campaign=%E6%88%90%E9%83%BD_%E5%93%81%E7%89%8C_%E7%B2%BE%E7%A1%AE'
r=requests.get(IO)
data=etree.HTML(r.text)
area=data.xpath('/html/body/div[3]/div[1]/dl[2]/dd/div[1]/div/a/text()')
link=data.xpath('/html/body/div[3]/div[1]/dl[2]/dd/div[1]/div[1]/a/@href')

#爬取房屋名(每個區(qū)域帶看次數(shù)最多的前90戶)
def Name(link):
    NAME=[]
    for i in link:             
        A=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text)       
            name=data.xpath('''//div[4]/div[1]/ul/li/div[1]/div[1]//a[@class='CLICKDATA']/text()''')
            A=A+name
        NAME=NAME+A
    NAME=pd.DataFrame(pd.Series(NAME),columns=['名字'])
    return (NAME)
#爬取房屋總價
def All(link):
    ALL=[]
    for i in link:             
        A=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text)     
            all=data.xpath('//div[4]/div[1]/ul/li/div[1]/div[6]/div[1]/span/text()')
            A=A+all
        ALL=ALL+A
    ALL=pd.DataFrame(pd.Series(ALL),columns=['總價(萬元)'])
    return (ALL)
#爬取房屋單價
def Price(link):
    PRICE=[]
    for i in link:             
        A=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text)
            price=data.xpath('//div[4]/div[1]/ul/li/div[1]/div[6]/div[2]/span/text()')
            a=[]
            for i in price:
                b=re.sub("\D", "",(i.split('/')[0]))
                a.append(b)   
            A=A+a    
        PRICE=PRICE+A            
    PRICE=pd.DataFrame(pd.Series(PRICE),columns=['均價(¥/m^2)'])
    return(RICE)
#爬取房屋查看人數(shù)
def Number(link):
    NUMBER_1=[]
    NUMBER_2=[]
    for i in link:             
        A=[]
        B=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text)        
            number=data.xpath('//div[4]/div[1]/ul/li/div[1]/div[4]/text()')
            number1=[]
            number2=[]
            for i in number:
                a=re.sub("\D", "",(i.split('/')[0]))
                b=re.sub("\D", "",(i.split('/')[1]))
                number1.append(a)
                number2.append(b)
            A=A+number1
            B=B+number2
        NUMBER_1=NUMBER_1+A
        NUMBER_2=NUMBER_2+B
    NUMBER_1=pd.DataFrame(pd.Series(NUMBER_1),columns=['關(guān)注人數(shù)'])
    NUMBER_2=pd.DataFrame(pd.Series(NUMBER_2),columns=['帶看人數(shù)'])
    return (NUMBER_1,NUMBER_2)
#房間布局,面積
def Style(link):
    STYLE=[]
    SIZE=[]
    for i in link:             
        A=[]
        B=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text)        
            s=data.xpath('//div[4]/div[1]/ul/li/div[1]/div[2]/div/text()')
            style=[]
            size=[]
            for i in s:
                style.append(i.split('|')[1])
                size.append(i.split('|')[2])
            A=A+style
            B=B+size
        STYLE=STYLE+A
        SIZE=SIZE+B
    STYLE=pd.DataFrame(pd.Series(STYLE),columns=['布局'])
    SIZE=pd.DataFrame(pd.Series(SIZE),columns=['面積(m^2)'])
    return( STYLE,SIZE)
#所在小區(qū)
def Street(link):  
    NAME_2=[]
    for i in link:             
        A=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text)        
            where=data.xpath('//div[4]/div[1]/ul/li/div[1]/div[2]/div/a/text()')
            A=A+where
        NAME_2=NAME_2+A
    NAME_2=pd.DataFrame(pd.Series(NAME_2),columns=['小區(qū)'])
    return(NAME_2)
#位置
def Location(link):
    WHERE=[]
    for i in link:             
        A=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text)        
            where=data.xpath('//div[4]/div[1]/ul/li/div[1]/div[3]/div/a/text()')
            A=A+where
        WHERE=WHERE+A
    WHERE=pd.DataFrame(pd.Series(WHERE),columns=['具體方位'])
    return (WHERE)
#建筑時間
def Age(link):
    AGE=[]
    for i in link:             
        A=[]
        url='https://cd.ke.com'+'{}'.format(i)
        for j in range(1,4): 
            if j== 1:
                url1=url +'/co52/'
            else:
                url1=url +'/pg%dco52/' %j
            r=requests.get(url1,timeout=5)
            data=etree.HTML(r.text) 
            s=data.xpath('//div[4]/div[1]/ul/li/div[1]/div[3]/div/text()')
            age=[]
            for i in s:
                a=re.sub("\D", "",i)
                if len(a)<4:
                    age.append('NAN')
                else:
                    age.append(a[-4:])
            A=A+age
        AGE=AGE+A
    AGE=pd.DataFrame(pd.Series(AGE),columns=['建筑時間']) 
    return (AGE)
#匯總表格  
if __name__ == '__main__': 
    NAME = Name(link)
    NAME_2 = Street(link)
    WHERE = Location(link)
    STYLE,SIZE = Style(link)
    ALL = All(link)
    PRICE = Price(link)
    NUMBER_1,NUMBER_2 = Number(link)
    AGE = Age(link)
    _房屋信息=pd.concat([NAME,NAME_2,WHERE,STYLE,SIZE,ALL,PRICE,NUMBER_1,NUMBER_2,AGE],axis=1)
    return (_房屋信息)

爬取完成后導(dǎo)入Excel文件

貝殼網(wǎng)房屋參數(shù)

【二】 數(shù)據(jù)清洗

根據(jù)業(yè)務(wù)經(jīng)驗選擇出影響因素較大的特征維度進行分析鲤妥。


分析目標

文本數(shù)值化:因為房屋具體位置在分析中所占有的比例較高佳吞,因此帶如SPSS操作時進行二次處理。
eg: 錦江區(qū)—東大路 替換為 1001
缺失值填充:若缺失值超過80%放棄此維度棉安,有連續(xù)規(guī)律的進行計算后填充底扳,無規(guī)律空值使用pd.NAN進行填充。

將數(shù)據(jù)簡易清洗后得到額外兩張表格


各區(qū)數(shù)據(jù)

房屋時間

【三】 圖表分析

通過Spss分析清洗后的數(shù)據(jù)贡耽,做出可視化分析報告衷模。

房屋總量分析
房價分析

目前成都各區(qū)域房價主要分層4個檔位鹊汛。

房屋價格分析

一下選擇各個區(qū)域的熱門房屋進行分析。


區(qū)域分析
房屋熱度
房屋布局分析
房屋年限

決策樹分析

可以知區(qū)域布局在二手房市場中影響比例最大阱冶,貸款業(yè)務(wù)中應(yīng)當主要考慮這兩個維度刁憋。

詞云分析

【四】 結(jié)論報告

小面積房屋分析
分析結(jié)論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市木蹬,隨后出現(xiàn)的幾起案子至耻,更是在濱河造成了極大的恐慌,老刑警劉巖镊叁,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尘颓,死亡現(xiàn)場離奇詭異,居然都是意外死亡晦譬,警方通過查閱死者的電腦和手機疤苹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛔添,“玉大人痰催,你說我怎么就攤上這事∮疲” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵逸吵,是天一觀的道長凶硅。 經(jīng)常有香客問我,道長扫皱,這世上最難降的妖魔是什么足绅? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮韩脑,結(jié)果婚禮上氢妈,老公的妹妹穿的比我還像新娘。我一直安慰自己段多,他們只是感情好首量,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著进苍,像睡著了一般加缘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上觉啊,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天拣宏,我揣著相機與錄音,去河邊找鬼杠人。 笑死勋乾,一個胖子當著我的面吹牛宋下,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辑莫,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼学歧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了摆昧?” 一聲冷哼從身側(cè)響起撩满,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绅你,沒想到半個月后伺帘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡忌锯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年伪嫁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偶垮。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡张咳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出似舵,到底是詐尸還是另有隱情脚猾,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布砚哗,位于F島的核電站龙助,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蛛芥。R本人自食惡果不足惜提鸟,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仅淑。 院中可真熱鬧称勋,春花似錦、人聲如沸涯竟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昆禽。三九已至蝗蛙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間醉鳖,已是汗流浹背捡硅。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盗棵,地道東北人壮韭。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓北发,卻偏偏與公主長得像,于是被迫代替她去往敵國和親喷屋。 傳聞我的和親對象是個殘疾皇子琳拨,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容