机器学习特征工程:缺失值精准定位的方法总结

大家好,本文记录的是一个知识点:如何锁定Pandas中缺失值所在的行,介绍5个方法。

数据

import pandas as pd  
import numpy as np  
df = pd.DataFrame({  
    "A":list(range(1,11)),  
    "B":list(range(11,21)),  
    "C":list(range(21,31)),  
    "D":list(range(31,41))  
})  
  
df  

在这里插入图片描述

设置空值

df.iloc[2,0] = np.nan  
df.iloc[3,1] = np.nan  
df.iloc[3,2] = np.nan  
df.iloc[5,2] = np.nan  
df.iloc[9,1] = np.nan  
  
df  

统计空值个数

# 统计每列下空值的个数  
df.isnull().sum()  
A    1  
B    2  
C    2  
D    0  
dtype: int64  

技术提升

文中详细代码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

方式①、添加微信号:dkl88191,备注:来自CSDN
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

确定空值所在行

方法1

# 1、每个位置是否为空  
  
df.isnull()  

在这里插入图片描述

# 2、转置供能  
  
df.isnull().T  

在这里插入图片描述

# 3、any表示至少有一个空值  
  
df.isnull().T.any()  
0    False  
1    False  
2     True  
3     True  
4    False  
5     True  
6    False  
7    False  
8    False  
9     True  
dtype: bool  
# 4、确定空值的行  
  
df[df.isnull().T.any()]  

在这里插入图片描述

方法2

df1 = df.isnull()  
df1  

在这里插入图片描述

新生成一个列E,是前面4个列的求和。求和的时候只要出现一个True,则为True

df1["E"] = df1["A"] + df1["B"] + df1["C"] + df1["D"]  
  
df1  

在这里插入图片描述

# 把df1["E"]列传进来  
  
df[df1["E"]]  

在这里插入图片描述

方法3

df.isnull().values==True  
array([[False, False, False, False],  
       [False, False, False, False],  
       [ True, False, False, False],  
       [False,  True,  True, False],  
       [False, False, False, False],  
       [False, False,  True, False],  
       [False, False, False, False],  
       [False, False, False, False],  
       [False, False, False, False],  
       [False,  True, False, False]])  
df[df.isnull().values==True]  

在这里插入图片描述

可以看到结果中出现了重复的行,这个因为第4行中有2个缺失值,需要去重:

# 删除重复值  
df[df.isnull().values==True].drop_duplicates()  

在这里插入图片描述

方法4

# 每个位置判断【不是空值-notnull】  
pd.notnull(df)  

在这里插入图片描述

df[~pd.notnull(df).all(axis=1)]  # 执行取反操作  

在这里插入图片描述

# notnull 和 notna 等效  
df[~pd.notna(df).all(axis=1)]  

在这里插入图片描述

方法5

# 统计每个位置是否为空  
  
df.isnull()  

在这里插入图片描述

# 按照行统计:只要存在一个空值即为True  
  
(df.isnull()).any(axis=1)  
0    False  
1    False  
2     True  
3     True  
4    False  
5     True  
6    False  
7    False  
8    False  
9     True  
dtype: bool  
df[(df.isnull()).any(axis=1)]  

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值