1. 删除缺失值
-
使用
dropna
函数来删除空值,具体用法如下# 函数用法 df.dropna( axis=0, how='any', inplace=True, subset=['列名',...], thresh=10 ) df.drop() # 按列删除
-
dropna
函数参数解释-
axis=0
-
可选参数 ,默认为0按行删
-
0, or 'index':删除包含缺失值的行
-
1, or 'columns':删除包含缺失值的列
-
-
how='any'
-
可选参数,默认为any
-
any: 如果存在NA值,则删除该行或列
-
all: 如果所有值都是NA,则删除该行或列
-
-
inplace=False
-
可选参数,不建议使用这个参数
-
默认False, 不对原数据集进行修改
-
inplce=True,对原数据集进行修改
-
-
subset接收一个列表
-
接收一个列表,列表中的元素为列名: 对特定的列进行缺失值删除处理
-
-
thresh=n
-
可选参数
-
参数值为int类型,按行去除NaN值,去除NaN值后该行剩余数值的数量(列数)大于等于n,便保留这一行
-
-
2.缺失值替换
-
Pandas 的
fillna
方法:- 常数填充:用指定的常数填充缺失值。
df['column'].fillna(value, inplace=True)
- 前向填充:用前一个有效值填充缺失值。
df['column'].fillna(method='ffill', inplace=True)
- 后向填充:用后一个有效值填充缺失值。
df['column'].fillna(method='bfill', inplace=True)
- 使用均值、中位数或众数填充:
df['column'].fillna(df['column'].mean(), inplace=True) # 均值 df['column'].fillna(df['column'].median(), inplace=True) # 中位数 df['column'].fillna(df['column'].mode()[0], inplace=True) # 众数
- 常数填充:用指定的常数填充缺失值。
-
Pandas 的
interpolate
方法:- 线性插值填充缺失值。
df['column'].interpolate(method='linear', inplace=True)
- 线性插值填充缺失值。
-
Scikit-learn 的
SimpleImputer
:- 使用均值、中位数或众数填充:
from sklearn.impute import SimpleImputer imputer = SimpleImputer(strategy='mean') # 或者 'median', 'most_frequent' df['column'] = imputer.fit_transform(df[['column']])
- 使用均值、中位数或众数填充:
选择填充缺失值的方法取决于具体的数据和分析的需求。例如,对于时间序列数据,使用前向或后向填充可能更合理;而对于非时间序列数据,使用均值、中位数或众数填充可能更合适。