Pandas||过滤缺失数据||pd.dropna()函数的用法说明

  • Post category:Python

Pandas||过滤缺失数据||pd.dropna()函数的用法说明

在数据分析中,我们常常会遇到一些缺失值,这些缺失值可能是由于数据采集、处理等环节出现错误导致的。如果缺失值不处理,将会对后续分析工作造成影响。为了过滤缺失数据,Pandas提供了dropna函数。

1. dropna() 函数用法说明

dropna() 是一个DataFrame中的函数,它可以删除含有缺失值的行或列。dropna() 的函数原型如下:

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

参数说明:

  • axis:默认为0,表示删除行;为1时表示删除列。
  • how:默认为 any,表示如果任何值为缺失值,则行或列被删除;如果为 all,则只有在所有值都为缺失值时,才删除行或列。
  • thresh:要求非缺失值的最小数量。
  • subset:可以通过列标签或行标签列表来指定应该进行删除的行或列。
  • inplace:默认为 False,表示返回一个新的数据对象;为 True 时,将在原始数据对象上直接进行删除操作。

2. dropna() 函数示例说明

接下来,我将举两个简单的例子来说明dropna() 函数的用法。

示例1:删除缺失值

首先,我们创建一个包含缺失值的DataFrame:

import pandas as pd
import numpy as np

data = {'Name': ['Tom', 'Jane', 'Jack', 'Lisa', 'Mike'],
        'Age': [np.NaN, 26, 24, 23, np.NaN],
        'Gender': ['Male', 'Female', 'Male', np.NaN, 'Male'],
        'Score': [80, 78, np.NaN, 88, 90]}
df = pd.DataFrame(data)

此时,我们可以通过isnull()函数来查看哪些行或列包含缺失值:

print(df.isnull())

输出:

    Name    Age  Gender  Score
0  False   True   False  False
1  False  False   False  False
2  False  False   False   True
3  False  False    True  False
4  False   True   False  False

我们可以使用dropna()函数来删除含有缺失值的行,删除的是行而不是列。

new_df = df.dropna()

其中,new_df是删掉缺失值后的新的数据对象。我们可以使用print() 函数来查看,删去缺失值后的数据对象。

print(new_df)

输出:

   Name   Age  Gender  Score
1  Jane  26.0  Female   78.0

如上所示,只有Jane这一行数据的完整,因此其它含有缺失值的行被删除了。

示例2:删除整列缺失值

与上面相反,我们可以使用dropna()函数来删除一个含有缺失值的整列。

我们修改上面的缺失值数据对象,加入一个完整的列。

data = {'Name': ['Tom', 'Jane', 'Jack', 'Lisa', 'Mike'],
        'Age': [np.NaN, 26, 24, 23, np.NaN],
        'Gender': ['Male', 'Female', 'Male', np.NaN, 'Male'],
        'Score': [80, 78, np.NaN, 88, 90],
        'Class': ['One', 'One', 'Two', 'Two', 'Two']}
df = pd.DataFrame(data)

修改后,数据对象框架如下:

    Name   Age  Gender  Score Class
0    Tom   NaN    Male   80.0   One
1   Jane  26.0  Female   78.0   One
2   Jack  24.0    Male    NaN   Two
3   Lisa  23.0     NaN   88.0   Two
4   Mike   NaN    Male   90.0   Two

可以通过isnull()函数来查看哪些列包含缺失值:

print(df.isnull().sum())

输出:

Name      0
Age       2
Gender    1
Score     1
Class     0
dtype: int64

我们可以使用dropna()函数来删除 Score 列缺失数据。

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

此时,new_df 就是删除Score列缺失数据后新的数据对象。

print(new_df)

输出:

    Name  Class
0    Tom    One
1   Jane    One
2   Jack    Two
3   Lisa    Two
4   Mike    Two

如上所示,Score 列被删除了。

至此,本文就讲解了Pandas中dropna()函数的具体用法,希望对大家的学习有帮助。