首页 互联网 工作中人们常提到的数据预处理,说的到底是什么?

工作中人们常提到的数据预处理,说的到底是什么?

数据预处理一方面是为了提高数据的质量,另一方面也是为了适应所做数据分析的软件或者方法。

在做数据分析时,我想许多数据分析师会像《R语言实战第二版》的作者卡巴科弗那样发出感叹:“数据分析师在数据预处理上花费了60%的时间……”

是的,我们所知道的建模,评估模型等数据分析工作所花费的时间远远没有数据预处理的多。这件事虽然麻烦多事但却“功在千秋”,如果在做数据分析时前期的数据预处理做的很好,那后面的步骤会说话的话,相信我,它们一定会感谢你的。这就跟减肥一样,过程艰难,但人家创造101的杨超越不也下定决心唱出一句:“燃烧我的卡路里,你是最棒的”嘛。

数据预处理一方面是为了提高数据的质量,另一方面也是为了适应所做数据分析的软件或者方法。一般来说,数据预处理步骤有数据清洗、数据集成、数据变换、数据规约,每个大步骤又有一些小的细分点。当然了,这四个大步骤在做数据预处理时未必都要执行。

一、数据清洗

数据清洗,顾名思义,“黑”的变成“白”的,“脏”的数据变成“干净”的,脏数据表现在形式上和内容上的脏。

  • 形式上的脏,如:缺失值、带有特殊符号的;
  • 内容上的脏,如:异常值。

1. 缺失值

缺失值包括缺失值的识别和缺失值的处理。

在R里缺失值的识别使用函数is.na()判别,函数complete.cases()识别样本数据是否完整。

缺失值处理常用的方法有:删除、替换和插补。

  1. 删除法 :删除法根据删除的不同角度又可以分为删除观测样本和变量,删除观测样本(行删除法),在R里na.omit()函数可以删除所含缺失值的行。这就相当于减少样本量来换取信息的完整度,但当变量有较大缺失并且对研究目标影响不大时,可考虑删除变量R里使用语句mydata[,-p]来完成。mydata表示所删数据集的名字,p是该删除变量的列数,-表示删除。
  2. 替换法 :替换法顾名思义对缺失值进行替换,根据变量的不同又有不同的替换规则,缺失值的所在变量是数值型用该变量下其他数的均值来替换缺失值;变量为非数值变量时则用该变量下其他观测值的中位数或众数替换。
  3. 插补法 :插补法分为回归插补和多重插补。回归插补指的是将插补的变量当作因变量y,其他变量看错自变量,利用回归模型进行拟合,在R里使用lm()回归函数对缺失值进行插补;多重插补是指从一个包含缺失值的数据集中生成一组完整的数据,多次进行,产生缺失值的一个随机样本,在R里mice()包可以进行多重插补。

2. 异常值

异常值跟缺失值一样包括异常值的识别和异常值的处理。

  • 异常值的识别通常用单变量散点图或箱形图来处理,在R里dotchart()是绘制单变量散点图的函数,boxplot()函数绘制箱现图;在图形中,把远离正常范围的点当作异常值。
  • 异常值的的处理有删除含有异常值的观测(直接删除,当样本少时直接删除会造成样本量不足,改变变量的分布)、当作缺失值(利用现有的信息,对其当缺失值填补)、平均值修正(用前后两个观测值的均值修正该异常值)、不处理。在进行异常值处理时要先复习异常值出现的可能原因,再判断异常值是否应该舍弃。

二、数据集成

所谓数据集成就是将多个数据源合并放到一个数据存储中,当然如果所分析的数据原本就在一个数据存储里就不需要数据的集成了(多合一)。

数据集成的实现是将两个数据框以关键字为依据,在R里用merge()函数实现,语句为merge(dataframe1, dataframe2,by=”关键字“”),默认按升序排列。

在进行数据集成时可能会出现如下问题:

  1. 同名异义,数据源A中某属性名字和数据源B中某属性名字相同,但所表示的实体不一样,不能作为关键字;
  2. 异名同义,即两个数据源某个属性名字不一样但所代表的实体一样,可作为关键字;
  3. 数据集成往往造成数据冗余,可能是同一属性多次出现,也可能是属性名字不一致导致的重复,对于重复属性一个先做相关分析检测,如果有再将其删除。

三、数据变换

数据变换就是转化成适当的形式,来满足软件或分析理论的需要。

1. 简单函数变换

简单函数变换用来将不具有正态分布的数据变成有正态分布的数据,常用的有平方、开方、取对数、差分等。如在时间序列里常对数据对数或差分运算,将非平稳序列转化成平稳序列。

2. 规范化

规范化就是剔除掉变量量纲上的影响,比如:直接比较身高和体重的差异,单位的不同和取值范围的不同让这件事不能直接比较。

  1. 最小-最大规范化:也叫离差标准化,对数据进行线性变换,将其范围变成[0,1]
  2. 零-均值规范化:也叫标准差标准化,处理后的数据均值等于0,标准差为1
  3. 小数定标规范化:移动属性值的小数位数,将属性值映射到[-1,1]

3. 连续属性离散化

将连续属性变量转化成分类属性,就是连续属性离散化,特别是某些分类算法要求数据是分类属性,如:ID3算法。

常用的离散化方法有如下几种:

  1. 等宽法:将属性的值域分成具有相同宽度的区间,类似制作频率分布表;
  2. 等频法:将相同的记录放到每个区间;
  3. 一维聚类:两个步骤,首先将连续属性的值用聚类算法,然后将聚类得到的集合合并到一个连续性值并做同一标记。

四、数据规约

数据规约能够降低无效错误的数据对建模的影响、缩减时间、降低存储数据的空间。

1. 属性规约

属性规约是寻找最小的属性子集并确定子集概率分布接近原来数据的概率分布。

  1. 合并属性:将一些旧的属性合并一个新的属性;
  2. 逐步向前选择:从一个空属性集开始,每次在原来属性集合选一个当前最优属性添加到当前子集中,一直到无法选择最优属性或满足一个约束值为止;
  3. 逐步先后选择:从一个空属性集开始,每次在原来属性集合选一个当前最差属性并剔除当前子集中,一直到无法选择最差属性或满足一个约束值为止;
  4. 决策树归纳:没有出现在这个决策树上的属性从初始集合中删除,获得一个较优的属性子集;
  5. 主成份分析:用较少的变量去解释原始数据中大部分变量(用相关性高的变量转化成彼此相互独立或不相关的变量)。

2. 数值规约

通过减少数据量,包括有参数和无参数方法,有参数如线性回归和多元回归,无参数法如直方图、抽样等。

站心网

数据预处理一方面是为了提高数据的质量,另一方面也是为了适应所做数据分析的软件或者方法。在做数据分析时..

为您推荐

如何更有策略的选择工作,让自己少奋斗10年?

你好,我是粥左罗,今天我们聊的话题是,职场中的一个个选择,是如何影响你的整个职业生涯的。职场上工作两三年以上的朋友可能都有过这样的感受:感觉 XXX 也没有比我强很多啊,为什么他能赚这么多?其实这不是主观..

实时数据的处理一致性如何保证?

实时数据一致性的定义以及面临的挑战数据一致性通常指的是数据在整个系统或多个系统中保持准确、可靠和同步的状态。在实时数据处理中,一致性包括但不限于数据的准确性、完整性、时效性和顺序性。下图是典型的实时/..

程序员失业日记1:工作五年,交接半天

最近发现越来越多的小伙伴被公司裁员,有的是因为公司业绩不景气被裁员,有的是因为压力太大离职。很多公司都在裁人、减员。找工作也比之前难。刚好去年我也被上家裁员了,正好做一个系列的日志,希望能帮到在找工作..

关于大数据的一些真知灼见

大数据很强大,但还是有很多人仍然不知道它到底是什么。让我们来学习大数据的真实表现,以及如何更好地促进企业转型。或许我们经常听到有人讲大数据,但仍然有很多人不知道它到底是什么。因为我确信它很强大,所以我..

2018总结:理财、工作、生活

18年应该是工作10年来最惨的一年,主要是在这个特殊的一年开始理财了,损失惨重。工作上还是进展挺大了,去了一个都是老同事的公司,工作内容也有了新的挑战。理财说起来一把泪的18年理财。有句话说得好,去年不炒房..

关于工作和成长,这是我的121条具体建议

关于面对批评01.没有人对被批评感到高兴。如果有,TA撒谎。02.面对批评,得体的第一反应是“不急于解释,不反唇相讥”。03.每天,或者最长每周养成习惯,把自己存在的问题和造成的麻烦用最重的形容词想一遍,诚实的..

【深度思考】一线开发对于工作的感悟分享

前言写在前面的是关于自己的一点介绍,21年本科毕业,学的是计算机科学与技术专业,到现在工作(实习)也有两三年了。自己本身对编程和开发是有兴趣的,同时也对项目管理、团队建设方面有兴趣。目前有两段工作经历,..

.net环境下跨进程、高频率读写数据

一、需求背景1、最近项目要求高频次地读写数据,数据量也不是很大,多表总共加起来在百万条上下。单表最大的也在25万左右,历史数据表因为不涉及所以不用考虑,难点在于这个规模的热点数据,变化非常频繁。数据来源..

累死你的不是工作,而是工作方式

《浪潮之巅》的作者吴军,在《得到》专栏里,提及了Google刚进中国时候的一件事。刚开始,Google总部对中国研发团队的评价非常低,因为“出工不出活儿”,北京的三四个工程师都抵不上Google总部的一个工程师。后来吴..

mysql随机获取一条或者多条数据

语句一:select * from users order by rand() LIMIT 1MYSQL手册里面针对RAND()的提示大概意思就是,在 ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描,导致效率相当相当的低,效率不行,切..

多语言网站数据库文章表设计

设计一个支持多语言的网站数据库时,应该确保内容能够方便地扩展和管理。以下是多语言数据库表设计的关键原则和示例:设计原则分离内容与语言:将与语言相关的内容独立存储,不直接硬编码到主要表中。每个支持多语言..

ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构

在 ASP.NET 中,使用 Entity Framework (EF) 创建并连接 SQLite 数据库是一种轻量级、高效的数据库管理方式。以下是详细步骤:安装必要的 NuGet 包安装EntityFrameworkCore.Sqlite包:Install-Package Microsoft.Ent..

Mysql查询一段时间内的数据

select * from wap_content where week(created_at) = week(now)如果你要严格要求是某一年的,那可以这样查询一天:select * from table where to_days(column_time) = to_days(now());select * from table where da..

SQLite性能支持多少数据量?

SQLite是一种轻量级的关系型数据库管理系统,广泛应用于移动应用、嵌入式系统和小型桌面应用程序中。由于其零配置、自给自足的特性,SQLite在很多场景下非常受欢迎。然而,对于许多开发者来说,一个常见的问题是:SQ..

Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库

Sylvan.Data.Excel是一个开源、免费、跨平台的.NET库,专注于读取和写入Excel数据文件。支持多种文件格式,并提供高效的数据访问和数据绑定功能。该库在.NET生态系统中是读取Excel数据文件的最快且内存分配最低的库..

尤雨溪的VoidZero到底是什么?

尤雨溪创立的VoidZero是一家致力于打造下一代JavaScript工具链的公司,其核心目的是解决当前JavaScript开发工具在性能和效率上的痛点。这个工具链的目标包括提高速度、减少重复处理,并用统一的架构简化开发者的操作..

HTQL 提取和查询HTML和XML数据的轻量级查询语言

HTQL(Hyper-Text Query Language)是一种用于提取和查询HTML和XML数据的轻量级查询语言。HTQL提供类似SQL的语法,可以方便地从网页或其他基于标签的文档中提取结构化数据,而无需解析整个文档。这使得它在爬虫、数..

.NET框架和CLR的工作原理?

.NET 框架和 CLR(公共语言运行时,Common Language Runtime)共同构成了一个应用程序运行和开发的环境,为多种编程语言提供跨平台支持、内存管理、异常处理、安全性、以及其他服务。它们各自的工作原理如下:.NET F..

工作这么多年,你能向新人解释清到底什么是面向对象编程吗?

面向对象编程想必大家都耳熟能详,但是写了这么多代码你对面向对象有清晰的认识吗?来看看这几个问题:到底什么是面向对象编程?和面向过程编程有什么区别?什么又称为面向对象语言、面向过程语言?用面向对象语言写..

使用ADO.NET连接到南大通用GBase 8s数据库

南大通用GBase 8s数据库广泛应用于各种企业级应用中,对于开发者而言,掌握如何使用ADO.NET连接到GBase 8s数据库非常重要。本文将详细阐述如何通过ADO.NET方式连接到南大通用GBase 8s数据库,并进行基本的数据库操作..

发表回复

返回顶部