d381cf8918f98b52ab50ab70ac556129.gif

作者 | 朱小五

来源 | 快学Python

查找到了缺失值,下一步便是对这些缺失值进行处理,今天同样会分享多个方法!

删除-dropna

第一种处理缺失值的方法就是删除dropna()方法的参数如下所示。

df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

参数说明:

  • axis:选择删除行还是列,axis=0(默认)表示操作行,axis=1表示操作列。

  • how:与参数axis配合使用,可选的值为any(默认)或者all。

  • thresh:axis中至少有N个非缺失值,否则删除。

  • subset:参数类型为列表,表示删除时只考虑的索引或列名。

  • inplace:是否在原数据上操作。

在交互式环境中输入如下命令:

df.dropna(axis=0)

输出:

c4f17e15ae9a824828fddbd3cabf0eae.png

how参数中,any表示一行/列有任意元素为空时即丢弃,all表示一行/列所有值都为空时才丢弃。在上一行代码中,未设置how参数,则默认为any。

df.dropna(axis=0,how='all')

输出:

29af570decd3792f4fae3adbc3422934.png

thresh参数中,比如thresh=3,如果该行中非缺失值的数量小于3,将删除该行。

df.dropna(axis=0, how="any", thresh=3)

输出:

1be82c0a997cb1f363094d966946533a.png

只考虑"C列", "D列",在交互式环境中输入如下命令:

df.dropna(axis=0, how="any", subset=["C列", "D列"])

输出:

2b88fed70dfc72225b624973b3ad1df2.png

填充-fillna

除了使用dropna()方法直接粗暴地删除缺失值,还可以使用fillna()填充缺失值。其参数如下所示。

df.fillna(value=None, method=None, axis=None, inplace=False, limit=None)

参数说明:

  • value:表示填充的值,可以是一个指定值,也可以是字典。

  • method: 填充的方式,默认为None。

  • axis:与method参数搭配使用,axis=0表示按行,axis=1表示按列。

  • inplace:是否在原数据上操作。

  • limit:表示填充执行的次数。如果是按行填充,则填充一行表示执行一次,按列同理。

在交互式环境中输入如下命令:

df.fillna(value=0)

输出:

cf390e5de79991e860d613aedc4384d8.png

在参数method中,ffill(或pad)代表用缺失值的前一个值填充;backfill(或bfill)代表用缺失值的后一个值填充。由于axis默认为0,所以这里的前后值即为上/下一行的值,如果想要使用左右值来填充,则设置axis=1

df.fillna(axis=0, method="ffill")

输出:

68f4f60a55957942483f6a175e1213a9.png

参数limit表示填充执行的次数,这里我们赋值为1,则代表仅按行填充1次。

df.fillna(axis=0, method="ffill", limit=1)

输出:

b1b577d8dae661fb5c4456a60eb1bc90.png

此外,还有一些不太常用的方法。比如除了通过fillna方法来填充缺失值外,还可以通过interpolate方法来填充。默认情况下使用线性差值,可以设置method参数来改变方式。

也可以通过字符串的replace()方法来替换缺失值。本来这部分想作为第三种方法介绍,写完发现有点“听君一席话,好似庄周带净化”,干脆作为小贴士吧。

ae9302fcf81d8134d9dca28725e07b40.gif

CSDN音视频技术开发者在线调研正式上线!

现邀开发者们扫码在线调研

5e791487c9abdd8b215a894e91d43759.png

d7506b822a02b8656cd6f65887002e1a.png

往期回顾

Gain 算法实现缺失值预测

破解程序员的5大迷思,《新程序员004》上市!

M2芯片重磅问世,性能提升18%!

AI考生挑战高考作文,平均1秒1篇

分享
点收藏
点点赞
点在看
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐