📜  删除 na 数据框 - Python (1)

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

删除 NA 数据框 - Python

在数据分析过程中,我们常常会遇到缺失值 (NA) 的问题。而在 Python 中,我们可以使用 Pandas 库来处理数据框中的缺失值。其中,一种处理方法是将含有 NA 的行/列从数据框中删除,以保留数据分析的准确性。

删除 NA 行/列
删除 NA 行

我们可以使用 dropna() 方法来删除含有 NA 的行。例如,我们有一个如下所示的数据框:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, None, 5],
    'B': [6, 7, None, 9, None],
    'C': [None, 11, 12, 13, 14]
})

| | A | B | C | |---:|----:|----:|----:| | 0 | 1 | 6 | NaN | | 1 | 2 | 7 | 11 | | 2 | 3 | NaN | 12 | | 3 | NaN | 9 | 13 | | 4 | 5 | NaN | 14 |

我们可以使用以下代码删除含有 NA 的行:

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

其中,axis=0 表示删除行,inplace=True 表示在原始数据框上修改。删除后的数据框如下所示:

| | A | B | C | |---:|---:|---:|----:| | 1 | 2 | 7 | 11 |

删除 NA 列

我们可以使用 dropna() 方法来删除含有 NA 的列。例如,我们有一个如下所示的数据框:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, None, 5],
    'B': [6, 7, None, 9, None],
    'C': [None, 11, 12, 13, 14]
})

| | A | B | C | |---:|----:|----:|----:| | 0 | 1 | 6 | NaN | | 1 | 2 | 7 | 11 | | 2 | 3 | NaN | 12 | | 3 | NaN | 9 | 13 | | 4 | 5 | NaN | 14 |

我们可以使用以下代码删除含有 NA 的列:

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

其中,axis=1 表示删除列,inplace=True 表示在原始数据框上修改。删除后的数据框如下所示:

| | A | |---:|----:| | 0 | 1 | | 1 | 2 | | 2 | 3 | | 3 | NaN | | 4 | 5 |

删除特定列含有 NA 的行

如果我们只想删除某些特定列含有 NA 的行,可以使用 subset 参数来实现。例如,我们有一个如下所示的数据框:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, None, 5],
    'B': [6, 7, None, 9, None],
    'C': [None, 11, 12, 13, 14]
})

| | A | B | C | |---:|----:|----:|----:| | 0 | 1 | 6 | NaN | | 1 | 2 | 7 | 11 | | 2 | 3 | NaN | 12 | | 3 | NaN | 9 | 13 | | 4 | 5 | NaN | 14 |

我们可以使用以下代码删除含有 NA 的行:

df.dropna(subset=['B'], axis=0, inplace=True)

其中,subset=['B'] 表示只考虑 'B' 这一列,axis=0 表示删除行,inplace=True 表示在原始数据框上修改。删除后的数据框如下所示:

| | A | B | C | |---:|---:|----:|----:| | 0 | 1 | 6 | NaN | | 1 | 2 | 7 | 11 | | 3 | nan| 9 | 13 |

完整代码

完整代码如下所示:

import pandas as pd

# 删除 NA 行
df = pd.DataFrame({
    'A': [1, 2, 3, None, 5],
    'B': [6, 7, None, 9, None],
    'C': [None, 11, 12, 13, 14]
})
df.dropna(axis=0, inplace=True)

# 删除 NA 列
df = pd.DataFrame({
    'A': [1, 2, 3, None, 5],
    'B': [6, 7, None, 9, None],
    'C': [None, 11, 12, 13, 14]
})
df.dropna(axis=1, inplace=True)

# 删除特定列含有 NA 的行
df = pd.DataFrame({
    'A': [1, 2, 3, None, 5],
    'B': [6, 7, None, 9, None],
    'C': [None, 11, 12, 13, 14]
})
df.dropna(subset=['B'], axis=0, inplace=True)

以上代码可以根据实际需要进行修改。