📅  最后修改于: 2023-12-03 14:53:00.018000             🧑  作者: Mango
在处理数据时,经常会遇到数据集中存在缺失值的情况。缺失值会对数据的分析和应用造成不良影响,因此需要对其进行处理。
本文将介绍几种常用的处理缺失值的方法,并使用 Python 代码实现。
最简单的方法是直接将含有缺失值的行或列删除。这种方法适用于缺失值较少且对结果影响不大的情况。
删除行的方式有两种:
df.dropna(axis=0, inplace=True) # 删除含有缺失值的行
df = df.dropna(axis=0) # 含有缺失值的行被删除后,重新赋值给 df
删除列的方式有两种:
df.dropna(axis=1, inplace=True) # 删除含有缺失值的列
df = df.dropna(axis=1) # 含有缺失值的列被删除后,重新赋值给 df
对于缺失值较少且对结果影响较大的情况,可以对缺失值进行填充。
填充方式有多种,常用的方式是使用均值、中位数、众数或上一个/下一个非缺失值进行填充。
使用均值、中位数、众数进行填充:
# 使用均值/中位数/众数填充整个数据集的缺失值
df.fillna(df.mean(), inplace=True) # 使用均值填充所有缺失值,inplace=True 表示修改原始数据
df.fillna(df.median(), inplace=True) # 使用中位数填充所有缺失值
df.fillna(df.mode().iloc[0], inplace=True) # 使用众数填充所有缺失值,通过 .iloc[0] 获取众数值
使用上一个/下一个非缺失值进行填充:
df.fillna(method='ffill', inplace=True) # 使用上一个非缺失值填充缺失值,inplace=True 表示修改原始数据
df.fillna(method='bfill', inplace=True) # 使用下一个非缺失值填充缺失值
对于连续型数据,可以对缺失值进行插值。
插值方式有多种,如线性插值、样条插值、多项式插值等。这里以线性插值为例:
df.interpolate(method='linear', inplace=True) # 使用线性插值填充缺失值,inplace=True 表示修改原始数据
以上便是处理数据集中缺失值的方法和代码,根据具体情况选择相应的处理方式即可。