Python数据清洗pandas高阶操作.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Python数据清洗pandas高阶操作

引言

在数据分析与挖掘的全流程中,数据清洗是决定后续分析质量的关键环节。据行业统计,数据科学家60%-70%的时间都花在数据清洗上,而其中80%的工作又集中在处理“不完美数据”上——这些数据可能存在缺失、异常、格式混乱、多源冲突等问题。作为Python数据处理的核心工具,pandas库凭借其灵活的数据结构(Series与DataFrame)和丰富的API,成为数据清洗的首选工具。如果说基础的dropna、fillna、drop_duplicates是pandas数据清洗的“入门招式”,那么高阶操作则更强调对复杂场景的精准处理、多维度问题的系统性解决,以及对性能与效率的优化。本文将围绕数据质量诊断、复杂缺失值处理、异常值深度治理、多源数据融合、自定义函数与向量化优化五大核心场景,逐层拆解pandas高阶操作的实践技巧。

一、数据质量深度诊断:清洗前的“精准定位”

数据清洗的第一步,是全面掌握数据的“健康状况”。基础的info()、describe()函数能提供数据的基础信息,但面对复杂业务场景时,需要更细致的诊断维度,才能避免“头痛医脚”的低效操作。

(一)多维度数据概览分析

除了用df.info()查看数据类型、非空值数量外,高阶诊断需要结合自定义统计方法。例如,我们可以通过遍历每一列,计算“非空率”(非空值数量/总记录数)、“唯一值占比”(唯一值数量/总记录数)、“数据分布集中度”(前5大高频值的累计占比)等指标。例如,对于用户行为数据中的“来源渠道”列,若唯一值占比超过90%,可能意味着数据录入时存在随意性(如拼写错误导致的“微信”“微x”同时存在);若某列非空率仅30%,则需要重点评估是否保留该列或采用复杂填充策略。

(二)重复值的深度检测

基础的duplicated()函数只能检测完全重复的行,但业务场景中更多是“逻辑重复”——即关键业务字段相同但其他字段有差异的记录。例如,订单数据中可能存在“订单号相同但支付时间不同”的记录,这可能是系统补录导致的重复。此时需要通过subset参数指定关键列(如[‘订单号’,‘用户ID’]),结合keep参数(’first’保留第一条,’last’保留最后一条,False标记所有重复)精准定位。更复杂的情况是,某些重复可能源于数据抽取时的“时间戳截断”,比如将“2023-01-0112:00:01”和“2023-01-0112:00:02”误判为不同记录,但实际业务中应视为同一操作。此时需要结合时间窗口(如按分钟聚合)重新定义重复规则。

(三)一致性与逻辑校验

数据一致性问题普遍存在于多字段关联场景中。例如,电商数据中的“订单金额”应等于“商品单价×数量+运费”,若某条记录不满足此关系,则可能是录入错误或计算逻辑缺失。此时可通过自定义函数逐行校验,如:

df[校验结果]=df.apply(lambdarow:row[单价]*row[数量]+row[运费]==row[订单金额],axis=1)

此外,文本类数据的一致性问题(如“北京”“北京市”“beijing”混用)可通过正则表达式或自定义映射表统一,例如用str.replace()替换冗余字,用str.lower()统一大小写。

二、复杂缺失值处理:从“简单填充”到“智能修复”

缺失值处理是数据清洗的核心难点。基础的删除(dropna)或简单填充(均值、中位数)可能破坏数据分布或丢失关键信息,高阶操作需要结合业务逻辑与算法,实现更精准的修复。

(一)基于业务规则的定向填充

业务逻辑是缺失值处理的重要依据。例如,用户年龄缺失时,若已知用户注册时选择了“学生”标签,可结合教育阶段(如大学生年龄集中在18-22岁)填充;电商订单的“收货地址”缺失时,若用户有历史订单,可填充最近一次的收货地址。这种方法需要先通过分组(groupby)提取关联信息,再用transform或fillna的method参数(如ffill前向填充)实现。例如:

df[收货地址]=df.groupby(用户ID)[收货地址].transform(lambdax:x.ffill())

(二)插值法的灵活应用

对于时间序列或有序数据(如温度监测、股票价格),插值法能更合理地填补缺失。pandas提供了多种插值方法:

线性插值(method=‘linear’):假设相邻值呈线性关系,适用于变化平缓的数据;

多项式插值(method=‘polynomial’,order参数指定阶数):适用于存在曲线变化趋势的数据;

时间插值(method=‘time’):根据时间间隔加权插值,专门针对时间序列数据(需将索引设置为时间类型)。

例如,某温度传感器每分钟记录一次数据,某小时缺失3条记录,使用时间插值能根据前后时

文档评论(0)

zhangbue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档