引入
在实际的项目中,当缺失数据比较多的情况下,可以直接滤除;而当缺失数据比较少时,需要对数据进行填充。
栗子
import numpy as np
from numpy import nan
import pandas as pd
data=pd.DataFrame(np.arange(3,19,1).reshape(4,4),index=list('abcd'))
print(data)
data.iloc[0:2,0:3]=nan
print(data)
0 1 2 3
a NaN NaN NaN 6
b NaN NaN NaN 10
c 11.0 12.0 13.0 14
d 15.0 16.0 17.0 18
print(data.fillna(0)) ### 用0填充缺失数据
结果为:
0 1 2 3
a 0.0 0.0 0.0 6
b 0.0 0.0 0.0 10
c 11.0 12.0 13.0 14
d 15.0 16.0 17.0 18
其他填充操作:
print(data.fillna(data.mean())) # 用每列特征的均值填充缺失数据
print(data.fillna(data.median())) # 用每列特征的中位数填充缺失数据
print(data.fillna(method='bfill')) # 用相邻后面(back)特征填充前面空值
values={0:10,1:20,2:30}
print(data.fillna(value=values)) # 用字典对不同的列填充不同的缺失数据
...
拓展: pandas 处理缺失值[dropna、drop、fillna]
dropna: 去掉含有缺失值的样本(行)
drop:将含有缺失值的列(特征向量)去掉
fillna:将缺失值用某些值填充(0,平均值,中值等)
相关优秀博客:
[1]. Python 数据清洗之缺失数据填充fillna
[2]. pandas 处理缺失值[dropna、drop、fillna]