特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)

一、引言

在数据挖掘过程中我们会发现由于各种原因都会存在缺少信息,数据不完整。产生的原因多种多样,主要分为机械原因和人为原因。

二、集中趋势

(1)众数:出现次数最多的变量值(M0);不易受极端值的影响,一个数据集可能没有众数或者有几个众数,用于定序数据和数值型数据。

(2)中位数:排序后处于中间位置上的1值用Me表示;不易受极端值的影响;主要用于定序数据也可用于数值型数据但不能用于定类数据。

计算公式:

特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)_第1张图片

 (3)平均数:一组数相加后除以数据的个数而得到的,也称均值;集中趋势最常用的测度值;易受极端值影响。

计算公式:

特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)_第2张图片

 三、集中趋势的关系:

特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)_第3张图片

 四、缺失值的显示方法

方法一:info()查看

print(data.info())

结果;

特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)_第4张图片

 从图上我们就可以看到有缺失,总共50882条数据,8、9、10分别有39191、30631、30631条数据非空。

方法二:缺失值矩阵图:图中白色的地方就是存在缺失值的地方,从图中可以看出Cabin字段存在大量的数据缺失。

import matplotlib.pyplot as plt
import missingno as mnso
mnso.matrix(data)
plt.show()

 结果;

特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)_第5张图片

明显可以看出来:

'Health Indicator', 'Holding_Policy_Duration','Holding_Policy_Type'存在缺失值,我们可以再利用缺失值条形图可以直观看到每一列数据的个数和缺失值的个数。

方法三:缺失值条形图

mnso.bar(data)
plt.show()

结果:

特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)_第6张图片

清晰可见。

五、缺失值处理办法 

(一)、可以选择删除一行;若数据缺少特别多可以选择删除这一列特征。但是如果删除之后,数据剩余一半那还是不要选择删除。

data1=data.dropna(how='any')  #默认为any,删除只要有缺失值所在的整行

  (二)、还可以用零进行填充:

data2=data.fillna(0)  #用0替换所有缺失值

(三)、前后进行填充

data3=data.fillna(method='pad')  #用前一个数据代替缺失值
data4=data.fillna(method='bfill') #用后一个数据代替缺失值

(四)、集中趋势进行填充(众数、中位数、平均数)

1.均值填充
data['Health Indicator']=data['Health Indicator'].fillna(round(data['Health Indicator'].mean()))
2.中位数填充
data['Holding_Policy_Duration']=data['Holding_Policy_Duration'].fillna(data['Holding_Policy_Duration'].median())
3.众数填充
data['Holding_Policy_Type']=data['Holding_Policy_Type'].fillna(data['Holding_Policy_Type'].mode()[0])

   (五)、验证

特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)_第7张图片

欧克啦

目录

一、引言

二、集中趋势

 三、集中趋势的关系:

 四、缺失值的显示方法

五、缺失值处理办法 

你可能感兴趣的:(数据挖掘,数据分析,数据挖掘)