Pandas缺失值处理
一、判断缺失值
首先拿到一份数据,以Dataframe提取后,要查看缺失值的情况
import pandas as pd
df = pd.read_csv(xxx)
df.isnull() # 获得TRUE,FALSE的返回值
df.isnull().sum() # 判断缺失的数量
1.1 df.isnull.sum()
常用此接口来快速判断各特征的缺失值情况!
二、处理缺失值
2.1 丢弃缺失值dropna()
- 当特征的缺失值占很大比重时,直接考虑删掉该特征
- 当缺失值不大时,可以考虑丢弃该样本或者填充缺失值,当该样本存在很多缺失值时,考虑丢弃该样本,其余情况进行缺失值填充
df.dropna() | 直接丢掉缺失值,默认丢掉样本,即NA对应的行 |
df.dropna(axis = 1) | 直接丢掉缺失值,丢掉特征,即丢掉NA对应的列 |
df.dropna(thresh=4) | 设置阈值,要求样本至少含有4个非缺失数据,否则会丢弃 |
df.dropna(subset=[‘C’]) | 仅丢掉’C’列存在缺失值的样本,其他列忽视 |
利用sklearn工具填充缺失值
工具:Imputer
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0) #采取该特征下完整数据的平均值来填充NA
imr = imr.fit(df)
imputed_data = imr.transform(df.values)
imputed_data
2.2 填充缺失值
fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
df.fillna(0) | value=0, 即用0来填充缺失值,常用于连续值的填充 |
df.fillna(-1) | value=-1, 即用-1来填充缺失值,常用于类别型特征的填充 |
df.fillna(‘ffill’) | method=‘ffill’,向下填充策略 |
df.fillna(‘bfill’) | method=‘bfill’,向上填充策略 |
df.fillna(df.mean()) | 平均值填充策略 |
df.fillna(df.median()) | 中位数填充策略 |