中国的房价从2005年到现在发生了天翻地覆的变化,如果能提前预测出这种趋势,并做出正确的选择,会更有利于我们财富的积累。
如何发现财富的钥匙,是人生路上的必修课。
除了时间因素,影响房子价格的因素还有很多,比如房子面积、房子地段、房子质量、周边配套等。
本文就从这两个视角出发,和你一起探索影响房价的指标画像,后续文章会对房价进行预测。
数据读取与分析
1.1 数据集介绍
1.2 读取数据
1.3 目标变量分析
1.4 区分数值变量和类别变量
1.5 数值变量和房价之间的关系
影响房价指标画像分析-明细
2.1 建筑类别
2.1 整体质量
2.3 整体状况评级
2.4 建造年份
2.5 改造日期
2.6 销售月份
2.7 总面积
2.8 一楼面积
2.9 二楼面积
2.10 低质量成品
2.11 居住面积
2.12 地下室全套浴室
2.13 地下室半浴室
2.14 地上浴室数量
2.15 地下室以上的卧室数量
2.16 厨房数量
2.17 地上房间总数
2.18 壁炉数量
2.19 车库建成年份
2.20 车库容量大小
2.21 车库面积
2.22 木制甲板面积
2.23 开放式门廊面积
2.24 封闭式门廊面积
2.25 屏幕门廊面积
2.26 泳池面积
影响房价指标画像分析-总结

1 数据集介绍
首先介绍一下数据集,它总共包含了1460套房子建筑信息。
每行存储一套房子的样本,每条样本包含81条属性,主要由建筑类型、建筑时间、建筑材料、建筑质量、销售信息、目标变量组成,具体如下:
| 英文名 | 对应中文 | 英文名 | 对应中文 |
| Id | 标签 | CentralAir | 中央空调 |
| MSSubClass | 建筑类 | Electrical | 电气系统 |
| MSZoning | 一般分区分类 | 1stFlrSF | 一楼平方英尺 |
| LotFrontage | 地段临街:与物业相连的街道的线性英尺 | 2ndFlrSF | 二楼平方英尺 |
| LotArea | 地段面积(平方英尺) | LowQualFinSF | 低质量成品平方英尺(所有楼层) |
| Street | 街道:道路通行类型 | GrLivArea | 居住面积:地面生活区平方英尺 |
| Alley | 小巷:小巷通道类型 | BsmtFullBath | 地下室全套浴室 |
| LotShape | 地段形状:财产的一般形状 | BsmtHalfBath | 地下室半浴室 |
| LandContour | 土地轮廓:房产的平整度 | FullBath | 地上全浴室 |
| Utilities | 可用的实用程序类型 | HalfBath | 地上半浴 |
| LotConfig | 批次配置 | BedroomAbvGr | 地下室以上的卧室数量 |
| LandSlope | 土地坡度 | KitchenAbvGr | 厨房数量 |
| Neighborhood | 邻里:艾姆斯市区范围内的物理位置 | KitchenQual | 厨房质量 |
| Condition1 | 条件1:靠近主要道路或铁路 | TotRmsAbvGrd | 地上房间总数(不包括浴室) |
| Condition2 | 条件 2:靠近主要道路或铁路(如果存在第二个) |
Functional | 家庭功能评级 |
| BldgType | 房屋类型 | Fireplaces | 壁炉数量 |
| HouseStyle | 住宅风格 | FireplaceQu | 壁炉质量 |
| OverallQual | 整体质量:整体材料和表面处理质量 | GarageType | 车库类型 |
| OverallCond | 整体状况评级 | GarageYrBlt | 车库建成年份 |
| YearBuilt | 建造年份:原始建造日期 | GarageFinish | 车库的内部饰面 |
| YearRemodAdd | 改造日期 | GarageCars | 车库容量的大小 |
| RoofStyle | 屋顶类型 | GarageArea | 车库面积(平方英尺) |
| RoofMatl | 屋顶材料 | GarageQual | 车库质量 |
| Exterior1st | 房屋的外部覆盖物 | GarageCond | 车库状况 |
| Exterior2nd | 房屋的外部覆盖物(如果有多种材料) | PavedDrive | 铺砌车道 |
| MasVnrType | 砌体单板类型 | WoodDeckSF | 以平方英尺为单位的木质甲板面积 |
| MasVnrArea | 砌体单板面积(平方英尺) | OpenPorchSF | 开放式门廊面积(平方英尺) |
| ExterQual | 外部质量:外部材料质量 | EnclosedPorch | 以平方英尺为单位的封闭式门廊面积 |
| ExterCond | 外部材料的现状 | 3SsnPorch | 三季门廊面积(平方英尺) |
| Foundation | 粉底类型 | ScreenPorch | 以平方英尺为单位的屏幕门廊面积 |
| BsmtQual | 地下室的高度 | PoolArea | 泳池面积(平方英尺) |
| BsmtCond | 地下室的一般状况 | PoolQC | 泳池质量 |
| BsmtExposure | 花园层地下室墙壁 | Fence | 围栏质量 |
| BsmtFinType1 | 地下室成品区的质量 | MiscFeature | 其他类别中未涵盖的其他功能 |
| BsmtFinSF1 | 类型 1 完成平方英尺 |
MiscVal | 杂项 |
| BsmtFinType2 | 第二完成区域的质量(如果存在) | MoSold | 销售月份 |
| BsmtFinSF2 | 类型 2 完成平方英尺 |
YrSold | 销售年份 |
| BsmtUnfSF | 地下室面积未完成的平方英尺 | SaleType | 销售类型 |
| TotalBsmtSF | 总面积:地下室总平方英尺 | SaleCondition | 销售条件 |
| Heating | 加热类型 | SalePrice | 销售价格 - 以美元为单位的房产销售价格。尝试预测的目标变量。 |
| HeatingQC | 加热质量和条件 |
接着把数据读取到Python中进行预处理,读取数据代码如下:
import osimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inlineos.chdir(r'F:\公众号\房价预测')train_date = pd.read_csv('train.csv')train_date.head(2)
参数解释:
import:导入库。
os.chdir:设置数据读取的位置。
pd.read_csv:读取csv格式的数据。
data.head(2):打印data数据的前2行。
得到结果:

3 目标变量分析
然后删除无意义的标签列,并看下目标变量的分布,代码如下:
#删除Id变量train_date = train_date.drop(columns='Id')test_date = test_date.drop(columns='Id')#因变量直方图sns.distplot(train_date['SalePrice'])
得到结果:

可以发现房屋的销售价格集中在10万美元-20万美元之间,存在明显的偏斜长尾。
接着看下目标变量的描述性统计值,代码如下:
train_date['SalePrice'].describe()得到结果:
count 1460.000000mean 180921.195890std 79442.502883min 34900.00000025% 129975.00000050% 163000.00000075% 214000.000000max 755000.000000Name: SalePrice, dtype: float64
可以发现房屋销售价格的均值为18万美元,最小值为3万4美元,最大值为75万美元。
4 区分数值变量和类别变量
接着看下区分数值变量和类别变量的代码:
num_features = []catg_features = []for col in train_date.columns:if train_date[col].dtype == 'object':catg_features.append(col)else:num_features.append(col)
其中catg_features存储的就是类别变量,num_features存储的就是数值变量。
5 数值变量和房价之间的关系
最后看下不同数值指标和房价之间的散点图和拟合图,代码如下:
#读取特征中文标签x_label = pd.read_csv('x_label.csv', encoding='gbk')x_label.head(2)for i in num_features:#打印特征中英文名称print('特征:', i, '(', x_label[x_label['英文名'] == i]['对应中文'].values[0], ')')#画散点图sns.scatterplot(x=i, y='SalePrice', data=train_date, alpha=0.5)#尝试画拟合线try:z = np.polyfit(train_date[i], train_date['SalePrice'], 1)p = np.poly1d(z)plt.plot(train_date[i], p(train_date[i]))except:passplt.show()print('==================================================')print('')
得到结果(由于循环把全量数值变量进行了分析,这里只放一个指标进行展示,在后文再展开说明):

可以发现在地上房间总数指标中,值越大房子的销售价格整体趋势是越高的。

1 建筑类别
建筑类别指标不同值对应的房屋价格趋势如下:

可以发现不同类别的建筑在房屋价格上的分布有一定的区别,但是整体趋势不是很明显。
2 整体质量
整体质量指标不同值对应的房屋价格趋势如下:

可以发现整体质量级别越高,房屋价格越高,两者之间存在很明显的线性关系,说明这个变量对因变量的影响较大。
3 整体状况评级
整体状况评级指标不同值对应的房屋价格趋势如下:

可以发现整体状况评级排名靠前的房子大体来看价格偏高,但趋势不是特别明显。
4 建造年份
建造年份指标不同值对应的房屋价格趋势如下:

可以发现从1880年到2000年,房子价格呈明显上升的趋势。
5 改造日期
改造日期指标不同值对应的房屋价格趋势如下:

可以发现改造日期从1950年到2010年,房子价格呈上升趋势。
6 销售月份
销售月份指标不同值对应的房屋价格趋势如下:

可以发现不同销售月份房屋价格的变化不是很明显。
7 总面积
总面积(地下室总平方英尺)指标不同值对应的房屋价格趋势如下:

可以发现总面积越大,整体来看房子的销售价格越高。
8 一楼面积
一楼面积(平方英尺)指标不同值对应的房屋价格趋势如下:

可以发现整体来看一楼面积越大,房屋销售价格越高。
9 二楼面积
二楼面积(平方英尺)指标不同值对应的房屋价格趋势如下:

可以发现二楼面积越大,房子销售价格整体来看越大。
10 低质量成品
低质量成本指标不同值对应的房屋价格趋势如下:

可以发现低质量成本指标和房屋销售价格之间没有很明显的关系。
11 居住面积
居住面积(地面生活区平方英尺)指标不同值对应的房屋价格趋势如下:

可以发现整体来看居住面积越大,房屋销售价格越高。
12 地下室全套浴室
地下室全套浴室指标不同值对应的房屋价格趋势如下:

可以发现整体来看地下室全套浴室指标值越大,房屋销售价格越高。
13 地下室半浴室
地下室半浴室指标不同值对应的房屋价格趋势如下:

可以发现地下室半浴室指标值对房屋销售价格影响不大。
14 地上浴室数量
地上浴室数量指标不同值对应的房屋价格趋势如下:

可以发现地上浴室数量越多,房屋整体售价越高。
15 地下室以上的卧室数量
地下室以上的卧室数量指标不同值对应的房屋价格趋势如下:

可以发现地下室以上的卧室数量越多,整体房价越高。
16 厨房数量
厨房数量指标不同值对应的房屋价格趋势如下:

可以发现整体来看厨房数量越多,房屋售价越低。
17 地上房间总数
地上房间总数指标不同值对应的房屋价格趋势如下:

可以发现地上房间总数越多,整体房价越高。
18 壁炉数量
壁炉数量指标不同值对应的房屋价格趋势如下:

可以发现壁炉数量越多,整体房价越高。
19 车库建成年份
车库建成年份指标不同值对应的房屋价格趋势如下:

可以发现车库建成年份越靠后,整体房价越高。
20 车库容量大小
车库容量大小指标不同值对应的房屋价格趋势如下:

可以发现车库容量越大,整体房价越高。
21 车库面积
车库面积指标不同值对应的房屋价格趋势如下:

可以发现车库面积越大,整体房价越高。
22 木制甲板面积
木制甲板面积指标不同值对应的房屋价格趋势如下:

可以发现木制甲板面积越大,整体房价越高。
23 开放式门廊面积
开放式门廊面积指标不同值对应的房屋价格趋势如下:

可以发现开放式门廊面积越大,整体房价越高。
24 封闭式门廊面积
封闭式门廊面积指标不同值对应的房屋价格趋势如下:

可以发现封闭式门廊面积越大,整体来看房价越低。
25 屏幕门廊面积
屏幕门廊面积指标不同值对应的房屋价格趋势如下:

可以发现屏幕门廊面积和房价关系不大。
26 泳池面积
泳池面积指标不同值对应的房屋价格趋势如下:

可以发现泳池面积越大,整体来看房价越高。


至此,数值型的房价影响指标已讲解完毕。后续文章会对类别型的房价影响指标和房价趋势进行预测,敬请期待
。


扫一扫关注我
19967879837
投稿微信号、手机号