文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何用Python进行数据清洗

2024-04-02 19:55

关注

这篇文章主要介绍“如何用Python进行数据清洗”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用Python进行数据清洗”文章能帮助大家解决问题。

数据清洗是数据分析的必备环节,在进行分析过程中,会有很多不符合分析要求的数据,例如重复、错误、缺失、异常类数据。

01 重复值处理

数据录入过程、数据整合过程都可能会产生重复数据,直接删除是重复数据处理的主要方法。pandas提供查看、处理重复数据的方法duplicated和drop_duplicates。以如下数据为例:

>sample = pd.DataFrame({'id':[1,1,1,3,4,5],

                       'name':['Bob','Bob','Mark','Miki','Sully','Rose'],

                       'score':[99,99,87,77,77,np.nan],

                       'group':[1,1,1,2,1,2],})

>sample

group  id   name  score

0      1   1    Bob   99.0

1      1   1    Bob   99.0

2      1   1   Mark   87.0

3      2   3   Miki   77.0

4      1   4  Sully   77.0

5      2   5   Rose    NaN

发现重复数据通过duplicated方法完成,如下所示,可以通过该方法查看重复的数据。

>sample[sample.duplicated()]

group  id   name  score

1      1   1    Bob   99.0

需要去重时,可drop_duplicates方法完成:

>sample.drop_duplicates()

group  id   name  score

0      1   1    Bob   99.0

2      1   1   Mark   87.0

3      2   3   Miki   77.0

4      1   4  Sully   77.0

5      2   5   Rose    NaN

drop_duplicates方法还可以按照某列去重,例如去除id列重复的所有记录:

>sample.drop_duplicates('id')

group  id   name  score

0      1   1    Bob   99.0

3      2   3   Miki   77.0

4      1   4  Sully   77.0

5      2   5   Rose    NaN

02 缺失值处理

缺失值是数据清洗中比较常见的问题,缺失值一般由NA表示,在处理缺失值时要遵循一定的原则。

首先,需要根据业务理解处理缺失值,弄清楚缺失值产生的原因是故意缺失还是随机缺失,再通过一些业务经验进行填补。一般来说当缺失值少于20%时,连续变量可以使用均值或中位数填补;分类变量不需要填补,单算一类即可,或者也可以用众数填补分类变量。

当缺失值处于20%-80%之间时,填补方法同上。另外每个有缺失值的变量可以生成一个指示哑变量,参与后续的建模。当缺失值多于80%时,每个有缺失值的变量生成一个指示哑变量,参与后续的建模,不使用原始变量。

在下图中展示了中位数填补缺失值和缺失值指示变量的生成过程。

Pandas提供了fillna方法用于替换缺失值数据,其功能类似于之前的replace方法,例如对于如下数据:

> sample

    group  id   name  score

0    1.0  1.0    Bob   99.0

1    1.0  1.0    Bob    NaN

2    NaN  1.0   Mark   87.0

3    2.0  3.0   Miki   77.0

4    1.0  4.0  Sully   77.0

5    NaN  NaN    NaN    NaN

分步骤进行缺失值的查看和填补如下:

1. 查看缺失情况

在进行数据分析前,一般需要了解数据的缺失情况,在Python中可以构造一个lambda函数来查看缺失值,该lambda函数中,sum(col.isnull())表示当前列有多少缺失,col.size表示当前列总共多少行数据:

>sample.apply(lambda col:sum(col.isnull())/col.size)

group    0.333333

id       0.166667

name     0.166667

score    0.333333

dtype: float64

2. 以指定值填补

pandas数据框提供了fillna方法完成对缺失值的填补,例如对sample表的列score填补缺失值,填补方法为均值:

>sample.score.fillna(sample.score.mean())

0    99.0

1    85.0

2    87.0

3    77.0

4    77.0

5    85.0

Name: score, dtype: float64

当然还可以以分位数等方法进行填补:

>sample.score.fillna(sample.score.median())

0    99.0

1    82.0

2    87.0

3    77.0

4    77.0

5    82.0

Name: score, dtype: float64

3. 缺失值指示变量

pandas数据框对象可以直接调用方法isnull产生缺失值指示变量,例如产生score变量的缺失值指示变量:

>sample.score.isnull()

0    False

1     True

2    False

3    False

4    False

5     True

Name: score, dtype: bool

若想转换为数值0,1型指示变量,可以使用apply方法,int表示将该列替换为int类型。

>sample.score.isnull().apply(int)

0    0

1    1

2    0

3    0

4    0

5    1

Name: score, dtype: int64

关于“如何用Python进行数据清洗”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯