python數(shù)據(jù)分析項(xiàng)目——鏈家上海二手房數(shù)據(jù)分析(一)

1.數(shù)據(jù)爬取

鏈接:https://pan.baidu.com/s/1zaTqNY2eCzGyYzesDw0LPw
提取碼:5h8d
鏈接是我自行在鏈家爬取的一些樣本數(shù)據(jù),數(shù)據(jù)量不大,1頁50個(gè),總共30頁房屋信息。下面我就基于這1500個(gè)二手房信息做一個(gè)數(shù)據(jù)分析。

2.數(shù)據(jù)讀取

house_data = pd.read_csv('鏈家上海二手房.csv')
house_data = house_data.reset_index()
lien = house_data['index']
house_data.drop(labels=['index'], axis=1, inplace=True)
house_data.insert(23, '房屋鏈接', lien)
1.png

上圖中可以看到我所爬取的大概信息,總共有23個(gè)維度

3.數(shù)據(jù)去重和篩選

house_data.drop_duplicates(subset='房屋鏈接', inplace=True)
# 先選取最重要的三個(gè)維度來進(jìn)行數(shù)據(jù)分析
hdata = house_data.filter(items=['房子總價(jià)', '建筑面積', '房子單價(jià)'])

由于單價(jià)和總價(jià)這兩個(gè)字段的數(shù)據(jù)都自帶單位,所以下一步我們要繼續(xù)去除這些單位,只留下數(shù)值,才能更方便地進(jìn)行數(shù)據(jù)分析:

# 自定義函數(shù),目的是把單位去掉
def func(x):
    mulnum = 1
    if '億' in x:
        mulnum = 10000
        
    v = re.search('\d+\.?\d+', x).group()
    fv = float(v) * mulnum
    return fv
2.png

最終數(shù)據(jù)的清洗結(jié)果如上圖所示。

4.數(shù)據(jù)可視化

4.1房屋總價(jià)箱狀圖

先簡(jiǎn)單地通過箱狀圖,來觀察下數(shù)據(jù)的整體分布:

sns.boxplot(x=['房屋總價(jià)'], y=[hdata.房子總價(jià)])
房屋總價(jià)boxplot.png

可以看到上海2019年二手房,由于相當(dāng)一部分的異常值,導(dǎo)致整體分布不均勻,無法觀察到總體。

4.2去除異常值

既然有一定量的異常值,那么最好去除,這樣做出來的分析才能更精確,更有說服力:

hdata = hdata[(hdata.房子總價(jià) < 1500) & (hdata.房子總價(jià) > 100) & (hdata.建筑面積 > 15)]
len(hdata[(hdata.房子總價(jià) < 1500) & (hdata.房子總價(jià) > 100)]), len(hdata)
房屋總價(jià)去除異常值后boxplot.png

經(jīng)過處理后可以看到,一半的二手房?jī)r(jià)格浮動(dòng)在200w出頭到接近600w的價(jià)格區(qū)間內(nèi),屬于普通消費(fèi)者水平。

4.3.三個(gè)維度的子圖對(duì)比,箱狀圖

index = 1
plt.figure(figsize=(12, 4))
color = {1: 'OrRd_r', 2: 'RdYlBu', 3: 'copper'}
for order, key in enumerate(hdata.columns.values, start=1):
    plt.subplot(1, 3, index)
    index += 1
    sns.boxplot(x=[key], y=[hdata[key]], palette=color[order])
三個(gè)維度子圖對(duì)比boxplot.png

可以直觀地看到上海二手房的房子單價(jià)75%都超過了4w,平均都超過5w;建筑面積75%少于100平方米。

4.4三個(gè)維度的子圖對(duì)比,直方圖

index = 1
plt.figure(figsize=(20, 6))
colors = {1: 'reddish', 2: 'dark sky blue', 3: 'sandy yellow'}
for order, key in enumerate(hdata.columns.values, start=1):
    plt.subplot(1, 3, index)
    index += 1
    sns.distplot(hdata[key], color=sns.xkcd_rgb[colors[order]], label=key)
    plt.legend()
三個(gè)維度子圖對(duì)比distplot.png

描述的內(nèi)容和上面的箱狀圖一致,但是對(duì)于分布情況,會(huì)更細(xì)致。如果想買二手房,房屋單價(jià)肯定是關(guān)鍵因素之一,然而直方圖只能看到密度,不能看到區(qū)間分布,所以下面我們?cè)籴槍?duì)“房屋單價(jià)”這個(gè)維度進(jìn)行細(xì)分,劃分出區(qū)間來進(jìn)一步觀察在上海,二手房單價(jià)的價(jià)格區(qū)間分布到底是如何的。

4.5 房屋單價(jià) 價(jià)格區(qū)間劃分

interval = list(range(2, 15))
interval.insert(0, 0)
interval.append(20)
interval = np.array(interval) * 10000
result = pd.cut(hdata.房子單價(jià), bins=interval)
uprice = result.value_counts()
uprice = uprice.sort_index()

劃分之后如下圖:


3.png

4.6 房屋單價(jià)可視化

index = list(range(14))
xindex = ['%dw+'%val for val in range(1, 15)]
上海2019鏈家二手房-房子單價(jià)樣本barplot.png
plt.figure(figsize=(8,8))
plt.axes(aspect=1)
x, y, z = plt.pie(uprice.values, labels=xindex, autopct='%2.1f%%', radius=1.2)
r = plt.setp(z, weight='bold', size=11)
plt.legend(loc='best')
房屋單價(jià)區(qū)間分布pie.png

通過兩種圖的展示,我們可以看到4w-5w的房屋總量是最多的,總體3-6w的房屋單價(jià)是目前二手房的主流價(jià)格區(qū)間,通過餅圖可以看到有超過一半的價(jià)格落在這三個(gè)區(qū)間中。

未完待續(xù)......

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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