探索性数据分析(EDA)
文章目录
什么叫探索性数据分析
探索性数据分析(Exploratory Data Analysis,简称EDA),摘抄网上的一个中文解释,是指对已有的数据(特别是调查或观察得来的原始数据)在尽量少的先验假定下进行探索,通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。当我们面对各种杂乱的“脏数据”时,往往不知所措,不知道从哪里开始了解目前拿到手上的数据时候,探索性数据分析就非常有效。分析完的数据可以用于接下来的机器学习或者深度学习,相当于在直接运用前对数据进行清洗。
探索性分析的步骤
- 形成假设,确定主题去探索
- 清理数据,处理脏数据
- 评价数据质量,可以对不同质量的数据作权重处理
- 数据报表
- 探索分析每个变量
- 探索每个自变量与因变量之间的关系
- 探索每个自变量之间的相关性
- 从不同的维度来分析数据
实战案例
Datawhale 零基础入门数据挖掘(二手车交易价格预测)
- 语言:Python
- import库:数据科学库:pandas、numpy、scipy
- 可视化库:matplotlib、seabon
简略浏览数据
通过pandas中的read_csv函数导入Train和Test两个数据集后,通过Train_data.head().append(Train_data.tail())
简略观察数据可以看到
通过Train_data.shape
可以得到训练集中有150000条数据,共31种。通过Train_data.describe()
统计相关数据:
数据分析
观察统计数据我们可以看出model有一个空值(count是非空值总数);bodyType、fuelType、gearbox存在5000到9000左右的空值,看下图也能看出空值分布较为随机(msno.matrix(Train_data.sample(10000))
取一万个样本观察缺省值)。鉴于这几个数据都是类型数据,除gearbox只有0和1外,其他两个不好做取平均处理,matrix并且可能对价格产生较大影响,先不做处理,具体处理选定模型后分析。
数据中的power也就是汽车功率的范围是[ 0, 600 ],但由上表可以看出power中最大值为19312,处于75%的值又为150,可以看出存在一部分(25%一下)不合理数据,可以对>600的数据做抹去处理或者取正常部分的平均值处理。
kilometer也就是汽车行驶里程的数据可以看到50%以上都是15万km,不合常理,可以做权重较低的处理。
price中最大价格为99999,显然也是不正常数据,需要进行处理。
观察上面统计表可以发现里面没有notRepairedDamage这一列信息,用Train_data.info()
可以看出只有这一列是object类型,我们可以用Train_data['notRepairedDamage'].value_counts()
显示他的几个不同的值:
0.0 111361
- 24324
1.0 14315
Name: notRepairedDamage, dtype: int64
可以看出-是他的缺省值,是空缺数据最多的,暂时让其为空。
再查一下上表中没有的seller和offerType两列数据可以得出