Python进阶分享 | 从统计和数据角度出发,如何看待房价?

目录

一、排名榜

二、数据介绍

三、数据EDA

导入库

导入数据

数据信息

四、销售价格SalePrice分析

统计信息

偏度和峰度(skewness and kurtosis)

SalePrice和数值型字段的关系

价格和分类型字段的关系

小结

五、相关性分析

整体相关性

缩放相关矩阵(销售价格saleprice)

小结1

变量离散图

小结2

六、缺失值处理

缺失值占比

删除缺失值

七、离群点out liars

查找离群点

小结3

单变量分析1

删除离群点

单变量分析2

八、深入理解SalePrice

Normality归一化(SalePrice)

Normality-归一化(GrLivArea)

Normality-归一化(TotalBsmtSF)

九、同方差性

十、生成哑变量

十一、总结


大家好,我是吒吒

在本文中你将会学习到:

  • 单、多变量分析

  • 相关性分析

  • 缺失值和异常值处理

  • 哑变量转换

一、排名榜

让我们看下排名榜,第一名真的是碾压其他选手呀~所以,今天我们一起看看这个第一名的方案到底是多棒?

二、数据介绍

这份波士顿房价的数据集有4份数据,训练集train+测试集test+数据集的描述description+提交模板sample

其中训练集有81个特征,1460条数据;测试集81个特征,1459条数据。看下部分属性介绍:

三、数据EDA

导入模块和数据,并进行数据探索:

导入库

import pandas as pd
import numpy as np
# 绘图相关
import plotly.express as px
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use("fivethirtyeight")

# 数据建模
from scipy.stats import norm
from scipy import stats
from sklearn.preprocessing import StandardScaler

# 警告
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline

导入数据

数据信息

训练集整体是1460*81;而且很多的存在字段都存在缺失值

描述统计信息:

四、销售价格SalePrice分析

原notebook文档中,作者分析了很多自己关于这个题目和字段的看法,具体不阐述。下面介绍的是重点部分:

统计信息

单单看这个字段的统计信息:

分布直方图如下,我们明显感受到:

  • 价格的分布偏离了正态分布

  • 有明显的正偏度现象

  • 有明显的峰值出现

偏度和峰度(skewness and kurtosis)

知识加油站:偏度和峰度

详细的解释参见文章:https://zhuanlan.zhihu.com/p/53184516

  • 偏度:衡量随机变脸概率分布的不对称性,是相对于平均值不对称程度的度量,通过对偏度系数的测量,我们能够判定数据分布的不对称程度以及方向。

  • 峰度:是研究数据分布陡峭或者平滑的统计量,通过对峰度系数的测量,我们能够判定数据相对于正态分布而言是更陡峭还是更平缓。峰度接近0,数据呈现正态分布;峰度>0,高尖分布;峰度<0,矮胖分布

偏度的两种分布情况:

  • 如果是左偏,则偏度小于0

  • 如果是右偏,则偏度大于0

峰度的两种分布情况:

  • 如果是高瘦型,则峰度大于0

  • 如果是矮胖型,则峰度小于0

# 打印销售价格的偏度和峰度

print("Skewness(偏度): %f" % train['SalePrice'].skew())
print("Kurtosis(峰度): %f" % train['SalePrice'].kurt())

Skewness(偏度): 1.882876
Kurtosis(峰度): 6.536282

偏度和峰度值都是正的,明显说明数据是右偏且高尖分布

SalePrice和数值型字段的关系

首先我们考察和居住面积的关系:

plt.figure(1,figsize=(12,6))
sns.scatterplot(x="GrLivArea",y="SalePrice",data=data)
plt.show()

# plotly版本
px.scatter(data,x="GrLivArea",y="SalePrice",trendline="ols")

TotalBsmtSF VS SalePrice

# 2、TotalBsmtSF 
data = train[["SalePrice","TotalBsmtSF"]]

plt.figure(1,
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值