Python数据清洗教程_缺失值异常值处理方法
发布时间 - 2026-01-06 00:00:00 点击率:次处理缺失值和异常值是Python数据清洗核心,需依业务逻辑和分布选择策略;缺失值含NaN、空字符串、占位符等,须多方法联合识别;填充应按数值型、分类型、时间型分别处理。
处理缺失值和异常值是Python数据清洗中最核心的两步,直接影响后续分析和建模效果。关键不是“删光”或“填满”,而是根据业务逻辑和数据分布做有依据的选择。
识别缺失值:别只看NaN
缺失值不只有np.nan,还可能表现为空字符串、占位符(如"NULL"、"missing"、-999)、或统一编码的异常码(如“999999”)。用df.isna()只能捕获NaN和None;需结合df.astype(str).applymap(lambda x: x.strip() == '')查空格空串,再用df.eq()匹配自定义缺失标记。
- 先运行df.info()看每列非空计数,快速定位问题字段
- 对分类变量,用df['col'].value_counts(dropna=False)查看缺失是否集中于某类
- 时间字段缺失时,注意检查是否因格式错误转为NaT(如"2025/13/01")
缺失值填充:按类型选策略
数值型、分类型、时间型缺失不能一概而论。均值/中位数填充适合近似正态分布且缺失率低(
- 用SimpleImputer(strategy='median')批量处理数值列,避免手动计算
- 对有序分类变量(如“低/中/高”),可映射为数字再插补,最后转回标签
- 时间序列数据缺失,用df.inter
polate(method='time')比线性插值更合理
异常值检测:少依赖单一阈值
3σ法则和IQR法容易误判——前者假设正态分布,后者对长尾数据敏感。实际中建议组合使用:箱线图+散点图初筛,局部离群因子(LOF)识别密度异常点,再结合业务规则校验。例如电商订单金额异常,既要看统计离群,也要核对是否为批发大单或测试数据。
- 用sns.boxplot(x='amount', data=df)一眼识别分布形态,决定用IQR还是百分位法
- 对多维异常(如“高浏览量+零成交”),用IsolationForest比单变量方法更有效
- 标记异常值而非直接删除,新增一列is_outlier便于后续分析影响
异常值处理:保留上下文信息
直接删除可能丢失重要模式(如黑产行为集中在某时段)。更稳妥的做法是:缩尾(Winsorize)处理极端值,或分箱后将异常归入“高风险”区间;若确认是录入错误,可尝试反向推算(如用同地区同品类均值修正)。
- 用scipy.stats.mstats.winsorize()限制上下5%分位外的值
- 对时间异常(如出生年份为2100),用pd.to_datetime(..., errors='coerce')转为NaT再统一处理
- 记录处理日志:哪列、用何方法、处理了多少条,方便复盘和审计
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
javascript基于原型链的继承及call和apply函数用法分析
JS去除重复并统计数量的实现方法
Laravel如何配置Horizon来管理队列?(安装和使用)
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
node.js报错:Cannot find module 'ejs'的解决办法
如何快速生成凡客建站的专业级图册?
Laravel怎么在Controller之外的地方验证数据
如何挑选高效建站主机与优质域名?
html5的keygen标签为什么废弃_替代方案说明【解答】
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
Laravel如何处理文件下载请求?(Response示例)
js实现点击每个li节点,都弹出其文本值及修改
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
JavaScript如何实现错误处理_try...catch如何捕获异常?
高端云建站费用究竟需要多少预算?
想要更高端的建设网站,这些原则一定要坚持!
怎样使用JSON进行数据交换_它有什么限制
制作公司内部网站有哪些,内网如何建网站?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何在Tomcat中配置并部署网站项目?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel如何实现一对一模型关联?(Eloquent示例)
如何快速搭建高效WAP手机网站吸引移动用户?
做企业网站制作流程,企业网站制作基本流程有哪些?
移动端脚本框架Hammer.js
大连 网站制作,大连天途有线官网?
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Java遍历集合的三种方式
如何快速搭建安全的FTP站点?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
JS中对数组元素进行增删改移的方法总结
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
如何快速辨别茅台真假?关键步骤解析
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
如何用wdcp快速搭建高效网站?
千库网官网入口推荐 千库网设计创意平台入口
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
iOS正则表达式验证手机号、邮箱、身份证号等
如何在万网利用已有域名快速建站?


polate(method='time')比线性插值更合理