对于有缺失的数据通常有2种方法
dropna()函数:丢弃(删除)缺失的数据
fillna()函数:对缺失数据进行填补
dropn()函数语法如下:
df.dropna(axis = 0,how = 'any',inplace = False)
df:DataFrame数据对象
axis:值为 0 删除包含删除值的行,值为 1 删除包含删除值的列
how:值为 'any' 表示存在缺失值就删除该行或该列,值为 ‘all’ 表示该行或该列均为缺失值时才删除该行或该列
inplace:默认为False,值为True在原数据上执行删除操作并返回None
dropna()使用方法;
import pandas as pd
df = pd.DataFrame({'lenget':[5.0,np.nan,4.9,np.nan],'lenget1':[4.8,np.nan,np.nan,np.nan],'lenget2':[np.nan,np.nan,np.nan,np.nan]})
print('原数据:\n',df)
print('删除有缺失数据的行:\n',df.dropna())
print('删除全部为缺失数据的行:\n',df.dropna(how = 'all'))
print('删除全部为缺失数据的列:\n',df.dropna(axis = 1,how = 'all'))
运行结果:
原数据:
lenget lenget1 lenget2
0 5.0 4.8 NaN
1 NaN NaN NaN
2 4.9 NaN NaN
3 NaN NaN NaN
删除有缺失数据的行:#所有行都有缺失值,所以返回结果为空的DataFrame
Empty DataFrame
Columns: [lenget, lenget1, lenget2]
Index: []
删除全部为缺失数据的行:
lenget lenget1 lenget2
0 5.0 4.8 NaN
2 4.9 NaN NaN
删除全部为缺失数据的列:
lenget lenget1
0 5.0 4.8
1 NaN NaN
2 4.9 NaN
3 NaN NaN
fillna()函数语法如下:
df.DataFrame(value = None,method = None,axis = None,inplace = False,limis = None)
df:DataFrame数据对象
value:用于填充缺失值的值
method:填充方向,值为['backfill','bfil','pad','ffill',None]。['backfill','bfil']:表示向后填充,['pad','ffill']:表示向前填充
axis:值为 0 删除包含删除值的行,值为 1 删除包含删除值的列
inplace:默认为False,值为True在原数据上执行删除操作并返回None
limis:值为整数,如果指定了method,表示连续缺失值向前或向后填充的最多的次数
fillna()使用方法;
import pandas as pd
df = pd.DataFrame({'lenget':[5.0,np.nan,4.9,np.nan],'lenget1':[4.8,np.nan,np.nan,np.nan],'lenget2':['test','test','test','test'],'lenget3':[np.nan,np.nan,np.nan,np.nan]})
print('原数据:\n',df)
print('填补缺失值:\n',df.fillna('缺失值'))
print('向前填充:\n',df.fillna(method = 'ffill'))
print('向后填充:\n',df.fillna(method = 'backfill'))
运行结果:
原数据:
lenget lenget1 lenget2 lenget3
0 5.0 4.8 test NaN
1 NaN NaN test NaN
2 4.9 NaN test NaN
3 NaN NaN test NaN
填补缺失值:
lenget lenget1 lenget2 lenget3
0 5.0 4.8 test 缺失值
1 缺失值 缺失值 test 缺失值
2 4.9 缺失值 test 缺失值
3 缺失值 缺失值 test 缺失值
向前填充:
lenget lenget1 lenget2 lenget3
0 5.0 4.8 test NaN
1 5.0 4.8 test NaN
2 4.9 4.8 test NaN
3 4.9 4.8 test NaN
向后填充:
lenget lenget1 lenget2 lenget3
0 5.0 4.8 test NaN
1 4.9 NaN test NaN
2 4.9 NaN test NaN
3 NaN NaN test NaN #向下没有数据,所以没有填充