使用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,便保留这一行
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']])
选择填充缺失值的方法取决于具体的数据和分析的需求。例如,对于时间序列数据,使用前向或后向填充可能更合理;而对于非时间序列数据,使用均值、中位数或众数填充可能更合适。