千家信息网

如何用Python进行数据清洗

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"如何用Python进行数据清洗"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"如何用Python进行数据清洗"文章能帮助大家解决问题。数据清洗
千家信息网最后更新 2026年11月01日如何用Python进行数据清洗

这篇文章主要介绍"如何用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进行数据清洗"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

缺失 数据 方法 变量 指示 处理 清洗 过程 分析 知识 生成 业务 中位数 函数 前列 均值 情况 数据分析 行业 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是第几次科技革命的成果 深圳九邦互联网科技有限公司 为想互联网科技怎么样 期待互联网科技 互联网科技媒体 亿策互联网科技 互联网科技公司需要的职位 湖南诚度互联网科技有限公司 互联网软件和科技 广州市恰铎互联网科技有限公司 互联网行业科技股 恒生互联网科技业指数调整周期 电子商务与互联网科技的关系 雨阳互联网卡科技有限公司 国产互联网科技公司 三亚科技创新互联网基地 互联网领先科技成果宣传视频 平安好医生打造互联网科技医疗 中国主要互联网科技公司 前海云享互联网科技 互联网是第几次科技革命的成果 工业互联网科技新基建 互联网科技与金融科技 苏州互联网科技贷款公司 深圳市运趣互联网科技有限公司 创业天下互联网科技有限公司 互联网为啥属于高科技 银川新华互联网科技学校联系电话 996高科技互联网公司 九思连强互联网电子科技有限公司
0