📜  删除具有 nan 值的列 - Python (1)

📅  最后修改于: 2023-12-03 15:22:42.822000             🧑  作者: Mango

删除具有 nan 值的列 - Python

在数据分析过程中,我们会经常遇到数据中存在 nan 值(缺失值)的情况。这些 nan 值往往会对我们的分析产生影响,因此有时我们需要将这些含有 nan 值的列从数据集中删除。在 Python 中,我们可以使用 Pandas 库来实现这个功能。

首先,我们需要导入 Pandas 库,并创建一个包含 nan 值的数据集:

import pandas as pd
import numpy as np

data = {'A': [1, 2, 3, np.nan],
        'B': [4, np.nan, 6, 7],
        'C': [8, 9, 10, 11]}
df = pd.DataFrame(data)
df

输出结果如下:

     A    B   C
0  1.0  4.0   8
1  2.0  NaN   9
2  3.0  6.0  10
3  NaN  7.0  11

现在,我们将删除含有 nan 值的列。我们可以使用 dropna() 函数来删除所有含有 nan 值的行或列,其中 axis 参数用来指定删除行或列。如果 axis=0,则删除行;如果 axis=1,则删除列。在我们这个例子中,我们希望删除含有 nan 值的列,因此我们需要设置 axis=1

df.dropna(axis=1, inplace=True)
df

输出结果如下:

    C
0   8
1   9
2  10
3  11

现在我们可以看到,原数据集中含有 nan 值的列 A 和 B 已经被删除了,只剩下了不含有 nan 值的列 C。

需要注意的是,在修改原数据集时,我们需要设置 inplace=True,否则会返回一个副本数据集而不是修改原数据集。

除了使用 dropna() 函数,我们还可以使用其他方法来删除含有 nan 值的列,如使用 isna() 函数检查是否含有 nan 值,然后使用 loc[] 函数来选定需要删除的列,最后使用 drop() 函数删除这些列。如下所示:

df.loc[:, df.isna().sum() == 0]

输出结果与上面的方法一致:

    C
0   8
1   9
2  10
3  11

上述就是删除具有 nan 值的列的两种方法。这些方法也同样适用于删除含有 nan 值的行。Pandas 提供了许多灵活的函数来处理缺失值。在数据分析过程中,我们需要灵活运用这些函数来处理不同的情况。