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.interpolate(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再统一处理
  • 记录处理日志:哪列、用何方法、处理了多少条,方便复盘和审计


# python  # 编码  # app  # 数据清洗 


相关栏目: 【 网站优化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正则表达式验证手机号、邮箱、身份证号等  如何在万网利用已有域名快速建站?