当我们在处理数据时,常常会遇到一些空值或缺失值的情况,而在Python Pandas中,缺失值一般表示为NaN。本文将详细讲解在Python Pandas中如何判断、删除和替换缺失值NaN。
判断缺失值
在Python Pandas中,我们可以使用isnull()和notnull()两个函数来判断缺失值。isnull()函数返回一个与原数据相同形状的布尔值对象,其中缺失值对应的位置为True,非缺失值对应的位置为False。notnull()函数则是isnull()函数的逆运算,返回一个与原数据相同形状的布尔值对象,其中非缺失值对应的位置为True,缺失值对应的位置为False。下面给出一个示例:
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randn(5, 4), columns=['a', 'b', 'c', 'd'])
data.iloc[1][1] = np.nan
data.iloc[2][3] = np.nan
print(data.isnull())
print(data.notnull())
运行以上代码,输出结果如下所示:
a b c d
0 False False False False
1 False True False False
2 False False False True
3 False False False False
4 False False False False
a b c d
0 True True True True
1 True False True True
2 True True True False
3 True True True True
4 True True True True
上述示例中,通过isnull()函数和notnull()函数分别判断缺失值和非缺失值。
删除缺失值
一般情况下,我们可以通过dropna()函数来删除缺失值,该函数的语法格式为:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
其中,各参数的含义如下:
- axis:删除缺失值的轴,0表示删除行,1表示删除列,默认为0。
- how:控制删除的方式,any表示只要有缺失值就删除该行或列,all表示只有全部为缺失值才删除该行或列,默认为any。
- thresh:控制每行或每列缺失值的个数,如果该行或该列缺失值的个数大于等于thresh,则保留,否则删除。
- subset:指定需要判断缺失值的列。
- inplace:是否在原数据上进行修改。
下面给出一个示例:
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randn(5, 4), columns=['a', 'b', 'c', 'd'])
data.iloc[1][1] = np.nan
data.iloc[2][3] = np.nan
print(data.dropna())
上述示例中,我们通过dropna()函数删除包含缺失值的行,然后输出结果。运行以上代码,输出结果如下所示:
a b c d
0 -0.381394 -0.086755 0.360118 1.011548
3 -0.225572 1.024518 -0.286820 0.899173
4 0.138556 -0.245785 -0.573426 0.167627
替换缺失值
在Python Pandas中,我们可以使用fillna()函数来替换缺失值,该函数的语法格式为:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
其中,各参数的含义如下:
- value:需要替换的值。可以是标量值、字典、Serise、或者DataFrame。若是字典,则用于指定每一列的缺失值进行替换。
- method:控制填充方式。默认为None,表示直接替换缺失值;后面还有ffill、bfill等选项。
- axis:需要填充的轴,0表示填充行,1表示填充列。
- inplace:是否在原数据上进行修改。
- limit:进行填充时的最大填充数。
- downcast:当满足条件时,可以对数据类型进行缩小。比如float64可以缩小到float32。
下面给出一个示例:
import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randn(5, 4), columns=['a', 'b', 'c', 'd'])
data.iloc[1][1] = np.nan
data.iloc[2][3] = np.nan
data.fillna(value=0, inplace=True)
print(data)
上述示例中,我们通过fillna()函数将缺失值替换成数值0,并在原数据上进行修改。运行以上代码,输出结果如下所示:
a b c d
0 -0.766557 0.460510 -1.345328 0.881857
1 1.281181 0.000000 -0.017178 0.693526
2 0.062681 -1.662775 0.191712 0.000000
3 0.100770 1.410193 -0.036825 -0.479593
4 -0.210373 0.191761 -1.578361 -0.134261
上述示例中,我们通过fillna()函数将缺失值替换成了数值0。
以上就是Python Pandas中缺失值NaN的判断、删除和替换的详细攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python Pandas中缺失值NaN的判断,删除及替换 - Python技术站