专栏首页数据科学与人工智能数据清洗(data cleaning)的重要性

数据清洗(data cleaning)的重要性

之前经常和临床试验数据打交道,无论是来自手动录入的数据还是取自数据库的数据,在完成数据获取这一步后,感觉有80%甚至90%的时间和精力会用在做数据清洗(data cleaning)这一环节,即“增”“删”“查”“改”,通过data cleaning要让我们的数据成为可以进入模型的状态,也是就是清洁的数据(tidy data/clean data),过不了这一关,后面的建模就无法实现。

随着网络资源的丰富,很多时候即使没有精通的数据分析或者统计学基础,通过很多网上的step by step的教程或帮助手册文档,使得即使是新手也可以通过编程软件如SAS、R来实现很多高级模型的构建,我也经常会在国内外论坛或者微信公众号上学习这些教程。但是你要知道“几行代码实现XXX”的前提,也就是把一个“脏”数据变成能够在“几行代码”中直接跑出结果的过程可能需要几十行几百行代码进行清洗。通常情况这些教程是不会说明所用的“干净数据”是如何获取的,而且我们并不是FDA,收到的数据也不会像药企提交给FDA的SDTM (Study Data Tabulation Model) & ADaM (Analysis Data Model)那样规范[1],没有清洁的数据,盲目套用别人的code只会得到各种errors。

俗话说心急吃不了热豆腐,如果真的希望能够在数据分析上进一步提高水平,data cleaning是一项基本功并且无论怎样强调也不为过。数据清洗有很多专著(比如后面提到的Cody's book)[2],不同的软件也有不同的语法规则,这篇文章并不探讨具体的方法,旨在引起大家包括提醒我自己对这项基本功的重视。

先了解一下什么是数据清洗。根据Ron Cody在他的《Cody's Data Cleaning Techniques Using SAS》中的定义是:

  1. 确保原始数据的准确输入
  2. 检查字符型变量仅包含有效值
  3. 检查数值型变量在预定范围内
  4. 检查是否存在缺失数据
  5. 检查并删除重复数据
  6. 检查特殊值是否唯一,如患者编号
  7. 检查是否存在无效数据
  8. 检查每一个文件内的ID编号
  9. 确保是否遵循复杂多文件规则

举个例子,当我获得一个包含几百名临床患者的数据集时,一眼看过去,我的电脑屏幕应该是既看不见屏幕的右边还有什么(因为变量太多,或者说列太多),又看不见屏幕下面还有什么(因为观测太多,或者说行太多),比如下面这个样子的:

图1

这个时候,我应该做什么?拉一拉屏幕看看屏幕有什么,屏幕下面有什么吗?可以,但如果你是个数据分析老手,你会知道这并不重要,而且也没有什么用。如果数据量很大的时候,拖动屏幕去看看下面的几万行观测除了让你觉得卡顿之外,也不太可能一眼就看出什么有效的信息,所以没有任何意义。

粗略的来划分变量类型,通常可以分成字符型和数值型组成。还是拿上面的这个例子来说,这个数据集里的group(组别),gender(性别)都是典型的字符型变量,像age(年龄)就是典型的数值型了。那么数据清洗的可以检查字符型和数值型变量的值,是否在合理的区间(比如年龄的范围),是否存在缺失,是否存在异常(比如性别、年龄),患者编号是否存在重复。这一步有的人可能会说这难道不就是统计描述么?没错,这一步本质就是统计描述,这一步可以得到频数表、最大值、最小值、均数、中位数等信息。但数据清洗并没有这么简单,到这里我们通过统计描述只能说看看数据“脏不脏”,如果“脏”,那后面还有的是工作需要去做。但如果“干净”,也不要高兴太早,干净的数据也不见得直接就能拿来用。

还是用上面这个例子,这样的一个数据集,可能需要拆分,可能需要合并(比如双录,即两个研究人员同时录入一批数据,减少单人录入出现的失误),才能够满足后面的数据分析要求。现在我要基线(baseline)的数据,那么需要从刚才的数据集中提取visit=0的观测。这样的话,后面我所有与基线有关的数据分析都在这个新的数据集中操作即可,可以减少对原始数据集的影响,以免一些误操作而引起的麻烦。

图2

另外有时需要对数据进行转置(transpose),因为有些时候需要特定的数据格式才能进行下一步的数据分析,比如宽数据转长数据,或者长数据转宽数据。比如图1就是一个典型的长数据格式,因为“visit”这个变量被压缩到了一个变量之中,所以每一个ID不仅只有一行观测,而是有9行之多。图3就是对图1中的变量“RMDQ”进行转置之后的结果。可能你会问,为什么要转置RMDQ的这一列数据呢?因为“RMDQ”中存在缺失值(missing data),后面会通过多重填补(multiple imputation)方法进行缺失值的处理,需将数据变换为宽数据格式时才可以。

图3

总结一下数据清洗具体包含的操作除了检查变量是否有效、是否在合理范围内,还包括拼接、抽提、拆分、观测和变量的筛选、变量类型转换、行列转置、新变量生成、赋值、缺失数据填补等等只要是为进一步数据分析做准备的工作都可以看做是数据清洗。

数据清洗是数据分析的前提,也会花费较多的时间和精力。希望这篇小文章能让有兴趣在数据分析领域进一步学习了解的朋友们重视数据清洗的过程,夯实基础。

参考资料

  • Ron Cody, Cody's Data Cleaning Techniques Using SAS, Second edition(有第三版最新版本哦!链接请查收:https://pan.baidu.com/s/1fygwaWWIPuq_iG9dik4i4g 提取码: 2it2 )
  • FDA,美国食品药物管理局;SDTM,研究数据制表模型;ADaM,分析数据模型

本文分享自微信公众号 - 数据科学与人工智能(DS_AI_shujuren)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【数据动态】 需求高涨的数据科学家

    从技术方面来看,硬盘价格下降,NoSQL数据库等技术的出现,使得和过去相比,大量数据能够以廉价高效的方式进行存储。此外,像Hadoop这样能够在通用性服务器上工...

    陆勤_数据人网
  • 【数据科学】需求高涨的数据科学家

    从技术方面来看,硬盘价格下降,NoSQL数据库等技术的出现,使得和过去相比,大量数据能够以廉价高效的方式进行存储。此外,像Hadoop这样能够在通用性服务器上工...

    陆勤_数据人网
  • 【陆勤阅读】大数据思维的十大原理:当样本数量足够大时,你会发现其实每个人都是一模一样的

    大数据思维原理是什么?可以概括为10项原理。 一、数据核心原理 从“流程”核心转变为“数据”核心 大数据时代,计算模式也发生了转变,从“流程”核心转变为“数据”...

    陆勤_数据人网
  • 大数据如何破解腐败密码?厉害了

    戳上图,订阅2018年《方圆》杂志 美国最高法院大法官刘易斯·布兰迪斯(Louis Brandeis)曾写道:“阳光是最好的防腐剂。”在全球共同推动下,大数据所...

    企鹅号小编
  • 【案例】某城商行——数据平台建设项目

    数据猿导读 随着城商行业务的发展,银行内部业务系统的处理日益加重,处理逻辑日益复杂。若以传统方式直接从数据来源系统供给分析类业务系统,而又不影响各个业务系统的处...

    数据猿
  • 峰会演讲嘉宾李御玺:数据分析人才培养之道

    谢谢主持人,谢教授、各位专家,大家好! 现在我给大家介绍一下数据分析人才的知识结构,事实上这两天的论坛,这两天的演讲,要做数据分析的人他应该具备哪一方面的知识和...

    机器学习AI算法工程
  • 重磅 | 283所高校获批数据科学与大数据专业,985/211高校仅占13%

    月21日下午,历时近一年时间,教育部公布了2017年度普通高等学校本科专业备案和审批结果的最新通知,第三批大数据本科专业院校获批。 此次教育部最新公布的高校新增...

    小莹莹
  • 政府开放数据(Open Data) 大数据产业的机遇与挑战

    下一代创新研究mGovLabChina 移动政务实验室聚焦新一代信息技术发展所催生的知识社会以人为本、用户参与的下一代创新(创新2.0),及其引发的产业、政府、...

    小莹莹
  • 【推荐】阿里总参谋长曾鸣: 数据将成为未来商业竞争最重要资源

    用户1756920
  • 工作还是游戏?程序员:我选择边玩游戏边工作!

    一方面体现在“数据”构造上仍有广阔的待开发空间,另一方面则是应用场景,除了做客观评价和“讲故事”,还需打通更多的商业模式。

    养码场

扫码关注云+社区

领取腾讯云代金券