Python Pandas删除替换并提取其中的缺失值NaN(dropna,fillna,isnull)

  • Post category:Python

Python Pandas删除、替换和提取缺失值NaN的攻略

Pandas是一个Python库,提供了快速、灵活和方便的数据处理工具。其中,处理缺失值NaN是数据处理中必不可少的一部分。本篇攻略将介绍Pandas中删除、替换和提取缺失值NaN的方法。

删除缺失值

dropna()

如果数据集中存在缺失值NaN,我们可以使用 dropna() 方法将其删除。该方法有以下参数:

  • axis:选择要删除的轴,0表示行,1表示列,默认为0;
  • how:选择何时将某些或全部行删除,”any”表示只要有NaN值,就删除该行,”all”表示删除所有值都是NaN的行,默认为”any”;
  • thresh:选择要删除的NaN值的数量,如果一行/列中NaN值的数量达到thresh的数量,那么删除该行/列;
  • subset:选择要删除的具体行/列,可以通过列/行名称选择与之相关的所有行/列。

以下是两个示例:

import pandas as pd
import numpy as np

# 创建一个数据帧
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, np.nan, np.nan], 'C': [7, 8, 9]})

# 删除行中有NaN值的所有行,默认为"any"
df.dropna()

# 删除所有列中的NaN值
df.dropna(axis=1)

# 当一行至少有两个NaN值时,删除该行
df.dropna(thresh=2)

# 在'A'列中,当该列有NaN值时,删除该行
df.dropna(subset=['A'])

替换缺失值

fillna()

我们可以使用 fillna() 方法找到所有NaN值,并将其替换为我们选择的值。该方法有以下参数:

  • value:用于替换NaN值的值;
  • method:如何插值NaN;
    • “ffill”(forward fill): 用前面一个值插补NaN值;
    • “bfill”(backward fill): 用后面一个值替换NaN值;
  • axis:选择要插补NaN值的轴,0表示行,1表示列,默认为0;

以下是两个示例:

import pandas as pd
import numpy as np

# 创建一个数据帧
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, np.nan, np.nan], 'C': [7, 8, 9]})

# 将所有NaN值替换为-999
df.fillna(value=-999)

# 使用前面的值插补NaN
df.fillna(method="ffill")

提取缺失值

我们可以使用 isnull() 方法生成一个由True或False值组成的布尔值数据帧,True表示缺失值NaN,False表示相应的元素存在。如果想进一步提取缺失值,可以在原始数据帧上应用这个布尔值数据帧。以下是一个示例:

import pandas as pd
import numpy as np

# 创建一个数据帧
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, np.nan, np.nan], 'C': [7, 8, 9]})

# 生成一个由True或False值组成的布尔值数据帧
df.isnull()

# 通过布尔值数据帧提取所有含有NaN值的行
df[df.isnull().any(axis=1)]

以上就是Pandas中删除、替换和提取缺失值NaN的方法。通过使用这些方法,我们可以轻松处理数据集中的缺失值。