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的方法。通过使用这些方法,我们可以轻松处理数据集中的缺失值。