数据预处理几种常见问题

简介: 【6月更文挑战第12天】数据处理中常见的问题:数据缺失、数据重复、数据异常和数据样本差异大。对于数据缺失,处理方法包括定位、不处理、删除和填补,其中填补可使用业务知识、其他属性或统计方法。

获取了有用且可靠的数据,但是并不能说明可以直接使用数据,可能还会存在各种各样的问题。经常遇到的数据问题有如下几种:

1、数据缺失(Na/N)

比如,在互联网行业中,产品的用户注册阶段需要用户输入基本信息,很多用户会忽略不写,如地区、年龄和收入等级等,由于填写与不填写获得的产品服务差异不大,因此用户往往会忽略,也可能随便填写,比如将年龄写为100岁或以上,从而产生异常值,在无形中造成数据缺失。

对待数据缺失有以下几种递进的处理方式:定位、不处理、删除、填补。


定位:就是要定性与定量了解数据的情况。对于已经收集回来并存储在数据库中的数据,了解数据库中哪些字段有缺失、缺失比例如何,这是一种定量的描述。明确有缺失数据的字段重要性如何,这是一种定性的描述。定量的描述相对容易,定性的描述需要与业务场景相结合。

我们知道,通常行用来表示数据记录(如用户),而列用来表示相应属性(如性别、年龄)。缺失值的情况一般分为以下两种:

  • 一是行记录的缺失,即数据记录的丢失;
  • 二是列记录的缺失,即数据记录中的某些属性值出现空缺。

数据记录的丢失通常无法找回,一般缺失值处理仅针对属性值的缺失进行处理。


不处理:是预处理的一种方式。数据分析及应用有时对缺失值是存在容忍度的,比如在进行数据降维处理时,很多属性值其实对数据分析的结果相关性非常小,这些属性值的缺失并不会对分析结果带来任何影响,因此完全可以采用不处理的方式来对待。

删除就是丢弃。如果一个字段对于后续的业务没有太多的帮助,或者该字段的缺失会导致数据处理脚本不能运行等,就可以直接删除。有的时候,虽然一个数据项目对业务很有帮助,但是难以通过直接或间接的方式补齐,也只能作罢。删除就是直接删除有缺失值的数据记录。这种方法明显存在缺陷,当出现以下情况时,直接删除并不合理:

  • 大量的数据记录或多或少都存在属性缺失(如超过30%);
  • 存在属性缺失的数据记录都是同一类(如80%的男性用户均没有年龄信息)。

以上两种情况都会导致通过数据集推断出的结论不准确,因为大量携带有用信息的数据记录已被遗弃,于是又有了以下方法,即填补。


填补:是更为常用的一种处理方式。填补就是通过一定的方法将存在缺失属性的数据记录补全。通常可以采用如下方法。

  • 利用业务知识和经验填充。例如,我们可以根据学生6~7岁上学这个常识对相应年级学生的年龄缺失情况进行补全。
  • 利用其余数据记录的属性进行填补:比如针对缺失年龄属性的用户数据记录,我们可以采用对所有用户的年龄取均值、中位数、众数等方法进行填补。以取均值为例,可以使用全部用户的收入均值来补全那些尚未填写收入的数据。
  • 专家/用户填补:针对某些少量且具有重要意义的数据(特别是创业期),直接咨询行业专家或用户本人来进行数据填补。
  • 利用当前数据记录的其余属性进行填补:比如针对缺失年龄属性的用户数据记录,我们已知用户学历为本科,工作经验为3年,那么可以大致推断出该用户的年龄。很多数据也包含一些隐性的意义,例如手机号可以反映用户的归属地。


其实,在掌握了不处理、删除及填补这3种方法后,我们还需要考虑一种特殊情况,就是当我们无法通过填补的方法补全缺失的属性,并且这些数据记录又无法进行删除时,可以将缺失值也视为一种类型,比如性别除男、女外,可以将缺失数据的用户均记录为未知。在数据分析时,这类用户将会作为一个特殊群体参与分析。

2、数据重复

产生数据重复大致有两个原因,一个是无意重复,另一个是人为重复。


对于无意重复,因素比较多。比如服务器采集上报时重复上报了,或者客户端异常导致重复数据记录操作,都属于无意中存多的重复。也有可能是统计口径不严谨导致的数据重复计算。比如,QQ和微信对外的月活跃用户数分别都有好几个亿,但是如果以用户账号这个ID属性来计算,那么这里面必然有重合的,因为一个用户可能有多个账号的情况,也就是同时使用QQ和微信,而对于这个人的ID属性,是重复的。


对于人为重复,多数可能是为了预防不可抗力的灾害而做的备份。比如对于现在的云计算服务器,将所有数据都放在一个机器上会很不安全,为了防止被黑客入侵、被自然灾害如火灾销毁等,要复制多份。而当这些数据被拉取出来放在一起的时候,就会出现数据重复的情况,必须要注意去重。


针对数据重复的情况,大部分时候我们都会直接使用数据去重的方法,简单的数据样本可以用Excel删除重复项,高阶的方法可以用数据库脚本如SQL进行重复删除,这些技能都是我们必须掌握的。

但一定要注意,有些场景我们是不能随意去重的,比如重复监控。


一般情况下,我们使用数据是用来分析的,直接去重不会对分析结果带来影响。但是一旦我们决定使用数据来监控业务风险,重复数据就不能随意忽略。比如同一个IP在一段时间内连续获取了多次短信验证码,这个重复记录可能说明相应短信验证码的业务出现了重大的规则问题,而且可能遭受了竞争对手的恶意攻击。因此,这些重复数据不能随意删除,产品经理可以通过这些重复值来发现自己设计的产品漏洞,并配合相关团队最大限度地降低给公司带来的损失。再比如,对于一些需要计算某页面或App功能的操作次数,需要对每次的使用行为做上报统计,在这种情况下,也是不能直接进行去重的,会导致数据无法做统计。

3、数据异常

我们知道,提取的数据来自采集上报,那么就很难保证所有采集到的数据都是统一和规范的。这种不统一会给数据处理带来冲突,进而产生异常值。


比如数据格式的不统一导致的数据异常。我们在做数据处理时经常会遇到日期格式问题,如果在一份数据中出现了多种日期格式—,如“2020-3-14”“2020/3/14”“14/Mar/2020”,就要使用统一的方式进行规整,使数据格式统一。


有时由于用户填写错误或后台处理程序读取与编写错误,使得姓名、年龄、手机号码等位置错乱,这也势必使数据分析多了一层障碍。很多时候数据并没有缺失或异常,只是由于不符合常理而显示出异常的一面。例如,用户注册时将年龄输入为200、手机号码输入为13000000000等。一般情况下,通过常识性的推理,就可以判断这些数据属于异常的数据。在处理时可以通过不同字段间的数据


进行相互推理印证,比如年龄或出生年月数据与身份证号就可以相互对照,检查数据正误。

和重复值一样,有些情况下我们是不能直接删除异常的数据记录的,而是需要采取保留的方式进行处理。


比如,异常值是业务部门在特定的活动中产生的,运营部门在App上利用某电商促销节点进行促销推广活动。促销活动导致营销数据突增,进而导致App的活跃数据在当天暴涨,这种异常情况,我们不能认为是真实的异常。这种异常数据如果被删除,反而无法评价本次活动的效果。

4、数据样本差异量非常大

对于数据样本差异量较大的情况,这里介绍一种处理方法,叫作数据的标准化归一。数据的归一,本质上就是把绝对的数量转变成相对的数量。


怎样理解绝对转变成相对?假设一个班里有三名同学,他们的体重分别是120斤、105斤与95斤。当需要转变成相对数量时,可以将上述三位同学的体重数据转换成1.2、1.05与0.95。经过这样的变换,我们可能并不清楚这些数值的意义,但能很清晰地知道它们的相对大小和比例关系。


进行归一化还有一个好处,就是可以避免极值问题。例如,一个统计指标是10,而另一个统计指标是10000,要在同一个图标上进行展示,几乎看不到10这个数据,因为已经被1000倍的比例稀释了。而如果进行归一化,就可以缩小这样的比例差距。这个现象或问题相信是绝大部分人经常遇到的。归一化的方法有很多,比如用一个最大值和最小值的方法来说明如何进行标准化归一处理。


数据的异常情况处理需要根据实际的业务进行分析,面对“脏”数据,首先要追寻问题出现的原因,在确保数据来源没有问题后,再针对缺失值采取不处理、删除、填补或保留并转化,而针对重复值和异常值通常会进行删除和保留。作为数据产品经理或运营经理,要从数据预处理阶段就参与其中,结合公司的业务需要合理地针对数据预处理给出产品方案,帮助公司更有效地进行决策。

相关文章
|
6月前
|
数据采集 数据挖掘 数据处理
进行数据清洗的过程通常包括以下步骤
【4月更文挑战第3天】进行数据清洗的过程通常包括以下步骤
180 3
|
27天前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
42 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
关于Python数据分析项目的简要概述:从CSV加载数据,执行数据预处理,进行数据探索,选择线性回归模型进行训练,评估模型性能并优化,最后结果解释与可视化。
【7月更文挑战第5天】这是一个关于Python数据分析项目的简要概述:从CSV加载数据,执行数据预处理(填充缺失值,处理异常值),进行数据探索(可视化和统计分析),选择线性回归模型进行训练,评估模型性能并优化,最后结果解释与可视化。此案例展示了数据科学的典型流程。
74 2
|
5月前
|
机器学习/深度学习 数据采集 算法
特征工程与数据预处理全解析:基础技术和代码示例
在机器学习和数据科学的世界里,数据的质量是建模成功与否的关键所在。这就是特征工程和数据预处理发挥作用的地方。本文总结的这些关键步骤可以显著提高模型的性能,获得更准确的预测,我们将深入研究处理异常值、缺失值、编码、特征缩放和特征提取的各种技术。
76 0
|
5月前
|
数据采集 机器学习/深度学习 数据挖掘
使用Python进行数据预处理与清洗的最佳实践
本文探讨了Python在数据预处理和清洗中的关键作用。预处理包括数据收集、整合、探索、转换和标准化,而清洗则涉及缺失值、重复值、异常值的处理及数据格式转换。文中提供了使用pandas库进行数据读取、缺失值(如用平均值填充)和重复值处理、异常值检测(如IQR法则)以及数据转换(如min-max缩放)的代码示例。此外,还讲解了文本数据清洗的基本步骤,包括去除标点、转换为小写和停用词移除。整体上,文章旨在帮助读者掌握数据预处理和清洗的最佳实践,以提高数据分析的准确性和效率。
577 2
|
6月前
|
机器学习/深度学习 SQL 人工智能
机器学习PAI常见问题之训练模型报错如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
6月前
|
数据采集 Python
数据清洗是数据预处理的重要步骤
数据清洗是数据预处理的重要步骤
71 0
|
分布式计算 运维 JavaScript
大数据预处理工具的综合使用
大数据预处理工具的综合使用
|
机器学习/深度学习 数据采集 监控
机器学习测试笔记(6)——数据清洗和准备(下)
机器学习测试笔记(6)——数据清洗和准备(下)
92 0
|
数据采集 机器学习/深度学习 测试技术
机器学习测试笔记(6)——数据清洗和准备(上)
机器学习测试笔记(6)——数据清洗和准备(上)
75 0
下一篇
无影云桌面