面向数据科学家的实用统计学
上QQ阅读APP看书,第一时间看更新

1.1 结构化数据的组成

数据的来源非常丰富,例如传感器的测量值、事件、文本、图像和视频等,并且物联网正在涌出大量信息流。这些数据大多是非结构化的。例如,图像由一系列像素点组成,每个像素包括了红、绿、蓝三原色信息;文本是单词和非单词字符的序列,常以章节、子章节等形式组织在一起;点击流是用户在App或Web页面上的动作序列。事实上,如何将大量的原始数据转化为可操作的信息,这才是数据科学所面对的主要挑战。要使用本书中介绍的统计学概念,就必须将非结构化的原始数据结构化(就像是从关系型数据库中取出的数据那样),或者出于研究目的采集数据。

主要术语

连续型数据

数据可在一个区间内取任何值。

同义词:区间数据、浮点型数据、数值数据

离散型数据

数据只能取整数,例如计数。

同义词:整数型数据、计数型数据

分类型数据

数据只能从特定集合中取值,表示一系列可能的分类。

同义词:枚举数据、列举数据、因子数据、标称数据、多分支数据

二元数据

一种特殊的分类数据,数据值只能从两个值中取其一(例如0或1, True或False)。

同义词:二分数据、逻辑型数据、指示器数据、布尔型数据

有序数据

具有明确排序的分类数据。

同义词:有序因子数据

结构化数据有两种基本类型,即数值型数据和分类数据。数值型数据有连续型离散型两种形式。风速、持续时间等是连续型数据,而某一事件的发生次数则是离散型数据。分类数据只能取一系列固定的值,例如,电视屏幕的类型可以是等离子体、LCD或LED等,美国各州的名称包括阿拉巴马州、阿拉斯加州等。二元数据是一种重要且特殊的分类数据,该类数据的取值只在两者中择其一,例如0或1、是或否、True或False等。有序数据是另一种有用的分类数据,该类数据是按分类排序的,例如数值排序(1、2、3、4或5)。

我们为什么要关心数据类型的分类呢?事实表明,在数据分析和预测建模中,数据类型对于确定可视化类型、数据分析或统计模型是非常重要的。R和Python等数据科学软件也使用数据类型去改进计算性能。更重要的是,变量的数据类型决定了软件处理变量计算的方法。

对此,软件工程师和数据库编程人员可能会产生疑问:为什么我们在数据分析中也需要了解分类数据有序数据呢?毕竟,分类数据只是一组文本值(或数值),数据的内部表示会被后台的数据库自动处理。但是,相比于文本表示,将数据显式地标识为分类数据的确具有如下优点。

· 如果我们明确输入的是分类数据,那么软件就可以据此确定统计过程的工作方式,例如图表生成或模型拟合。具体到R和Python中,有序数据可用ordered.factor表示,这样用户指定的顺序就能保持在图、表和模型中。

· 可以优化存储和索引,如同在关系型数据库中那样。

· 限定了给定分类变量在软件中的可能取值,例如枚举类型。

第三个优点可能会导致一些令人意想不到的行为。R语言的数据导入函数(例如read.csv)默认将一列文本自动转换为因子(factor)。随后操作该列数据时,会假定所允许的值局限于先前已导入的值。此时赋值一个新的文本值,将会触发警告,并生成NA(即缺失值)。

本节要点

· 在软件中,数据通常按类型分类。

· 数据类型包括连续型数据、离散型数据、分类数据(其中包括二进制数据)和有序数据。

· 数据分类为软件指明了数据的处理方式。

拓展阅读

· 数据类型有时会令人困惑,因为各类型间会有一些重叠,而且不同软件的数据分类可能各有不同。R Tutorial网站给出了R语言使用的分类方式。

· 数据库有更详细的数据分类方式,其中考虑了精度级别、固定长度或可变长度字段等因素。参见W3Schools的SQL指南。