深圳二手房房源市場(chǎng)研究(上)

PartⅠ:數(shù)據(jù)獲取和數(shù)據(jù)清洗

寫(xiě)在前面

很早就有寫(xiě)博客的想法没咙,一直對(duì)自己不自信所以沒(méi)敢嘗試通孽,每次看其他大神的博客都很羨慕和崇拜泌豆,希望自己在未來(lái)的某一天也能給其他人給予一些力所能及的幫助。目前的我還是個(gè)小小小小白,很多東西都只懂些皮毛劫流,這是我的第一篇博客,分享一下我在學(xué)校的一篇期末論文(輕點(diǎn)噴嗚嗚嗚...
如果有疑問(wèn)或者分享,歡迎私信我或者留言办艋恪仍秤!一起進(jìn)步吧!請(qǐng)各位大神多多指教啦~

研究背景

隨著近年來(lái)經(jīng)濟(jì)的飛速發(fā)展可很,北上廣深這四大都市全方位均有突出的表現(xiàn)诗力,工作機(jī)會(huì)多,生活質(zhì)量高我抠,發(fā)展前景可觀苇本。但是要在這些城市定居不是一件容易的事,所以二手房便成為了大部分來(lái)大城市打拼人們的選擇菜拓。通過(guò)Python爬取房天下網(wǎng)站中深圳十個(gè)區(qū)的的房源相關(guān)信息瓣窄,對(duì)爬取的數(shù)據(jù)集進(jìn)行清洗,并對(duì)各維度的數(shù)據(jù)進(jìn)行可視化纳鼎,探索深圳二手房的整體情況俺夕,分析房?jī)r(jià)的影響因素,最終得出深圳購(gòu)買二手房的策略和方向贱鄙。

數(shù)據(jù)獲取

本研究選擇了房天下網(wǎng)站(http://sz.esf.fang,com/)作為爬取對(duì)象劝贸,爬取步驟大概分成了四步,分別是:首先是指定網(wǎng)站的url贰逾,然后發(fā)起get請(qǐng)求悬荣,其次是通過(guò)利用xpath語(yǔ)句進(jìn)行相關(guān)信息點(diǎn)的定位并獲取數(shù)據(jù),最后把數(shù)據(jù)保存到本地疙剑。

爬取頁(yè)面

深圳一共十個(gè)地區(qū)氯迂,每個(gè)區(qū)每頁(yè)房源為100 個(gè),每個(gè)房源爬取三個(gè)數(shù)據(jù)言缤,即每頁(yè)大約為300個(gè)數(shù)據(jù)嚼蚀。每個(gè)地區(qū)爬取10頁(yè),且開(kāi)5個(gè)線程同時(shí)爬取以提高爬取效率管挟。(另外一篇博客再來(lái)講講線程哈哈哈)由于該網(wǎng)頁(yè)是通過(guò)異步加載的轿曙,所以在爬取時(shí)選用selenium模擬瀏覽器登陸網(wǎng)站∑ⅲ【友情提示:房天下網(wǎng)站在爬取一定的數(shù)據(jù)量后會(huì)需要輸入驗(yàn)證碼导帝,所以可能爬取過(guò)程會(huì)有點(diǎn)麻煩,建議換個(gè)網(wǎng)站或者爬取數(shù)據(jù)量不要太多(俺的能力還不能解決驗(yàn)證碼/(ㄒoㄒ)/~~)】

數(shù)據(jù)清洗

爬取后總共獲得了11416條房源數(shù)據(jù)穿铆。首先對(duì)其進(jìn)行重復(fù)值檢查:

數(shù)據(jù)集中的重復(fù)值
#導(dǎo)入數(shù)據(jù)
data = pd.read_csv(r"C:\\Users\\Administrator\\OneDrive\\桌面\\數(shù)據(jù)清洗\\深圳二手房數(shù)據(jù).csv")
#data.head()
#取前5列有效數(shù)據(jù)進(jìn)行分析
data = pd.DataFrame(data.loc[:,['區(qū)名','地址','基本信息','總價(jià)','單價(jià)']])
#重復(fù)值檢查
data = data.drop_duplicates()#清除重復(fù)值

通過(guò)Python代碼刪除重復(fù)值您单,刪除掉了394行重復(fù)值,得到一個(gè)11021行5列的新數(shù)據(jù)荞雏。
然后進(jìn)行缺失值檢查:

數(shù)據(jù)集中的缺失值
#缺失值檢查
data.isnull().any()#有4列存在缺失值
#清除上述4列含缺失值的行
newdata = data.dropna(subset=['基本信息','地址','總價(jià)','單價(jià)'])
newdata.shape
#再次進(jìn)行缺失值檢查
newdata.isnull().any()#無(wú)缺失值

通過(guò)刪除缺失值虐秦,刪除掉了10列含有缺失值的行平酿,得到一個(gè)11011行5列的新數(shù)據(jù)。
通過(guò)上述重復(fù)值和缺失值處理悦陋,新數(shù)據(jù)需要更新一下索引蜈彼,否則后面進(jìn)一步處理數(shù)據(jù)時(shí)會(huì)因?yàn)樯鲜鰧?duì)部分?jǐn)?shù)據(jù)進(jìn)行刪除后索引缺失而報(bào)錯(cuò),對(duì)新數(shù)據(jù)進(jìn)行更新索引俺驶。其中幸逆,在基本信息列中,因?yàn)樵W(wǎng)站保存數(shù)據(jù)的緣故痒钝,存在多條信息整合在一起的情況秉颗,并且用|號(hào)分開(kāi),所以需要對(duì)其進(jìn)行分列操作送矩。

數(shù)據(jù)集未分列
#對(duì)新數(shù)據(jù)進(jìn)行更新索引(否則后面處理會(huì)因?yàn)樯厦鎸?duì)部分?jǐn)?shù)據(jù)刪除后索引缺失而報(bào)錯(cuò))
newdata.reset_index(inplace=True)
#把基本信息列分成下面5列
for i in range(len(newdata['基本信息'])):
    s=newdata['基本信息'][i]
    lis_s=s.split("|")
    fenlie("樓層",0)
    fenlie("建樓時(shí)間",1)
    fenlie("布局",2)
    fenlie("面積",3)
    fenlie("朝向",4)
#查看分列后存在空值的數(shù)據(jù)
newdata[newdata.T.isnull().any()]
#把原始基本信息數(shù)據(jù)列剔除
newdata = newdata.drop(columns=['基本信息'])
#把新數(shù)據(jù)中存在缺失值的行進(jìn)行刪除
newdata1 = newdata.dropna(subset=['面積','朝向'])
#查看數(shù)據(jù)類型
newdata1.dtypes

通過(guò)Python的split函數(shù)把基本信息分成五列蚕甥。然而,經(jīng)過(guò)分列后的數(shù)據(jù)會(huì)存在有空值的情況栋荸,同樣利用Python代碼去除掉含有空值的行菇怀,刪除掉了318行,得到一個(gè)10693行10列的新數(shù)據(jù)晌块。
通過(guò)查看數(shù)據(jù)類型爱沟,得知二手房的面積、單價(jià)匆背、布局呼伸、建樓時(shí)間均為object,可以通過(guò)replace函數(shù)對(duì)其進(jìn)行清洗工作钝尸,讓其成為數(shù)字float括享,方便下面的可視化分析。

分列后的數(shù)據(jù)集

同時(shí)珍促,對(duì)二手房的樓層進(jìn)行簡(jiǎn)化處理铃辖,分為低樓層、中樓層和高樓層三個(gè)等級(jí)猪叙。對(duì)于二手房的朝向會(huì)存在多個(gè)朝向的情況娇斩,在分析時(shí)會(huì)引起歧義,所以本文只選取了每個(gè)房源朝向的第一個(gè)值來(lái)作為研究對(duì)象穴翩,其余進(jìn)行刪除犬第。

有歧義的部分
#對(duì)部分?jǐn)?shù)據(jù)列進(jìn)行清洗工作(去除掉多余字符并將其轉(zhuǎn)成float方便下面對(duì)其進(jìn)行分析)
newdata1['面積'] = newdata1['面積'].map(lambda x: x.replace('平米\n','')).astype('float')
newdata1['單價(jià)'] = newdata1['單價(jià)'].map(lambda x: x.replace('元/平米',''))
newdata1['單價(jià)'] = newdata1['單價(jià)'].map(lambda x: x.replace('單價(jià)','')).astype('float')
newdata1['布局'] = newdata1['布局'].map(lambda x: x.replace('\n',''))
newdata1['建樓時(shí)間'] = newdata1['建樓時(shí)間'].map(lambda x: x.replace('年建','')).astype('float')
#對(duì)樓層進(jìn)行簡(jiǎn)化處理(分低、中芒帕、高三個(gè)等級(jí))
def floor(f):
    if f is not None:
        f = str(f)[:3]
    return f
#floor = {'低樓層': '低','中樓層': '中','高樓層': '高'}
newdata1['樓層'] = newdata1['樓層'].map(floor)
#對(duì)朝向列每行進(jìn)行只取第一個(gè)值操作,大部分?jǐn)?shù)據(jù)有多個(gè)朝向分析時(shí)會(huì)引起歧義
def fangxiang(fx):
    if fx is not None:
        fx = str(fx)[:3]
    return fx
newdata1['朝向'] = newdata1['朝向'].map(fangxiang)

通過(guò)上述清洗處理后的數(shù)據(jù)集大致如下:

清洗后的數(shù)據(jù)

最后對(duì)數(shù)據(jù)集進(jìn)行異常值檢查遥椿,通過(guò)Python軟件中的describe函數(shù)對(duì)數(shù)據(jù)集進(jìn)行描述性分析淆储,發(fā)現(xiàn)存在最高的二手房單價(jià)為每平方米20 多萬(wàn)冠场,證明存在異常值。

存在異常值

利用箱線圖進(jìn)一步分析本砰,二手房最小面積為14平米碴裙,最大面積為754.05平米,最便宜的25萬(wàn)点额,最貴的8000 萬(wàn)舔株;面積大概集中在63-113平米,價(jià)格大概集中在319-730萬(wàn)还棱,本文將總價(jià)和面積高于上限的當(dāng)作異常值進(jìn)行刪除處理载慈,考慮大多數(shù)人可購(gòu)買的情況,并把單價(jià)與建樓時(shí)間過(guò)久遠(yuǎn)等不符合客觀事實(shí)的刪除珍手。

數(shù)據(jù)集箱線圖

(代碼和數(shù)據(jù)集我就不放了~有興趣的小伙伴可以私信我哈哈哈)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市琳要,隨后出現(xiàn)的幾起案子稚补,更是在濱河造成了極大的恐慌童叠,老刑警劉巖课幕,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厦坛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡撰豺,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)亩歹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人顾稀,你說(shuō)我怎么就攤上這事粮揉。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我冒窍,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任桩了,我火速辦了婚禮附帽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘井誉。我一直安慰自己蕉扮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布颗圣。 她就那樣靜靜地躺著喳钟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪在岂。 梳的紋絲不亂的頭發(fā)上奔则,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蔽午,去河邊找鬼易茬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛及老,可吹牛的內(nèi)容都是我干的抽莱。 我是一名探鬼主播范抓,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼食铐!你這毒婦竟也來(lái)了尉咕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤璃岳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后悔捶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體铃慷,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蜕该,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犁柜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堂淡,死狀恐怖馋缅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绢淀,我是刑警寧澤萤悴,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站皆的,受9級(jí)特大地震影響覆履,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜费薄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一硝全、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楞抡,春花似錦伟众、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至竞慢,卻和暖如春数初,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背梗顺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工泡孩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寺谤。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓仑鸥,卻偏偏與公主長(zhǎng)得像吮播,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子眼俊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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