用python對2019年二手房價格進行數據分析
- 2019 年 12 月 24 日
- 筆記
本文為讀者投稿,作者:董匯標MINUS 知乎:https://zhuanlan.zhihu.com/p/97243470
最近和朋友聊到買房問題,所以對某二手房價格資訊進行了爬取,爬蟲見本公眾號另一篇文章。
本篇文章利用爬到數據的進行數據分析。
在這篇文章中,用到pandas、seaborn、Matplotlib等工具,分析工具用到提琴圖、箱型圖、散點圖等。
描述性分析
首先導入各種需要的庫方便後續一切操作,並讀取數據表,直接描述一下看看情況
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings # 這部分是超參數提前設置sns.set(style='darkgrid') plt.rcParams['font.family']='Arial Unicode MS' plt.rcParams['axes.unicode_minus']=False warnings.filterwarnings('ignore') data =pd.read_csv('鏈家新房100個.csv') data.describe()
最貴和最便宜
從上面輸出表格可以看到初步結論如下:
這些二手房最小面積9.6平米,最大718平米,最便宜的56萬,最貴的5200萬。面積大概集中在59-102平,價格大概集中在325-630萬,初步資訊看完了有個印象,下邊進行詳細分析。
首先我對這個9.6平的房子很感興趣,提取出來看看,但是運行下邊程式碼看到,CBD核心區,別墅,9.64平,56W,估計是從廁所拆出來賣的。。
作罷。跳過他繼續分析
data.min()

而最貴的呢在鼓樓大街(二環邊上)聯排別墅,售價5200萬。emmm
data.max()

價格分布&面積分布粗看
現在我想直觀的看一下售價分布,從下圖可以看到,售價主要集中在1000萬之內
sns.distplot(data['錢'].dropna())

同樣的思路看一下面積,可以看到這些二手房源面積主要集中在100平米左右
sns.distplot(data['面積'].dropna())

此處其實也可以兩張圖一塊看,程式碼如下:(都有點右偏)
fig, ax =plt.subplots(1,2) #2個子區域 sns.distplot(data['錢'],ax=ax[0]) sns.distplot(data['面積'],ax=ax[1]) plt.show()

售價精看
對售價做一個箱型圖看看,很明顯的1000萬那條橫線以上的點兒,都是合理數據外的數據。
sns.boxplot(data=data['錢'])

那麼合理的數據分別是什麼呢?可以參考以下程式碼
mean, std = data['錢'].mean() , data['錢'].std() # 得到上下限 lower , upper =mean -3*std , mean+3*std print('均值',mean) print('標準差',std) print('下限',lower) print('上限',upper)列印結果可以看到的是標準差集中在358萬,合理上限是1613萬。對現實的指導就是:如果有358萬,買一套房子就夠了,1613萬以上的房買起來就是坑爹了。
均值 538.44 標準差 358.47 下限 -536.9763753150206 上限 1613.8755022458467
價格最低的20套
通過這段程式碼可以看一下這些房子分布在哪裡。
結論見程式碼下截圖,如果你對北京熟悉,可以看到,這些房子主要分布在5環外,部分在順義、昌平、門頭溝等地。
t=data[['小區','地區','錢']].sort_values('錢') display(t.iloc[:20])

面積精看
同樣的方式,可以把」錢"列換為「面積」列看一下,面積均值89平,標準差50平,合理上限240平
均值 89.8874210879787 標準差 50.36697951495447 下限 -61.21351745688473 上限 240.9883596328421
面積最小的部分資訊如下

朝向和裝修程度
通過對戶型方向進行分組展示可以看到在北京,主要還是南北向的,東西朝向的低很多
posit=data['方向'].value_counts()[:10] display(posit)

裝修程度有四類:精裝、簡裝、毛坯、其他。
建築形式有:板樓、塔樓、板樓塔樓結合、別墅等,
這兩個維度與價格有啥關係呢?
來分析分析,做三個圖先:
圖一:裝修狀態和價格關係

圖二:裝修狀態&建築形式與售價關係

圖三:建築形式連同裝修狀態與價格關係

圖四:建築形式箱型圖

通過對裝修狀態做價格分布圖可以看到,精裝修的集中在400±100萬左右,簡裝稍微便宜一丟丟,毛坯房二手很少,其他形式的很多,價格集中在300-500萬左右
對裝修狀態進行樓房形式的拆解後做箱型圖如上,得到結論是板樓、塔樓、板樓塔樓結合是最多的,不論是精裝簡裝還是其他資訊不明的裝修狀態的。
對建築形式連同裝修狀態和價格關係可以看到,不論什麼類型的建築形式,都存在精裝修、簡裝修、毛坯。板樓價格橫跨100萬-1000萬之間,集中在300-600萬之間,板樓塔樓結合的價格集中在350萬-700萬之間,塔樓集中在380-700萬之間。
初步結論,如果能搞到300萬以上,精裝修的板樓或塔樓隨便選。
但若沒這麼多錢,也可以有50-300萬之間的選擇,只是選項少一些,但並不是沒有選擇。
在這個初步結論基礎上提問:我有xxx萬,那麼我能買到多少平的房子呢?
價格面積分析
先將面積分組,分組函數如下
def value_to_level(area): if area >= 0 and area <=40: return '40內' elif area >= 41 and area <=60: return '41-60' elif area >= 61 and area <=80: return '61-80' elif area >= 81 and area <=130: return '81-110' elif area >= 81 and area <=130: return '111-130' elif area >= 131 and area <=180: return '131-180' elif area >= 181 and area <=250: return '181-250' else : return '250以上' level= data['面積'].apply(value_to_level) display(level.value_counts()) sns.countplot(x=level , order=['40內','41-60','61-80','81-110','111-130','131-180','181-250','250以上'])
分組後作圖如下:
面積主要集中在40-110平之間。

做一張散點圖,表明價格、面積的分布,限定橫坐標50-500萬之間,縱坐標40-120平之間
sns.scatterplot(data['錢'], data['面積']) plt.xlim(50,500) plt.ylim(40,120) plt.show()


