《安家》熱播,我用Python對北京房價進行了分析,結果……

關注統計與數據分析實戰,帶你飛

今天,讓我們通過一個小案例快速瞭解一下數據分析的常規流程。

分析流程解析

分析背景

分析思路與方法

分析過程(及微觀方法)

分析結論及建議

分析背景

現有一份北京二手房市場近幾年交易情況的數據集,我們希望通過對數據集的分析對北京二手房市場相關信息有一個總體瞭解,能夠爲在北京買房做出一定的數據指導。

字段解析

id:交易編號

tradeTime:交易時間

followers:關注人數

totalPrice:總價

price:單價

square:面積

livingRoom:臥室數量

drawingRoom:客廳數量

kitchen:廚房數量

bathRoom:浴室數量

floor:樓層

buildingType:建築類型

buildingStructure:建築結構

ladderRatio:梯戶比

elevator:有無電梯

fiveYearsProperty:是否滿五年

subway:有無地鐵

disrict:所在區域

communityAverage:小區均價

分析思路與方法

接下來,讓我們根據以上數據集的維度,整理分析思路,看看哪些信息對我們在北京買房比較有幫助!


首先,需要了解“價格”信息,例如:

  1. 市場近幾年的整體價格趨勢是什麼情況?

  2. 房源在不同價格區間的大致分佈狀態是什麼樣子的?

然後,可以看看“交易數量與熱度”,例如:

  1. 通過不同時間的交易數量可以大致判斷有沒有明顯的交易淡旺季?

  2. 通過關注人數可以瞭解哪些房源比較受歡迎,然後觀察一下他們的價格及其他特徵。

針對以上我們準備瞭解的信息,本次分析主要會使用描述性統計方法,然後對分析結果進行可視化展示。

常用分析方法解析

描述型分析:

最常見的分析方法,旨在告訴分析師“發生了什麼”,提供了重要指標和業務的衡量方法,利用可視化工具,能夠有效地增強描述型分析所提供的信息

診斷型分析:

通過評估描述型數據,診斷分析工具能夠讓分析師深入分析數據,鑽取到數據核心,並診斷出“爲什麼會發生”

預測型分析:

通過預測模型,使用各種變量來進行預測,數據成員的多樣化與預測結果密切相關,通過預測型分析可以知道“可能會發生什麼”

指令型分析:

指令分析不單獨使用,基於以上三種分析方法的完成,是在分析師已經瞭解“發生了什麼”,“爲什麼會發生”以及“可能會發生什麼”之後,通過分析來幫助業務決定“需要做些什麼”

分析過程(及微觀方法)

數據導入及整體信息查看:

首先,導入我們的“數分三劍客”,

import pandas as pd
import numpy as np
import matplotlib as plt

載入數據,

我們看到,給出了數據類型警告,方便起見,將以上幾個字段全部定義爲str,在處理過程中根據需要再進行修改,

df = pd.read_csv('./test_data/beijing_houst_price.csv',dtype={'id':'str', 'tradeTime':'str','livingRoom':'str','drawingRoom':'str','bathRoom':'str'})

查看一下數據的整體信息,

df.shape
df.head(10)
df.describe()
df.count()

大約32萬條數據,19個字段

查看數據前10行,各字段信息如下

數值類列的常用統計值

查看各列非空值數量

常用統計值解析

count--計算每列中非空數值的數量

mean--返回每列的平均值

std--返回每列的標準差

min--返回每列的最小值

max--返回每列的最大值

(25%,50%,75%)--統計學四分位數,其中50%對應中位數

數據清洗及預處理:

每個編號對應一筆交易,看下是否有重複數據,

df[df['id'].duplicated()]

由於是橫跨好幾年的數據,有些年份可能數據會比較少,先看看每年數據的總量,確定一下是否需要刪除數據少的年份,我們從時間維度對數據進行一次清洗,使用tradeTime字段,

先將字符串轉爲日期格式,方便提取

df['tradeTime'] = pd.to_datetime(df['tradeTime'])
# df.dtypes    # 可以查看當前的數據類型

統計下每年的數據量

df['tradeTime'].dt.year.value_counts()

其中有幾個年份數據量太少,我們在這裏選擇2012-2017年的數據比較合適

df.drop(df[df['tradeTime'].dt.year < 2012].index, inplace=True)
df.drop(df[df['tradeTime'].dt.year > 2017].index, inplace=True

接下來再看每年的數據量

好了,現在我們拿到了合適時間範圍的數據。剛纔在查看常用統計值時,我們看到在totalPrice和price兩個字段中存在像0.1或者1這樣不正常的值,接下來我們從價格維度再清洗一次數據,分別使用totalPrice,price和communityAverage三個字段,

根據四分位數的分佈範圍,在totalPrice字段中暫取小於50萬和小於100萬這兩個範圍先分別查看一下各自對應多少條數據,

df[df['totalPrice'] < 50]
df[df['totalPrice'] < 100]

總價小於50萬

總價小於100萬

根據我們剛纔清洗後的樣本數據量(約31萬),這裏可以直接刪除總價在100萬以下的數據了,然後同樣的方法再用price字段進行一次清洗,這裏選擇刪除單價在10000以下的數據,現在我們可以再看一下常用統計值,

df.drop(df[df['totalPrice'] < 100].index, inplace=True)
df.drop(df[df['price'] < 10000].index, inplace=True)

df.drop(df[df['communityAverage'].isnull()].index, inplace=True)

communityAverage最大值和最小值合理,不過有空值,大約只有400條數據,這裏我們直接刪掉(也可以選擇填充),最後再看一下square列,值都在合理的範圍內,並且也沒有空值,現在,數據清洗就已經完成了,接下來可以開始分析。

數據分析(提取、篩選、彙總、統計):

我們回到最開始提出的幾個問題,現在從數據中找到它們的答案。

市場近幾年的整體價格趨勢是什麼情況?

從均價一般可以看出市場的整體水平,這裏我們統計一下每日所有房源的平均單價,

數據可視化展示:

上圖可以看出近幾年北京房價的一個整體上漲趨勢,其中有個別偏離度較大的極值,可能是房價受一些短期因素的影響或者當日成交房源的價格中有偏離度極大的值造成的,這裏不用過多考慮。

常用統計圖說明

線圖:能夠顯示數據的趨勢,反映事物的變化情況

散點圖:判斷變量之間是否存在數量關聯趨勢,展示分佈規律

柱狀圖:繪製離散數據,能夠一眼看出各個數據的大小,比較數據之間的差別

直方圖:繪製連續性的數據,展示一組或者多組數據的分佈狀況

餅圖:展示分類數據的佔比情況

房源在不同價格區間的大致分佈狀態是什麼樣子?

通過之前對整體價格趨勢的分析,可以看到在有些年份房價的漲幅非常明顯,考慮到這一點,我們如果要看房源價格區間的分佈,最好設定一個時間範圍,這裏我們選擇以年爲單位分別進行統計,下面以成交量最大的2016年爲例,其他年份可以按照同樣的方法進行類比,取出2016年的所有數據,我們以總價的最大值和最小值爲整體範圍,按50萬的區間距離,先畫一個粗略的直方圖,

可以看到,總價在2000萬以上的房子幾乎都沒有了,爲了更好地表示區間分佈情況,調整一下取值範圍,在最小值到2000萬的範圍內重新統計,

好了,現在可以明顯地看出來,在2016一整年裏,250萬到300萬之間成交的房源數量是最多的。當然,這裏價位區間的間距可以根據需要再放大或縮小,其他年份的統計方法以此類推,就不再贅述了。

判斷一下有沒有明顯的交易淡旺季?

可以通過每個月的交易數量來判斷一下交易淡旺季,然後我們把這幾個年份放在一起進行下對比,看看有沒有比較明顯的規律。

上圖反映了交易量隨月份變化的情況,通過連續六年的對比,我們可以看出在大多數年份,3月左右房子交易會有一個小高峯,12月左右,交易量也有明顯上升趨勢。

哪些房源比較受歡迎,它們有什麼特點?

考慮到時間因素的影響,房子價格等信息或許有較大變化,爲了分析結果更加精細,我們還是取單一年份分別統計,這裏以交易量最大的2016年爲例。共有約9萬條數據,因爲還有很多關注人數爲0的數據,預先查看後,這裏取關注人數最多的前3%的數據,做一個樣本集,我們看下這個樣本集的房源價格、房子面積等屬性呈現怎樣的特徵。

以上房源的關注人數都在百人以上,最高達1000人,我們看下這些房子都有什麼特點?

上面兩張圖分別是這些房源的總價及單價分佈情況,下面兩張圖分別是房源是否滿5年和房源面積的佔比情況。可以看出,這些最受歡迎的房源總價大多在200到300萬之間,有7成左右都是滿5年的,並且面積在30到90平米之間的居多。如果你打算在北京買房,這些房源可以考慮考慮哦。

分析結論及建議

最後我們來總結一下,看看數據說了些什麼。市場的總體價格趨勢是持續上漲,在16年有一個較大的增幅,17年略有回落;以16年爲例,我們看到圍繞200到300萬這個範圍房源是最多的;通過連續6年的對比,在3月和12月附近有較爲明顯的交易小高峯;最受歡迎的房源都在200-300萬之間,和全部房源的數量分佈情況十分吻合,並且這些受歡迎的房子多在30到90平米,大多數都是5年以上的房子。這個案例就不給大家分析意見了,如果一定說一條,那就是:好好掙錢!!!畢竟這些價格都已經是幾年前的咯。

如果你已經看到了這裏,非常感謝閱讀,順便收下我的膜拜,哈哈哈!

如果有機會在北京買了房,勿相忘哦!

記得點在看,麼麼噠~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章