Python Pandas 处理缺失值

当我们拿到一份原始数据,首先会查看数据的基础信息,例如每一列数量统计,内存消耗、哪些列有缺失值等。完整的数据对于我们的数据分析工作来说意义重大,但对于实际收集数据的人却不是,所以我们经常会遇到数据缺失的情况。

重要的字段数据的缺失会影响进行数据分析后得出的结论,故不能随意舍弃这些字段。因此,数据预处理中非常重要的一项工作就是处理缺失值。

本文例子使用的是泰坦尼克号数据集,首先预览一下数据集的整体情况:

从data.info()函数可以查看到数据的基础信息:

Age样本量为714,正常样本量应为891,有少部分数据缺失;Cabin字段的样本量为204,缺失了绝大部分数据;Embarked字段的样本量为889,缺失2行数据;其他字段无缺失,样本量均为891。

一、填充缺失值

下面将使用Age字段来做例子讲解填充缺失值具体方法:

1、使用常数0填充缺失值

data['Age']=data['Age'].fillna(0)

2、使用均值填充缺失值

data['Age']=data['Age'].fillna(data['Age'].mean)

3、使用中值填充缺失值

data['Age']=data['Age'].fillna(data['Age'].median)

4、使用众数填充缺失值

data['Age']=data['Age'].fillna(data['Age'].mode()[0])

mode()返回的是data['Age']中的众数,若有两个或以上的众数,将取第一个众数作为返回的值,所以fillna中填写为data['Age'].mode()[0]

二、删除缺失值

除了填充缺失值外,还有的一种处理方法就是删除缺失值。这种方法比较适合在数据样本大的情况下使用,在数据量足够大的情况,删除少量样本对后续的数据分析影响较小;但在数据样本量不足的情况,每一条记录都会对后续结果产生重要影响,这时我们更倾向于补充缺失值而不是删除缺失值样本。

1、删除缺失值所在的列

泰坦尼克号数据集中,Cabin字段缺失了687条数据,缺失比重过大,因此在这里我们将弃用这一特征,删除Cabin这一列样本数据。

data.drop(['Cabin'],axis=1,inplace=True)

运行结果:

处理后查看前五行数据,Cabin字段这一列已被删除。

2、删除缺失值所在的行

泰坦尼克号数据集中,Embarked字段的样本量为889,缺失2行数据,缺失数量少。这种情况我们可以采用删除缺失值所在行的方式处理缺失值。

data.dropna(axis=0,inplace=True)
# dropna(axis=0)删除所有有缺失值的行,dropna(axis=1)删除所有有缺失值的列
# 参数inplace,为True表示在原数据集上进行修改,为False表示生成一个复制对象,不修改原数据,默认False

运行结果:

查看数据集基础信息发现,原始行数从891行删除了2行缺失值的样本后,样本总数变为889行了。到此为止该数据集的全部缺失值均已处理完成。

以上就是Python Pandas 处理缺失值的全部内容,欢迎大家学习和分享。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第八课:案例分析 - 泰坦尼克数据 本节课将重点分析泰坦尼克号沉船事故,我们将探索是什么因素决定了最后是否生还。我...
    Lochaiching阅读 3,063评论 0 11
  • 探索数据集-泰坦尼克号数据 一、读取数据 import pandas as pdimport numpy as n...
    杨小彤阅读 849评论 0 1
  • 这个项目是kaggle上的练手项目,实践方面是参考于csdn上一位大佬的总结,自己对其进行了实现和理解,主要是为了...
    怀柔小龙虾阅读 1,929评论 1 2
  • 奥修,这个在一年以后成为了我的上师并令我追随他十五年的人,毫无预兆地从未来走进了我的生命之中。其间我能够看到,一些...
    嬌艳玲瓏阅读 460评论 0 0
  • 从来都不会想到,我自己居然会得白癜风 这个可怕的难治愈的“病” 去医院看过后,心情极度低落,怎么会这样 自17年3...
    亲亲小尤儿阅读 289评论 0 0