当前位置: 首页 > news >正文

新手村:数据预处理-缺失值补充策略

新手村:数据预处理-缺失值补充策略

在这里插入图片描述

缺失值补充策略

策略描述适用场景优点缺点
删除含有缺失值的行或列删除包含任何缺失值的行或列。当缺失值比例较小且数据量较大时。简单直接,不会引入新的误差。可能导致数据丢失,特别是在缺失值较多的情况下。
用固定值填充使用一个特定值(如0、均值、中位数等)来填充缺失值。数据分布较为均匀,缺失值不是特别多时简单易行,适用于大多数情况。如果选择的固定值不合适,可能会引入偏差。
用插值法填充对于有序数据,使用插值法(如线性插值)来估计缺失值。时间序列数据或其他有序数据。能较好地保留数据的趋势和模式。对于非有序数据效果不佳。
用模型预测填充使用机器学习模型(如KNN、随机森林等)预测并填充缺失值。复杂数据集,缺失值较多且有较强的相关性时能够更准确地填充缺失值,特别是当数据之间存在复杂关系时。实现复杂,计算成本较高,需要更多的计算资源和时间。

示例代码与解释

删除含有缺失值的行或列
import pandas as pd
import numpy as np

# 创建一个示例数据集
data = {
    'A': [1, 2, np.nan, 4, 5],
    'B': [np.nan, 2, 3, 4, 5],
    'C': [1, np.nan, np.nan, 4, 5]
}

df = pd.DataFrame(data)

# 删除含有缺失值的行
df_dropped_rows = df.dropna()
print("删除含有缺失值的行后的数据:")
print(df_dropped_rows)

# 删除含有缺失值的列
df_dropped_columns = df.dropna(axis=1)
print("\n删除含有缺失值的列后的数据:")
print(df_dropped_columns)

在这里插入图片描述

用固定值填充
# 用均值填充缺失值
df_filled_mean = df.fillna(df.mean())
print("\n用均值填充缺失值后的数据:")
print(df_filled_mean)

# 用中位数填充缺失值
df_filled_median = df.fillna(df.median())
print("\n用中位数填充缺失值后的数据:")
print(df_filled_median)

# 用固定值(如0)填充缺失值
df_filled_zero = df.fillna(0)
print("\n用0填充缺失值后的数据:")
print(df_filled_zero)

在这里插入图片描述

用插值法填充
# 用线性插值法填充缺失值
df_interpolated = df.interpolate()
#df_interpolated = df.interpolate(axis=1)
print("\n用线性插值法填充缺失值后的数据:")
print(df_interpolated)

在这里插入图片描述

用模型预测填充
from sklearn.impute import KNNImputer

# 使用KNN算法进行缺失值填充
imputer = KNNImputer(n_neighbors=2)
df_imputed = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)
print("\n用KNN算法填充缺失值后的数据:")
print(df_imputed)

在这里插入图片描述

总结

通过上述表格和示例代码,您可以更好地理解不同的缺失值补充策略及其应用场景。每种方法都有其特定的优点和局限性,选择合适的方法取决于数据的具体特性和分析需求:

  • 删除含有缺失值的行或列:适用于缺失值较少的情况,简单但可能导致数据丢失。
  • 用固定值填充:适用于大多数情况,但需谨慎选择填充值以避免引入偏差。
  • 用插值法填充:适用于有序数据,能较好地保留趋势。
  • 用模型预测填充:适用于复杂数据集,但实现复杂且计算成本较高

相关文章:

  • 电商商品系统的演进分析
  • 第36周:文献阅读
  • 计算机四级 - 数据库原理 - 第4章 「关系数据库标准语言SQL」
  • deepseek GRPO算法保姆级讲解(数学原理+源码解析+案例实战)
  • FPGA学习(二)——实现LED流水灯
  • Python游戏开发自学指南:从入门到实践(第四天)
  • Python 基础知识整理笔记
  • Spring 事务失效的 8 种场景!
  • mac intel芯片下载安卓模拟器
  • 怎么解决在Mac上每次打开文件夹都会弹出一个新窗口的问题
  • 设计模式(行为型)-备忘录模式
  • C++初阶——类和对象(三) 构造函数、析构函数
  • 开源新星DeepSearcher:用AI重新定义“搜索”的边界
  • 【004】deepseek本地化部署后,python的调用方式_#py
  • Leetcode2272:最大波动的子字符串
  • Java多线程入门
  • 基于牛优化( OX Optimizer,OX)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
  • aws(学习笔记第三十三课) 深入使用cdk 练习aws athena
  • A* floyd算法 bellman-ford
  • 使用傅里叶变换测量声卡的频率失真
  • 网站布局 种类/腾讯会议价格
  • 什么网站百度收录快/广州网站营销seo费用
  • wordpress 抄袭查询/朝阳网站seo
  • 网站首页banner大小/安卓优化神器
  • 开网站建设/淘宝网店代运营正规公司
  • 万网网站建设方案书/济宁网站建设