Pandas学习笔记四——Pandas处理缺失值

Pandas处理缺失值

如何发现缺失值

#Pandas数据结构有两种方法可以有效的发现缺失值
#isnull()方法
import pandas as pd
import numpy as np
df = pd.DataFrame([[1,  np.nan, 2],
                    [2,  3,      5],
                    [np.nan, 4, 6]])
df.isnull()

#输出结果:
       0      1      2
0  False   True  False
1  False  False  False
2   True  False  False
#False表示该位上数值不为NaN,相反,True表示该位上数值为NaN

剔除缺失值

#剔除缺失值时,我们没法从DataFrame中单独剔除一个值,要么是剔除缺失值所在的整行,要么是整列。可以通过axis值来指定需要含有剔除缺失值的行或列,默认情况下,dropna()会剔除任何包含缺失值的整行数据。
df.dropna(axis='rows')

#输出结果:
     0    1  2
1  2.0  3.0  5

#指定删除包含确实值的列
df.dropna(axis='columns')

#输出结果:
   2
0  2
1  5
2  6
#上面的做法会把非缺失值一并删除,因为可能有时候只需要剔除全部是缺失值的行或列,或者绝大多数是缺失值的行或列。这些需求可以通过设置how或thresh参数来满足,他们可以设置剔除行或列缺失值的数量阀值。
#只删除所有值都缺失的列
df.dropna(axis='columns', how='all')

#输出结果:结果显示没有删除某列,因为所有列都至少包含一个非空数值
     0    1  2
0  1.0  NaN  2
1  2.0  3.0  5
2  NaN  4.0  6

#通过thresh参数设置行或列中非缺失值的最小数量,从而实现更加个性化的配置
df.dropna(axis='rows', thresh=3)

#输出结果:因为设置了行中非空数值的最小个数为3,所有最终只有第1行被保留下来了
     0    1  2
1  2.0  3.0  5

填充缺失值

#填充缺失值可以使用fillna()实现,我们可以指定用于填充缺失值的数值。
#使用单独的值来填充缺失值,例如0
df.fillna(0)
#使用缺失值后面的有效值来从后往前填充,对于DataFrame来说,需要指定axis,未指定情况下按照rows方向填充
df.fillna(method='bfill',axis='columns')
#使用缺失值前面的有效值来从前往后填充,对于DataFrame来说,需要指定axis
df.fillna(method='ffill',axis='rows')

#结果分别如下:
Out[19]: 
     0    1  2
0  1.0  0.0  2
1  2.0  3.0  5
2  0.0  4.0  6

Out[22]: 
     0    1    2
0  1.0  2.0  2.0
1  2.0  3.0  5.0
2  4.0  4.0  6.0

Out[23]: 
     0    1  2
0  1.0  NaN  2
1  2.0  3.0  5
2  2.0  4.0  6
#需要注意的是,假如从前往后填充,需要填充的缺失值前面没有值,那么它仍然是缺失值

猜你喜欢

转载自blog.csdn.net/jasonzhoujx/article/details/81634834