关键词

Pandas之Dropna滤除缺失数据的实现方法

一、Dropna的基本用法

Pandas中的dropna函数是用来滤除缺失数据的。具体如何实现呢?让我们首先来看一下dropna函数的基本用法。

函数定义:

DataFrame.dropna(
    axis=0,       # 行或列
    how='any',    # 如果遇到缺失数据对应的行或列是any或all的话将会被滤除
    thresh=None,  # 非空数据点数的阈值,取值范围为 [0,无穷大]
    subset=None,  # 包含探测缺失值的列名的 list
    inplace=False # 是否直接操作原数据集而不返回副本
)

参数解释:

  • axis(整数,默认0): 是否执行按行或列的范畴操作,axis=0按行操作,axis=1按列操作。

  • how(字符串,默认'any'): 如果遇到缺失数据对应的行或列是 any 或 all 的话将会被滤除。'any'指的是只要有一个缺失数据就删除该行或列;'all'则是只有当行或列中的数据全部为缺失数据时才删除该行或列。

  • thresh(整数,默认 None): 非空数据点数的阈值。如果某行或列中非空数据点数小于 thresh ,则认为它是一个缺失数据行或列,将该行或列滤除。

  • subset(由列名称组成的数组,默认 None): 如果指定了 subset 参数,那么 Pandas 会根据 subset 参数指定的列名来执行滤除缺失数据的操作。

  • inplace(布尔型,默认 False): 是否在原数据集的基础上直接执行操作,直接更改原来的数据,inplace=True。

下面通过一些示例说明dropna的实现方式。

使用dropna函数前,需要先导入pandas库,并构造一个数据集:

import pandas as pd

df = pd.DataFrame([['Tom', 174, 68.5], ['Jerry', 168, None], [None,None,None], ['Mary', 159, 54.5]],
                  columns=['Name', 'Height', 'Weight'])
print(df)

输出结果:

    Name  Height  Weight
0    Tom   174.0    68.5
1  Jerry   168.0     NaN
2   None     NaN     NaN
3   Mary   159.0    54.5

接着,执行dropna函数:

df = df.dropna()
print(df)

输出结果:

   Name  Height  Weight
0   Tom   174.0    68.5
3  Mary   159.0    54.5

可以看到,与原数据相比,缺失的行被滤除了。

二、指定操作按行或按列进行

dropna函数中的axis参数用于指定按行或按列操作。默认值为0,表示按行处理。下面,我们来看一下如何使用dropna函数来指定操作按列进行。

通过示例介绍,如何使用dropna函数指定按列进行处理:

import pandas as pd

df = pd.DataFrame([['Tom', 174, 68.5], ['Jerry', 168, None], [None,None,None], ['Mary', 159, 54.5]],
                  columns=['Name', 'Height', 'Weight'])
print(df)

df = df.dropna(axis=1)
print(df)

输出结果为:

   Height
0   174.0
1   168.0
2     NaN
3   159.0

由于这次指定了按列进行处理,所以滤除后的数据只剩下'Height'一列,其他列全部被滤除。

三、总结

一个数据集中如果有一些缺失的数据,那么它会影响到数据的处理与分析。因此,在数据处理和数据分析过程中,我们通常需要去掉这些缺失的数据。而dropna函数就是一个常用的滤除缺失数据的函数,其效率高、功能强大,使用方便。

关于dropna函数的详情,可以查看官方文档:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html。

本文链接:http://task.lmcjl.com/news/17373.html

展开阅读全文