python数据处理----处理缺失值(一)

本文介绍了缺失值的基本概念,如何在Pandas中处理NaN,包括数据中缺失值的来源、检测方法,以及使用Missingno库进行可视化展示。通过实例演示了如何在实际数据集中发现并分析缺失值,帮助读者掌握数据预处理的重要步骤。
摘要由CSDN通过智能技术生成

何为缺失值?

缺失值介绍

  • 很多的数据集中因为数据量过大,并不是每一条数据都有完整的字段,缺失值字面意思就是某一条数据中有为空的字段,为空的字段就为缺失值。

  • 在pandas中缺失值用NaN表示

  • pandas中的NaN来自于Numpy库,Numpy中的缺失值有NaN、NAN和nan,三个值都是一样的。

  • 缺失值和别的类型不同,毫无意义,NaN不为0,也不是空字符串,NaN也不等于NaN。
    在这里插入图片描述

判断是否是缺失值

  • isnull是缺失值时为True,否则为False
  • notnull与isnull相反

在这里插入图片描述


缺失值是怎么出现的?

  • 原始数据中本来就包含缺失值

  • 数据整理的过程中出现的缺失值

默认读取数据时是加载出缺失值的

在这里插入图片描述

添加参数keep_default_na=False,读取数据时默认不加载缺失值

pd.read_csv('data/survey_visited.csv',keep_default_na=False)

在这里插入图片描述

读取数据时手动指定缺失值

# 指定?为缺失值
pd.read_csv('data/survey_visited.csv',na_values['?'],keep_default_na=False)

在这里插入图片描述


缺失值可视化

自定义函数展示缺失值数据:

# 读取数据
train=pd.read_csv('data/titanic_train.csv')
def missing_values_table(df):
    # 数据集内每一列缺失值的数量总和
    mis_val = df.isnull().sum()
    # 算出每列缺失值的占比
    mis_val_percent  = 100 * mis_val / len(df)
    # 连接为新的DataFrame对象
    mis_val_table = pd.concat([mis_val,mis_val_percent],axis=1)
    # 占比 保留两位小数
    mis_val_table[1] = round(mis_val_table[1],2)
    # 按缺失值数量降序排序
    mis_val_table = mis_val_table[mis_val_table[0] != 0].sort_values(by=0,ascending=False)
    # 修改列名为中文
    mis_val_table_ren_columns = mis_val_table.rename(columns={0:'缺失值数量',1:'缺失值占比(%)'})
    # 打印信息
    print ("传入的数据集中共 " + str(df.shape[1]) + " 列.\n其中 " + str(mis_val_table_ren_columns.shape[0]) +"列包含缺失值")
    # 返回缺失值数据的新的DataFrame
    return mis_val_table_ren_columns

missing_values_table(train)

在这里插入图片描述

使用Missingno库对缺失值进行可视化展示

使用missingno库画出缺失值柱状图bar(数据集)方法:

import missingno as msno
print(train.shape)

msno.bar(train)

在这里插入图片描述

空白为缺失值:

matrix(数据集)方法

msno.matrix(train)

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值