(六)缺失数据的处理

一:了解NaN:

1: NaN啥也不是:

  • 注意使用一定要导包:from numpy import NaN,nan,NAN
    在这里插入图片描述
    在这里插入图片描述

二:缺失值加载统计:

1:加载数据,不包含缺失值:

在这里插入图片描述

2:缺失值的统计:

案例: 加载泰坦尼克号上的数据,并且统计缺失值。

1:加载测试数据和真实数据:

在这里插入图片描述
2:统计缺失值:
在这里插入图片描述
在这里插入图片描述

# 检测数据集中每一列缺失的的百分比:
def missing_values_table(df):
    # 根据列统计缺失值
    mis_val = df.isnull().sum()
    # 计算缺失值比例
    mis_val_percent = 100 * df.isnull().sum()/len(df)
    # 将缺失值和缺失比例拼接成dataframe,根据列拼接
    mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)
    # 给列重新命名:
    mis_val_table_ren_columns = mis_val_table.rename( columns = {0 : '缺失值', 1 : '占比(%)'})
    # 按照缺失值降序排列,并且把缺失值为0的数据排除
    # 思路: 取出占比这一列不为0的三条数据,根据占比排序,round(1)表示保留一位有效数字
    mis_val_table_ren_columns = mis_val_table_ren_columns[ mis_val_table_ren_columns.iloc[:,1] != 0].sort_values( '占比(%)', ascending=False).round(1)
    return mis_val_table_ren_columns

3:使用Missingno 库对缺失值进行可视化

1: 安装Missingno:
在这里插入图片描述
2: 使用条形图显示缺失值:

import missingno as msno
msno.bar(train)

在这里插入图片描述
3: 缺失值分布图:

msno.matrix(train)

在这里插入图片描述
4:取出100条数据查看:(部分数据查看缺失值)
在这里插入图片描述
5: 查看缺失值之间是否具有相关性:
在这里插入图片描述

三:缺失值的处理:

1: 删除缺失值:

删除缺失值会损失数据,一般不推荐删除数据,当缺失值占比比较低时,可以尝试删除缺失值数据。

1.1: 按行删除:

train_1.dropna(subset=[‘Age’],how=‘any’,inplace=True)
train_1[‘Age’].isnull().sum()

注意删除的是整行数据,subset指定了要删除的字段, how=‘any’,说明Age含有空值的所有行都删除。 inplace指的是不生成新的对象,在原有的tarin_1这个对象上进行修改。
在这里插入图片描述

1.2: 按列删除:

按列删除:当一列包含了很多缺失值的时候(比如超过80%),可以将该列删除,但最好不要删除数据。

train_1.drop([‘Age’], axis = 1).head()

在这里插入图片描述

2: 填充缺失值:

2.1:默认值填充:

在这里插入图片描述

2.2: 统计值填充:

在这里插入图片描述

2.3:时间序列数据用前后值填充,线性插值填充。

1: 加载数据:
在这里插入图片描述
2: 使用上一个值进行填充:

city_day.fillna(method=‘ffill’,inplace=True)

在这里插入图片描述
3: 使用下一个值进行填充:

city_day.fillna(method=‘bfill’,inplace=True)

在这里插入图片描述
4: 线性差值方法填充缺失值:
时间序列数据,数据随着时间的变化可能会较大。 因此,使用bfill和ffill进行插补并不是解决缺失值问题的最优方案。
线性插值法是一种插补缺失值技术,它假定数据点之间存在线性关系,并利用相邻数据点中的非缺失值来计算缺失数据点的值。

在这里插入图片描述

2.4: 算法填充:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奈何碎银没有几两

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值