📅  最后修改于: 2023-12-03 15:22:42.822000             🧑  作者: Mango
在数据分析过程中,我们会经常遇到数据中存在 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 提供了许多灵活的函数来处理缺失值。在数据分析过程中,我们需要灵活运用这些函数来处理不同的情况。