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

4.1 缺失值处理

本章学习目标理解什么是缺失值、为什么会出现学会发现和量化缺失值掌握4种核心处理方法删除、均值/中位数填充、众数填充、前向/后向填充建立决策原则什么时候用什么方法不需要记住代码只需要知道“有什么方法、什么时候用、怎么告诉AI”一、什么是缺失值1.1 缺失值的定义缺失值简单说就是“该有数据的地方没有数据”。在表格中缺失值通常表现为表现形式你看到的样子说明标准空值NaN、null、None程序能识别的标准缺失标记占位符-、?、N/A、unknown、/人为用某个符号表示缺失空字符串什么都没有看起来是空但类型是文本特殊数字0、999、-999用特殊数字代表“缺失”或“未知”重要认知缺失值不一定是“空的”。有时候0、-1、999等特殊值也可能是缺失值的伪装。1.2 一个直观的例子看下面这张“用户信息表”user_idnameagecityphone1张三28北京138****00002李四NaN上海139****11113王五35-空4赵六NaNNaN137****22225NULL42广州NULL表格中有多处缺失位置缺失表现解读第2行ageNaN标准缺失 —— 没记录年龄第3行city-占位符 —— 可能是“不详”的替代符号第3行phone空字符串文本类型的空值第4行age和cityNaN多条缺失第5行name和phoneNULL数据库导出的标准缺失二、为什么会出现缺失值理解缺失值产生的原因能帮助你判断“该怎么处理它”。2.1 三类主要原因原因类型具体场景举例处理思路数据采集问题系统故障、传感器失灵、人工录入遗漏温度传感器某天坏了没记录到数据需要填充或推断数据本身不存在某些字段对部分对象不适用未婚人士的“配偶姓名”为空可以保留缺失或填充“无”数据清洗/合并问题多表合并时没匹配上、格式转换出错用户表和订单表按user_id合并某些用户没订单 → 订单信息为空检查合并逻辑2.2 从业务角度理解缺失以二手车数据集为例分析每个字段缺失的可能原因字段缺失比例可能的原因性质判断model极少极少数车型没记录随机缺失bodyType3.3%部分车辆车身类型未知信息缺失fuelType6%部分车辆燃油类型不详信息缺失gearbox4%部分车辆变速箱类型未记录信息缺失notRepairedDamage20%可能“是否提供检测报告”本身取决于某种条件非随机缺失 ⚠️关键洞察notRepairedDamage缺失比例高达20%而且“是否填写这项”可能与车况本身有关车况好的车主更愿意填写—— 这种缺失不是随机的处理时需要特别小心。2.3 缺失的三种模式进阶概念模式英文含义举例完全随机缺失MCAR缺失与任何数据无关传感器随机故障随机缺失MAR缺失与其他列有关与本列无关男性用户更不愿意填“化妆品偏好”非随机缺失MNAR缺失与本列的值本身有关高收入人群更不愿意填“收入”对你的意义大多数情况下不需要严格区分这三种模式。但要知道缺失比例越高、越可能与关键业务相关处理时要越谨慎。如果“是否缺少年收入”与“年收入本身的水平”有关富人更不愿意填那么简单地用均值填充会严重偏低估测值。三、怎么发现缺失值数据体检环节已经学过相关工具这里快速回顾3.1 体检工具汇总工具作用怎么告诉AIinfo()看每列的非空数量反推缺失数量“用info查看哪些列有缺失、缺了多少”isnull().sum()精确统计每列缺失数量“统计每列的缺失值数量”isnull().mean()计算每列缺失比例“计算每列缺失值的占比”isnull().sum().sort_values(ascendingFalse)按缺失数量排序“哪些列缺失最多按缺失数量排序”3.2 常用体检需求你想知道什么怎么告诉AI整体缺失情况“检查整个数据集的缺失值情况”缺失最多的列“找出缺失比例最高的3列”某列的缺失情况“查看年龄列有多少缺失值”行级别的缺失“找出所有存在缺失值的行”四、缺失值处理方法总览有两大类、六种常见方法缺失值处理 ├── 方法一删除 → 直接去掉缺失的行或列 │ ├── 删除整行na.omit / dropna │ └── 删除整列如果缺失太多 │ └── 方法二填充 → 用一个值替代缺失 ├── 均值填充适合正态分布数值 ├── 中位数填充适合偏态数值或有异常值 ├── 众数填充适合分类变量 ├── 前向/后向填充适合时间序列 └── 模型预测填充适合重要列复杂度高本小节重点讲解删除和三种基础填充均值、中位数、众数、前向填充。模型预测填充属于进阶内容可以参考附录。五、方法一删除Deletion5.1 什么时候用删除场景是否适合理由缺失比例极少 3%✅ 推荐删除几行不影响整体分布缺失比例中等3%-10%⚠️ 谨慎删除可能丢失信息需评估缺失比例很高 30%⚠️ 考虑删列填充可能引入偏差删列是备选该列对分析不重要✅ 可以直接删留着没意义不如删掉该列缺失不随机 避免删除删除会引入选择偏差5.2 删除的两种方式方式做法适用场景删除行去掉包含缺失值的那些行缺失比例小数据量大删除列去掉某整列缺失比例太高 50%或者该列不重要5.3 实际决策案例二手车数据集列名缺失比例删除决策理由model0.0007%✅ 删除行只有1条缺失直接删掉这1行notRepairedDamage20%❌ 不删列该列对价格预测可能有价值20%缺失但可用填充offerType全部相同值✅ 删除列不是缺失问题是无信息量问题bodyType3.3%❌ 删行 or 填充可选——删掉缺失的行5000条或填充5.4 删除的风险警告删除缺失行意味着你放弃了那些数据。如果缺失不是随机发生的删除会导致分析结果有偏。例子在用户满意度调查中不满意的人更不愿意填写收入。如果你删除了收入缺失的行剩下的大多是满意的人——然后你得出结论“用户普遍满意” —— 这是偏差。六、方法二填充Imputation6.1 均值填充Mean Imputation它是什么用该列的平均值填充缺失值。什么时候用条件说明数据近似正态分布均值能代表“典型值”没有极端异常值极端值会拉偏均值数值型变量年龄、价格、分数例子某班级数学成绩有几个缺考学生用全班平均分85分填充学生原成绩填充后张三9090李四NaN85填充王五8080平均分8585优缺点优点缺点实现简单计算快会缩小方差填充值都在均值附近保持整体均值不变会削弱相关性填充值与其他列的相关性变弱——数据不是正态分布时效果差6.2 中位数填充Median Imputation它是什么用该列的中位数填充缺失值。什么时候用条件说明数据右偏或左偏有极端值中位数比均值更稳健有异常值存在均值会被极端值拉偏数值型变量收入、房价、里程例子小区房价300万、320万、350万、360万、5000万豪宅。中位数350万更能代表“典型房价”。房产原价均值填充中位数填充普通住宅A300300300普通住宅B320320320普通住宅C350350350普通住宅D360360360豪宅500050005000缺失房产NaN1266均值350中位数均值1266万的填充值实际上是“被豪宅拉高的”并不能代表普通房价。中位数350万更合理。优缺点优点缺点抗异常值比均值稳健同样会缩小方差适合偏态分布同样会削弱相关性比均值更接近“典型值”——6.3 众数填充Mode Imputation它是什么用该列出现次数最多的值填充缺失值。什么时候用条件说明分类变量性别、城市、车型、燃油类型有序分类变量可酌情教育程度小学/初中/高中/大学某类别占绝对优势90%的用户都是“自动挡”例子二手车变速箱类型变速箱类型出现次数占比自动挡80,00080%手动挡20,00020%缺失的变速箱类型用众数“自动挡”填充因为自动挡占绝大多数。优缺点优点缺点实现简单会放大众数比例适合高众数占比的分类变量若众数占比不高如55% vs 45%填充会引入明显偏差业务上常合理填最常见的——6.4 前向/后向填充Forward/Backward Fill它是什么用前一行前向或后一行后向的值填充缺失——利用数据的时间顺序。什么时候用条件说明时间序列数据股价、气温、销售数据数据有自然顺序相邻时间点的值通常接近缺失是连续的几个点连续缺失也可以逐次填充例子某股票每日收盘价日期原股价前向填充说明周一100100正常周二NaN100用周一的值填充周三NaN100沿用周二的填充值100周四105105恢复正常周五102102正常优缺点优点缺点保持时间趋势必须有顺序时间排序比均值/中位数合理时间序列场景缺失太长时会“把过去的值拖太久”简单直接不适合没有顺序关系的数据七、决策原则到底该用哪一种7.1 决策流程图拿到缺失值 │ ▼ 缺失比例多少 │ ├── 3% ──────────────────→ 删除行 │ ├── 3% - 30% │ │ │ ▼ │ 列是什么类型 │ │ │ ├── 数值型正态分布 ─→ 均值填充 │ ├── 数值型偏态或有异常值 ─→ 中位数填充 │ ├── 分类变量 ─→ 众数填充 │ └── 时间序列 ─→ 前向/后向填充 │ └── 50% ────────────────→ 考虑是否删除整列7.2 快速决策表数据类型分布特征缺失比例推荐方法数值型正态分布 30%均值填充数值型偏态或有异常值 30%中位数填充分类变量有主导类别60% 30%众数填充分类变量类别均衡50% vs 50% 30%新增“未知”类别时间序列有顺序关系连续少量缺失前向/后向填充任意类型 3%任意删除行任意类型 50%——考虑删除列7.3 二手车数据集填充决策示例列名类型缺失比例推荐方法理由model分类0.0007%删除行太少直接删bodyType分类3.3%众数填充车身类型有限找最常见的fuelType分类6%众数填充燃油类型有限找最常见的gearbox分类4%众数填充自动挡最常见notRepairedDamage分类20%众数或新增“未知”0无损伤最常见也可单独设为“未知”类power数值偏态0%异常值处理缺失问题是异常值问题kilometer数值可能偏态0%异常值处理缺失问题八、实战场景速查场景问题推荐方法怎么告诉AI用户表年龄缺了2%缺失很少删除行“年龄列缺失很少删除缺失的行”员工表薪资缺了15%薪资分布右偏高薪少中位数填充“用薪资的中位数填充缺失值”产品表分类缺了10%分类有主导类别众数填充“用商品类别的众数填充缺失值”用户表收入缺了25%收入分布偏态有离群高管中位数填充“收入列用中位数填充”股票数据连续3天缺失时间序列前向填充“用前一天的股价填充缺失值”二手车表变速器类型缺5%自动挡占80%众数填充“变速器类型用众数填充”某列缺失60%缺太多删除整列“这一列缺失超过50%删除整列”九、本章总结核心知识点回顾什么是缺失值该有数据的地方是空的表现形式有NaN、-、空字符串等为什么缺失采集问题、数据本身不存在、合并问题怎么发现info()、isnull().sum()处理方法删除缺失极少时用均值填充数值型、正态分布中位数填充数值型、偏态或有异常值众数填充分类变量前向填充时间序列决策原则看缺失比例 数据类型 分布形态决策速查卡场景方法缺失极少❤️%删除行数值-正态均值填充数值-偏态/有异常值中位数填充分类变量众数填充时间序列前向填充缺失50%删除整列核心心法“没有最好的填充方法只有最合适的方法。选择取决于缺失比例 数据类型 数据分布 业务含义。”十、思考题某电商平台的“用户收入”列缺失比例为25%。你认为高收入用户和不填写收入的相关性可能是什么如果简单用均值填充可能产生什么偏差你在处理一个“房屋价格预测”数据集。bedrooms卧室数量列缺失了5%。你会用均值、中位数还是众数填充为什么一个酒店预订数据中“儿童数量”列缺失40%但大多数预订都没有儿童。你决定用0填充。理由是什么有没有更好的方案股票价格数据中某只股票连续5个交易日数据缺失。用前向填充合理吗如果这5天里发生了重大利空/利好消息填充还是合理的吗二手车数据集的notRepairedDamage是否有未修复损伤缺失20%。你怀疑“车辆状况好的车主更不愿意花时间填这项”。如果直接删除缺失的行会有什么后果下一节预告4.2 重复值与异常值处理 —— 除了缺失数据还有“重复的 记录”和“离谱的数值”。如何发现它们删除修正还是保留

相关文章:

4.1 缺失值处理

本章学习目标: 理解什么是缺失值、为什么会出现学会发现和量化缺失值掌握4种核心处理方法:删除、均值/中位数填充、众数填充、前向/后向填充建立决策原则:什么时候用什么方法不需要记住代码,只需要知道“有什么方法、什么时候用、…...

Substance Painter入门:从模型到贴图的核心工作流解析

1. Substance Painter入门指南:从零开始掌握PBR材质创作 第一次打开Substance Painter时,很多人都会被它复杂的界面吓到。作为一个从Maya转战材质制作的老鸟,我完全理解这种感受。但别担心,只要掌握几个核心概念,你就…...

深入Linux网络栈:当虚拟机网络中断时,如何像侦探一样解读‘transmit queue timed out‘内核警告

深入Linux网络栈:当虚拟机网络中断时,如何像侦探一样解读transmit queue timed out内核警告 在虚拟化环境中,网络中断往往是最令人头疼的问题之一。当虚拟机突然失去网络连接,而宿主机的物理网卡却显示一切正常时,问题…...

告别混乱搜索:一文搞懂Quartus前仿真的两种玩法(Modelsim调用 vs VWF内嵌)

Quartus前仿真实战指南:Modelsim与VWF的高效选择策略 从Verilog到可靠仿真的关键跨越 当你完成了一段Verilog代码的编写,那种成就感往往伴随着一个迫切的需求:如何快速验证这段代码的行为是否符合预期?在Quartus开发环境中&#x…...

如何快速提取B站CC字幕:面向新手的完整工具指南

如何快速提取B站CC字幕:面向新手的完整工具指南 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾经为了获取B站视频的字幕而烦恼?想…...

Anaconda 安装与配置 的所有核心步骤

下载:去官网或靠谱的镜像源(如清华镜像)下载 2025.06版 Windows x64 安装包(约950MB)。安装:运行 .exe 文件。关键选项1:勾选 Add Anaconda to my PATH (添加到环境变量)…...

NBTExplorer深度指南:掌握Minecraft数据编辑的完整解决方案

NBTExplorer深度指南:掌握Minecraft数据编辑的完整解决方案 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer NBTExplorer是一款专为Minecraft游戏数据设…...

TI C2000 DSP入门新姿势:Simulink硬件支持包安装与CCS v10.1.0联调实战记录

TI C2000 DSP开发环境搭建:从Simulink支持包到CCS联调全指南 当第一次打开Matlab准备为C2000 DSP开发算法时,很多人会惊讶地发现:明明安装了CCS和Matlab,却无法直接在Simulink中找到C2000的硬件支持。这不是个例——根据TI官方论坛…...

Xilinx VCU方案深度体验:除了低延时,开发者还需要面对这些挑战(GStreamer/FPGA/稳定性)

Xilinx VCU方案实战解析:低延时光环下的工程化挑战 在专业视频处理领域,低延时编解码一直是皇冠上的明珠。Xilinx Zynq UltraScale MPSoC凭借其VCU硬核确实交出了一份漂亮的参数答卷——4K60帧H.265编解码仅2帧延时的成绩单。但当我们真正将其引入工业视…...

OpenSpeedy:终极免费游戏变速工具完整使用指南

OpenSpeedy:终极免费游戏变速工具完整使用指南 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy OpenSpeedy是一款完全免费且开源的Windows游戏加速工具&#xff0c…...

从硬盘拷贝文件到内存,CPU真的在‘摸鱼’吗?聊聊DMA背后的性能优化实战

从硬盘拷贝文件到内存,CPU真的在‘摸鱼’吗?聊聊DMA背后的性能优化实战 当你在服务器上执行一个简单的文件读取操作时,是否曾好奇过背后发生了什么?传统认知中,CPU需要亲自搬运每个字节的数据,但实际上现代…...

半导体制造可持续转型:数据驱动、绿色技术与循环设计实践

1. 项目概述:当芯片制造遇上可持续发展干了十几年半导体行业,从设计到制造环节都摸过一遍,最近几年感受最深的一个变化就是,大家聊天的关键词里,“可持续”出现的频率越来越高。这不再是企业社会责任报告里一句轻飘飘的…...

超导输电技术:从原理到工程应用的挑战与前景

1. 超导输电线路:从技术神话到工程现实的漫长跋涉大约二十年前,当“高温超导”这个名词开始从实验室走向产业界的视野时,整个电力工程领域都为之振奋。想象一下,我们日常依赖的庞大电网,其输电线路中高达5%到10%的电能…...

基于GitHub Actions打造自动化工作流:测试、构建、部署

从手工到自动化的测试交付变革在软件研发流程中,测试从来不是孤立环节。每一次代码提交,都可能触发一轮新的构建、部署与验证。传统模式下,测试人员往往需要等待开发手动打包、手动部署到测试环境,再通过人工触发或定时执行测试脚…...

从零构建Simscape自定义物理模块:核心语法与实战指南

1. 为什么需要自定义Simscape模块? 在工程仿真领域,Simscape作为MATLAB/Simulink生态系统中的物理建模利器,已经内置了大量基础模块。但真实工程问题往往需要处理特殊结构——比如非标齿轮箱的振动分析、微型热管的热传导模拟,或是…...

开源物联网平台SiteWhere:架构解析与实战部署指南

1. 项目概述:一个开源的物联网应用平台如果你正在寻找一个能够快速搭建、灵活扩展,并且能统一管理成千上万台设备的物联网平台,那么你很可能已经听说过或者正在评估 SiteWhere。作为一个在物联网领域摸爬滚打了多年的从业者,我见过…...

从Concur到特斯拉:为什么伟大产品始于“丑陋”的1.0版本

1. 从一笔74亿美元的收购案说起:为什么别急着给1.0产品判死刑 前几天翻看一些旧资料,看到一篇2014年的行业评论,讲的是德国软件巨头SAP以74亿美元的天价,收购了一家名叫Concur的西雅图公司。当时很多人觉得不可思议,Co…...

FanControl终极指南:Windows电脑风扇智能控制软件完全解析

FanControl终极指南:Windows电脑风扇智能控制软件完全解析 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

OpenAPI规范自动生成CLI工具:原理、实现与工程实践

1. 项目概述:从API文档到命令行工具的自动化革命如果你是一名后端开发者,或者经常需要与各种RESTful API打交道,那么下面这个场景你一定不陌生:产品经理或前端同事跑过来,递给你一份新鲜出炉的OpenAPI/Swagger规范文档…...

实测好用、真正免费(无水印/无强制付费) 的剪辑软件合集来啦

剪辑小白看过来!2026年实测好用、真正免费(无水印/无强制付费) 的剪辑软件合集来啦!????不管你是学生党、自媒体新人,还是电脑配置不高,这篇笔记帮你按设备(手机/电脑/网页) 精准…...

3分钟实现Zotero与Notion双向联动:Notero完整使用指南

3分钟实现Zotero与Notion双向联动:Notero完整使用指南 【免费下载链接】notero A Zotero plugin for syncing items and notes into Notion 项目地址: https://gitcode.com/gh_mirrors/no/notero 你是否曾为学术研究中的文献管理而烦恼?Zotero中精…...

从“能用”到“可靠”:基于SonarQube与Jenkins的Java代码质量防线构建实战

当测试覆盖率不再只是一串数字,而是合并代码前的“一票否决权” 1. 为什么你的“质量门禁”只是个摆设? 在很多团队的CI/CD流水线中,SonarQube的集成往往停留在“能跑就行”的阶段。流水线里确实有代码扫描这一步,日志里也打印出…...

小熊猫Dev-C++:5分钟搞定C++开发环境的终极解决方案 [特殊字符]

小熊猫Dev-C:5分钟搞定C开发环境的终极解决方案 🚀 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 你是否曾为复杂的C开发环境配置而头疼?是否厌倦了臃肿的IDE占用大量系…...

从“能用”到“可靠”:基于SonarQube与Jenkins的代码质量防线构建实战

当测试覆盖率不再只是一串数字,而是合并代码前的“一票否决权” 1. 为什么你的“质量门禁”只是个摆设? 在很多团队的CI/CD流水线中,SonarQube的集成往往停留在“能跑就行”的阶段。流水线里确实有代码扫描这一步,日志里也打印出…...

SAP CAP集成RAG架构实战:基于HANA Cloud与AI Core的企业级AI应用开发

1. 项目概述:当企业级SAP CAP遇上生成式AI如果你是一位SAP开发者,或者正在用SAP Cloud Application Programming Model (CAP) 构建企业级应用,最近可能被一个词刷屏了:RAG。没错,就是检索增强生成。当严谨、结构化、流…...

EDA工具链互操作性:从概念到实践,破解芯片设计数据孤岛

1. 互操作性:一个被误解的工程圣杯 在半导体和电子设计自动化(EDA)这个行当里干了十几年,我听到“互操作性”这个词的频率,可能比听到“摩尔定律”还要高。每次行业巨头们坐下来,宣布要共同制定一个新标准时…...

ARM A64指令集架构解析与优化实践

1. A64指令集架构概述A64指令集作为ARMv8-A架构的64位执行状态核心,采用固定32位长度编码设计,这种设计在指令获取和流水线处理上具有显著优势。与传统的变长指令集相比,固定长度编码使得指令预取和译码阶段更加高效,尤其适合现代…...

3步掌握NBTExplorer:从Minecraft数据恐惧到编辑专家的完整指南

3步掌握NBTExplorer:从Minecraft数据恐惧到编辑专家的完整指南 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经面对Minecraft的level.dat文件…...

String、StringBuilder、StringBuffer 学习与深入

1 学习的知识是什么 String:字符串,一旦创建里面的内容就不可变,每次使用拼接都创建一个新的对象而原有的对象依旧存在。 StringBuilder:可变字符串线程不安全,…...

5分钟快速上手:XUnity.AutoTranslator游戏实时翻译插件终极指南

5分钟快速上手:XUnity.AutoTranslator游戏实时翻译插件终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为语言障碍而无法畅玩海外Unity游戏吗?XUnity.AutoTranslator正…...