在这里记录一些在学习,比赛中用到的 EDA 方法,当作备忘录吧…
1 缺失值
有些缺失值不是 nan,还可能是 -1, inf, ‘-’ 等特殊数字字符
对于 object
首先通过 Train_data.info()
查看有哪些 object
对特定的列 Train_data[col].value_counts()
查看值分布
若出现 ‘-’ 等特殊字符就看作缺失值,可先设置为 nan 或 ‘nan’ 好处理
Train_data[col].replace('-', np.nan, inplace=True)
然后绘图好观察缺失值分布情况
Train_missing = Train_data.isnull().sum()
Train_missing = Train_missing[Train_missing>0]
Train_missing.sort_values(inplace=True)
Train_missing.plot.bar()
测试集也做一遍
2 数据分布失衡
可以通过绘图查看数据的分布情况
对于取值很少,且分布严重失衡的进行删除
plt.figure(figsize=(15, 9))
cols = 6
rows = len(Train_data.columns)//cols+1
i = 1
for col in Train_data.columns:
plt.subplot(rows, cols, i)
sns.distplot(Train_data[col])
i += 1
plt.tight_layout()
3 标签分布
做回归问题时,观察 label 的分布情况,要满足正态分布
sns.distplot(Train_data['price'])
然后使用对数变换,注意有没有 0,考虑加 1
Train_data['price'] = np.log(Train_data['price'])