缺失值处理的七种常用方法(附真实案例) 变量的缺失值
大家好,我是茉莉,做了十年数据清洗工作,最喜欢用最简单的法子解决最头疼的问题,今天就来和大家聊聊数据集里那些闹心的"空白格"到底该怎么收拾。
开门见山说,处理缺失值就像在拼图上补缺口,关键要搞懂这三个事:缺口有多大?缺口在哪?补什么图案?比如网购数据里用户年龄缺了10%,和医疗数据里血压值缺了30%,处理方式绝对不同,下面直接上干货,讲七种接地气的处理办法:
直接删除法(适合心狠手辣的新手)
举个真实例子:某外卖平台分析配送时长,原始数据10万条,其中有2000条缺失骑手接单时间,这些记录不仅接单时间空缺,连送达时间、配送距离也都空白,这种情况直接删掉最省事。
但要注意三点:
1、删除比例别超过总数据量5%
2、删除后要做t检验,确认剩余数据分布没变
3、切忌在时间序列数据里直接删除
平均值填补法(最常用的笨办法)
去年帮银行处理信用卡申请数据,月收入字段缺失8%,把现有客户的收入平均值(6800元)填进去,简单粗暴但有效,但遇到下面这种情况就要翻车:某个小区房价数据,20套豪宅的价格空缺,用均价补就会严重低估。
众数填补法(分类变量的救星)
处理过某化妆品问卷数据,皮肤类型字段有15%缺失,调查发现油性皮肤占比62%,果断填入"油性",就像班里40人,30个戴眼镜,给缺席学生的视力情况填"近视"更合理。
热卡填补法(找双胞胎)
在医疗数据处理时遇到妙用:某患者缺失空腹血糖值,就在同年龄段、同性别、同体重的患者里找个"双胞胎",复制他的血糖值,去年处理糖尿病患者数据,用这法子补了300多条记录。
模型预测法(高阶操作)
给某共享单车公司做的案例:用天气、温度、星期几等完整数据训练回归模型,预测缺失的骑行量,效果虽好但要注意:预测值会让数据方差变小,就像美颜相机把皱纹都磨没了,容易误判真实情况。
虚拟变量法(分类变量的障眼法)
处理电商用户性别缺失时,直接新增"性别缺失"这个分类,有个有趣发现:不填性别的用户客单价反而比填写的用户高18%,后来发现这类用户多是买隐私商品的。
多重填补法(学霸专用)
最近帮研究所处理环境监测数据,对PM2.5缺失值同时生成5个填补版本,就像画坏了的线稿,临摹五个不同版本继续上色,最后取共同效果,虽然复杂但最接近真实情况。
常见误区提醒:
1、别用平均值填分类变量(比如把缺失的水果类型填成"苹果/香蕉的平均值")
2、时间序列数据别用前后均值(特别是存在周期性波动时)
3、超过30%缺失率的变量建议直接放弃治疗
4、文本数据别乱填"无"(可能造成语义混乱)
进阶提示:
处理前先画缺失值分布图,就像看病先拍X光,用Python的missingno矩阵图,一眼就能看出缺失模式:是随机缺失?还是整块整块缺失?去年处理租房数据时发现,但凡中介自己挂的房源都缺失楼层信息,这才揭穿中介虚报房源的黑幕。
最后说个冷知识:最好的数据清洗其实是预防,设计问卷时把必填项标红,系统录入时做实时校验,比事后补漏强十倍,上周帮培训机构改报名表,把可选填的"紧急联系人"改成必填,缺失率直接从17%降到0.3%。
处理缺失值就像做菜放盐,少了没味,多了齁嗓子,关键要看菜式(数据类型)、食客口味(分析目标)、厨师手艺(处理技巧),记住没有万能钥匙,但备齐这七把工具,足够应对90%的日常问题,处理完记得要做敏感性分析,就像炖汤最后要尝一口咸淡。