Pandas如何快速定位数据集中的缺失值?

568 阅读2分钟

「这是我参与2022首次更文挑战的第5天,活动详情查看:2022首次更文挑战」。

大家好,我是丁小杰。
相信大家处理数据时,都会先观察数据的结构和缺失值的情况,今天就和大家分享几种快速查看数据集行列缺失值的方法,如果没记住的话,建议收藏备用。

isnull() & sum() 统计法

isnull()sum() 方法搭配使用能够定位行列间的缺失值。看几个例子。

先创建一个示例 DataFrame

>>> import pandas as pd
>>> df = pd.DataFrame(
        {'a': [1, 2, 3, None],
         'b': [3, 4, None, None],
         'c': [None, 6, 7, 8]})
>>> df
     a    b    c
0  1.0  3.0  NaN
1  2.0  NaN  6.0
2  3.0  NaN  7.0
3  NaN  6.0  8.0

1.输出 DataFrame 所有缺失值数量。

>>> df.isnull().sum().sum()
4

2.分别输出每一列的缺失值数量。

>>> df.isnull().sum()
a    1
b    2
c    1
dtype: int64

3.分别输出每一行的缺失值数量。

>>> df.isnull().sum(axis=1)
0    1
1    0
2    1
3    2
dtype: int64

4.输出指定列缺失值数量

>>> df['b'].isnull().sum()
2

5.输出指定行缺失值数量

>>> df.iloc[3].isnull().sum()
2

shape + count() 统计法

  • shape:DataFrame 的形状。(行数, 列数)。
  • count():对非缺失值进行计数。

1.输出 DataFrame 所有缺失值数量。

>>> (df.shape[0] - df.count()).sum()
4

2.分别输出每一列的缺失值数量。

>>> df.shape[0] - df.count()
a    1
b    2
c    1
dtype: int64

3.分别输出每一行的缺失值数量。

>>> df.shape[1] - df.count(axis=1)
0    1
1    0
2    1
3    2
dtype: int64

4.输出指定列缺失值数量

>>> df.shape[0] - df['b'].count()
2

5.输出指定行缺失值数量

>>> df.shape[1] - df.iloc[3].count()
2

定位缺失值位置

通过下面的方式可以快速定位缺失值的行列信息。

for col in df.columns:
    if df[col].count() != len(df):
        row = df[df[col].isnull().values==True].index[0]
        print(f'第{row}行,第{col}列为缺失值')
'''
第3行,第a列为缺失值
第2行,第b列为缺失值
第0行,第c列为缺失值

这就是今天要分享的内容,建议不要死记硬背,一步步的测试验证才能够真正的融会贯通。


对于刚入门 Python 或是想要入门 Python 的小伙伴,可以通过关注公众号“Python新视野”,一起交流学习,都是从新手走过来的,有时候一个简单的问题卡很久,但可能别人的一点拨就会恍然大悟,由衷的希望大家能够共同进步。另有整理的近千套简历模板,几百册电子书等你来领取哦!