第二章 数据
2.1数据释义
2.1.1 数据基础
(1)结构化数据 IT系统产生的数据,一般根据数据结构模型分为结构化数据、半结构化数据和非结构化数据。大部分关系型数据库中存储的数据,有着优良的存储结构,我们称之为结构化数据。
大部分结构化的数据可以简单的用二维形式的表格存储。如下图的表格,一般以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的,它记录了人员的姓名、年龄和性别以及编号:
![《DataFocus 数据可视化》第二章 数据](/images/6/6f/Image031.jpg)
结构化数据的存储和排列是很有规律的,也便于查询、修改等。但是,它的扩展性并不好。比如,上图的表格中,如果要临时增加一个身高的字段,就不能直接记录,必须先修改表格的结构,才能办到。
(2)半结构化数据
半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序也并不重要。常见的半结构化数据有XML和JSON,下图为两个XML格式的数据记录:
第一个:
第二个:
从上面的例子中可以看到,记录,属性的顺序是不重要的,属性的个数也可以是不一样的。这些半结构化数据的结构类似树或者图。上图可以看出, person
标签是树的根节点,name
和gender
标签是子节点。通过这样的数据格式,可以自由地表达很多有用的信息,包括自我描述信息(元数据)。所以,半结构化数据的扩展性是很好的。
(3)非结构化数据 顾名思义,就是没有固定结构的数据。各种文档(如word、pdf、ppt)、图片(Jpeg、png、gif等)、视频/音频等都属于非结构化数据。对于这类数据,我们一般采用二进制的数据格式直接整体进行存储。
![《DataFocus 数据可视化》第二章 数据`](/images/8/88/Image034.jpg)
非结构化数据分析起来难度大,也不那么直观,比如视频、音频数据,或一些文件、网页等等,这些数据一般存储在NoSQL数据库或者文件存储系统中。本书讨论的数据可视化,主要是指结构化数据的可视化。
2.1.2 结构化数据的类型
结构化数据的字段类型简单来分,可以分为数值型(Measure)数据和非数值型(Attribute)数据。其中,数值型数据是可度量的数据,比如记录的“学生成绩”或者“销售收入”,可以用来求和,计算平均值、最大值或最小值等。
非数值型数据又称为属性数据。可以细分为字符串(String)类型、日期时间(Timestamp)两大类。字符串一般用来表达多种类别,如“男”“女”;或者“广东省”、“浙江省”等等。字符串类型的数据是不能进行求和(Sum)等计算的,但是可以用来计数(Count)或计算分布。日期时间是一种特殊的属性数据,有顺序和周期的特性。时间序列往往支持一些特殊的聚合操作,比如可以对日期时间数据按周、月、季度、年进行统计。
结构化数据的类型概念非常重要,在接下来的可视化分析章节中,我们将看到DataFocus系统需要有效识别数据类型,才能合理的做出数据分析和可视化呈现。
2.1.3 数据科学及过程
和大多数数据分析业务一样,数据可视化也非常注重科学实践。好的数据分析方法往往能事半功倍。通常,要让数据可视化项目获得成功,分析人员必须分五个步骤进行:
- 定义问题
- 获取数据
- 数据建模
- 探索数据
- 可视化和分享结果
其中,大部分人可能会认为第一步是最简单的一步。但定义问题往往是最困难的部分,也是最重要的部分。问题决定了你的工作方向,因此多花点儿时间把问题定义清楚总是值得的。
一旦你确定了需要关注的问题,接下来就需要全力收集回答上述问题所需要的数据。数据可能来自多个数据源,唯有全面收集到需要的数据,才能为解决问题奠定基础,所以这一步非常具有挑战性。
有了数据以后,应用我们所学的知识,将现有数据进行归类整理,将一些结构不规范,零散的数据进行清洗、关联,创建数据模型,为后续使用DataFocus进行分析创造条件。
接下来,就是发挥分析师逻辑思考能力和想象力的时候了。对数据进行有效的探索,逐步揭示出事务运行的规律,可以找到解决问题匙钥。探索分析过程往往需要大量的尝试和重复操作,这个时候,高效的探索分析工具显得尤为重要。
最后,将您的发现和成果有效进行展示和分享,是传达一整个数据分析项目价值的关键一步。分析结果也许看起来非常明显和简单,但将其总结为他人易于理解的形式比看起来困难得多,优美的可视化展示可以高效传达数据信息,提高成果交付率。
![《DataFocus 数据可视化》第二章 数据](/images/8/83/Image035.jpg)
2.2 数据获取
前面详细讨论了数据结构和分析方法,但就像大厨烹饪一定要花功夫准备好原料一样,优秀的数据分析工作的前提,是尽量充分的准备数据。一般情况下,可分析数据的来源有三种途径,一种是业务系统数据库中记录的数据,比如企业ERP、CRM、MES等系统中保存的数据;一种是本地的数据记录,如保存在本地电脑中的excel文件;还有一些外部数据源,比如通过爬虫程序从公开的互联网中收集的数据,或者通过API接口调用获取的外部数据如微博、twitter等数据。下面来看一看这几种数据在DataFocus中的接入方法。
2.2.1 系统数据
系统数据一般存储在业务系统的数据库中,DataFocus目前支持的数据库包括MySQL、Oracle、SQL server、PostgreSQL、SAP、Sybase等主流关系型数据库。数据库连接包含直接连接和导入数据两种类型。一般情况下,如果需要实时查询的数据,通过直接连接方式接入;数据量较大的,时效性要求不高的数据可以通过导入数据方式,将数据库中的对应数据抽取到DataFocus自带的大数据仓库中再进行分析。配置好数据库的连接关系,就可以从业务系统的数据库中抽取数据表了。
![《DataFocus 数据可视化》第二章 数据`](/images/3/3f/Image036.jpg)
2.2.2 本地数据
DataFocus中支持的本地数据数据格式包括CSV、txt、json、xls等,如果数据文件不多,用户可以通过手工上传的方式,将数据导入DataFocus系统中:
![《DataFocus 数据可视化》第二章 数据`](/images/4/4e/Image037.jpg)
有很多企业,将生产经营产生的数据通过Excel收集、整理和汇总,保存在固定的文件夹中,这些数据已经形成了较好的规范,并且会持续更新。比如,记录销售情况的销售统计表,每周都会更新或新增到对应的文件夹中。对于这类持续产生大量excel表格的场景,DataFocus还提供了Excel同步工具,用户将需要同步的文件夹路径设定好,同步工具会自动将此类文件同步到DataFocus系统中。
2.2.3 填报数据
企业经常有一些临时需要进行统计分析的数据,DataFocus提供了简单数据填报的功能,用户可以自行设计填表表单,分配给不同用户进行填写,也支持通过互联网发布填报页面,这种场景一般用于调查统计表的填写。简单填报不支持复杂的流程,但有简单的提交、审核、退回机制。
![《DataFocus 数据可视化》第二章 数据`](/images/e/e1/Image038.jpg)
2.2.4 外部数据源
用户通过爬虫获取的外部数据,需要自行清理成excel表格的形式,自行导入到DataFocus系统中,如果爬虫数据的获取和清洗能够持续更新的话,也可以通过DataFocus的Excel同步工具完成自动同步。未来DataFocus还将开发API接口,供用户自定义外部数据的对接。
2.3 数据处理
2.3.1 数据处理
数据整合是把在不同数据源的数据收集、整理、清洗,转换后加载到一个新的数据源,为数据消费者提供统一数据视图的数据集成方式。如, 在DataFocus中的整合方式为集成为数据仓库,并支持三种方式的数据整合:
- 用户将本地的数据直接导入系统。
- 将企业数据库中的数据表导入系统。
- 直连企业数据库。
用户可以根据自身数据类型,选择某种或采用组合方式将数据引入DataFocus系统数据仓库内,即前两种方式,查询分析时直接从系统内存内调取,由于DataFocus内含的高速内存计算引擎,实时计算的响应速度非常快,建议数据量较大的时候采用这种方式;或者通过第三种方式让系统直接访问企业数据库进行查询,将查询结果返回到系统中进行可视化显示,这种方式常用于数据量较小、且对实时性要求很高的使用场景,并且实施的查询效率非常依赖于业务数据库的性能。在基本的数据构建起来以后,数据仓库还要支持对数据进行合并、共享、预处理、关联,建立起一个灵活可用的企业应用。
![《DataFocus 数据可视化》第二章 数据`](/images/f/f4/Image039.jpg)
DataFocus数据仓库示例
![《DataFocus 数据可视化》第二章 数据`](/images/3/32/Image040.jpg)
DataFocus数据仓库内数据关系示例 一个成熟的数据整合功能,一般需要考虑以下几点:
- 对各类数据源的支持程度。
- 抽取、装载数据的效率和对业务系统(这里主要指数据分析系统)的性能影响程度。
- 数据整理清洗的功能全面与否。
- 是否有严谨的数据权限控制机制与调度机制。
一个合格的数据整合流程,不仅要覆盖到涉及到的数据来源,更要有远见的设想到后续的数据的处理清洗和分析需求,才能从根基上支持一个优秀的数据可视化项目的实施。
2.3.2 数据清洗
之前在数据整合章节提到,在数据整合完成后,要考虑到后续的数据清洗步骤,那么什么是数据清洗呢?
既然说到清洗,那么对应着就有需要进行清洗的“脏”,数据清洗就是对数据进行审查校验,利用有关技术转化错误、重复、不完整、冲突的“脏数据”为满足要求的高质数据。尤其是在建立数据仓库的过程中会从多个业务系统中年抽取而来的、甚至时间跨度较大的多个版本的数据,避免不了会出现大量的“脏数据”。
清洗分为两种,一种是由计算机遵循一定的规则对数据进行校验,自动对数据进行一致性检查和无效值、缺失值的处理,还有一类就是需要筛选过滤掉那些不符合要求的数据,因为这一部分可能会影响分析结果的准确性,需要人工依据数据和场景进行筛选过滤了。数据分析系统中所说的数据清洗大多是指第一种,后一种更倾向为成为ETL模块(DataFocus支持两种清洗方式)。
一般来说,数据清理是将数据精简以除去重复记录,并使剩余部分转换成标准可接收格式的过程。数据清理标准模型是在数据导入过程中,通过一系列步骤“ 清理”数据,然后以期望的格式输出清理过的数据。数据清理从数据的准确性、完整性、一致性、惟一性、适时性、有效性几个方面来处理数据的丢失值、越界值、不一致代码、重复数据等问题。
![《DataFocus 数据可视化》第二章 数据 DataFocus数据导入清洗`](/images/b/b4/Image041.jpg)
数据清理一般针对具体应用,因而难以归纳统一的方法和步骤,但是根据数据不同可以给出相应的数据清理方法。
1.解决不完整数据( 即值缺失)的方法
大多数情况下,缺失的值必须手工填入( 即手工清理)。当然,某些缺失值可以从本数据源或其它数据源推导出来,这就可以用平均值、最大值、最小值或更为复杂的概率估计代替缺失的值,从而达到清理的目的。
2.错误值的检测及解决方法
用统计分析的方法识别可能的错误值或异常值,如偏差分析、识别不遵守分布或回归方程的值,也可以用简单规则库( 常识性规则、业务特定规则等)检查数据值,或使用不同属性间的约束、外部的数据来检测和清理数据。
3.重复记录的检测及消除方法
数据库中属性值相同的记录被认为是重复记录,通过判断记录间的属性值是否相等来检测记录是否相等,相等的记录合并为一条记录(即合并/清除)。合并/清除是消重的基本方法。
4.不一致性( 数据源内部及数据源之间)的检测及解决方法
从多数据源集成的数据可能有语义冲突,可定义完整性约束用于检测不一致性,也可通过分析数据发现联系,从而使得数据保持一致。目前开发的数据清理工具大致可分为三类。
数据迁移工具允许指定简单的转换规则,如:将字符串“female”替换成“女”。
数据清洗工具使用领域特有的知识( 如,邮政地址)对数据作清洗。它们通常采用语法分析和模糊匹配技术完成对多数据源数据的清理。
数据审计工具可以通过扫描数据发现规律和联系。因此,这类工具可以看作是数据挖掘工具的变形。
2.4 数据分析
2.4.1 搜索分析
要说搜索式分析,就要先提到拖拽式分析。 拖拽式分析是目前敏捷型数据可视化产品中的主流交互方式,将一系列的sql语句具现化为拖拽的操作,比如取数过程转化为拖拽字段,构建图表则是将相应的字段拖到界面对应的轴位置。拖拽操作的特点就是将图表画布分割成若干个区域,在各个区域放置绘制图表的对应参数,再由用户将对应的字段放置到对应的参数区域中去,这样的优点是一定程度上实现了敏捷性和易用性,组件位置自由,可控性高,数据结果逻辑清晰,可视化效果更精致,缺点则是组件较多操作繁复,对使用者对数据库思想和数据结构理解要求较高。
![《DataFocus 数据可视化》第二章 数据](/images/2/27/Image042.jpg)
而搜索式分析是新兴的数据可视化交互方式,国内首家中文搜索式分析BI产品就是杭州汇数智通的DataFocus系列。
搜索式分析是运用了类自然语言搜索技术,结合关键词系统,系统智能地按一定的语言规则将类自然语言结构的数据问题转化为sql语句进行查询,返回相应的图表,相比拖拽式交互,搜索式分析的优点是易用性更高,自服务程度更高,交付周期短,适用人群更广泛,学习成本大幅降低,,从而可以将更多的精力用在推敲业务逻辑上,做出更深入的数据分析报告。
![《DataFocus 数据可视化》第二章 数据](/images/4/4f/Image043.jpg)
那么这两种交互在具体实现可视化效果方面究竟有哪些不同呢?
1、实现复杂分析场景的复杂度不同
某两款产品能实现的复杂分析操作范围是产品本身的开发度不同,但针对同一复杂操作,搜索式分析产品是明显优于拖拽型的。略举几个场景来说:
a. 不同年份销售额对比问题
年份 | 年份 | 利润 |
---|---|---|
2014 | 4563189 | 3650551 |
2015 | 4923946 | 3939157 |
2016 | 5413846 | 4331077 |
2017 | 5913986 | 4731189 |
2018 | 6821692 | 5457354 |
如上图所示的数据表,想做出“2018年和2016年的销售额对比”这一分析拖拽式分析需要进行多次数据筛选甚至数据处理建立新的数据集才可以实现,而搜索式分析只需要提出明确的问题即可,比如在DataFocus系统中只要输入“‘2016’VS‘2018’销售额”,系统即会自动返回2018年和2016年的销售额对比。
b. 同比环比问题
同比环比经常用在销售业绩的相关分析中,用来反映逐期发展速度和同期逐月发展趋势。同理,这一分析在拖拽式分析中需要进行数步复杂处理,而在搜索时分析中只需要在搜索中加入同比/环比关键词即可直接实现。
c. 相关问题
不同日期维度分析是一个由来已久的分析场景,这一点上各个BI产品都有做专门的设计,拖拽式分析通过更改聚类可以直接转化年/季/月/周的日期维度,操作也十分便捷;但相较于拖拽式,搜索式在这一功能上进一步深入设计,不仅可以实现不同聚合方式,还支持某个日期之前/按每周七天统计/接下来数月/前数月/本月截止目前等等复杂多变的日期关键词,在该功能上的完成度是远超拖拽式的。
2、辅助分析功能的独特性
一般的拖拽式分析,在探索分析的辅助功能上是很有局限性的,因为构建图表的过程完全交给用户,用户在分析过程中需要自行去思考数据结果和展现方式,除了对组件的作用进行简单提示外,并没有提示的空间。
而搜索式分析更在意拉业务逻辑的思考,因此在搜索语句的输入过程中,每一步都可以对用户进行辅助,比如关键词提示/后续输入提示/语句语法检测/常用查询语句与智能预测查询语句等等,辅助输入的同时可以智能的给用户提示分析思路。
![《DataFocus 数据可视化》第二章 数据](/images/1/11/Image044.jpg)
3、图表自动适配的不同
作为搜索式分析,不会像拖拽式一样分组件区域由用户来规定作为轴和图例的字段,而是需要自动去识别对应字段,选择合适的图表类型显示,所以在智能选择图表这一功能上有着一定的优势,自动适配的优化更好。
4、学习成本的差异
拖拽式分析需要用户熟悉各个组件的功能和操作步骤,以及复杂分析配套的Sql语句/脚本/R语言模块,需要一定的编程基础,以及对系统逻辑的熟悉度。一般的学习时间在两到四个月之间。
而搜索式分析的成本显然是比拖拽式要低上许多的,同样需要对系统功能的熟悉,在此基础上,仅需要不到一周左右的时间去熟悉搜索语句的要求和配套的关键词与公式就可以开始进行数据分析了。这一点对企业进行员工培训来说是相当节约成本的,上手速度更快也会更快的带来效益提升和业务升级。
5、自助性差异
BI普及的关键概念之一就是自助性的升级,将数据分析依赖于IT部分的局限性限制了数据分析的敏捷性,将数据分析分散至业务人员可以有效的提高整体业务的效率,而主要影响因素就是系统的易用性以及权限的严谨性。搜索式分析的易用性从以上几点来看是优于拖拽式的,无疑比拖拽式更适合用于自助BI产品。
6、可视化效果实现
但是探索式分析在可视化流程上是不同于拖拽式的。
拖拽式的组件细分设计模式,使得可视化的过程分步可控,在分析的过程中做出漂亮的可视化效果。而探索式追求的智能化和业务与技术剥离的效果,一般是先展现数据分析的结果可视化效果,再进行图表可视化细节的设计。因为交互方式的本质区别,使得拖拽式BI在功能上更倾向于效果可视化工具,而搜索式BI更注重商业智能工具,孰优孰劣就取决于用户的使用目的了。
2.4.2 增速分析
在业务分析中,在时间上的业务发展速度是必要的分析指标。一般可分为同比增速、环比增速、定基比增速。增长速度可以是正数,也可以是负数。正数表示增长,负数表示降低。在传统的数据分析中,我们需要添加相应的公式计算出环比、同比、定基比,然后再选择合适的图形进行可视化,一般比较常用折线图和瀑布图。在DataFocus中,可以通过简单的搜索,即时可视化。 (1) 环比 环比一般指N期水平与N+1期水平或N-1期水平对比,通常分为日环比、周环比、月环比和年环比。 在DataFocus中输入【按XX(日期信息列)计算的XX(数值列)的总和(聚合方式)的X(周/月/年等)增长率】,输入“按”时,系统会智能提示后续输入,进行选择即可。例如下图,输入相关字段后,系统智能根据分析结果呈现瀑布图。
![《DataFocus 数据可视化》第二章 数据](/images/6/6e/Image045.jpg)
(2)同比 同比一般指第N年本期发展水平与第N-1年同期发展水平的对比。 DataFocus中,在环比关键词搜索的基础上加入“与往年同期相比”即可得到同比可视化图形。
![《DataFocus 数据可视化》第二章 数据](/images/a/ab/Image046.jpg)
(3)定基比 定基增速也称总速度,是报告期与固定基期水平之比,表明在较长时期内该现象的总的发展情况。 在DataFocus中,使用公式添加基比信息列,然后在搜索框中搜索该信息列名称即可呈现结果可视化图形。
![《DataFocus数据可视化》第二章 数据](/images/8/86/Image048.jpg)
由此可以看到,三种增速的比较,最大的区别体现在两个方面。一是对比基数不同,同比的对比基数是上年的同一期间的数据,环比的基数是上一期间的数据,而定基比的基数则是固定的;二是则重点不同,环比侧重反应数据的短期趋势,会受到季节等因素的影响,同比倾向于侧重反映长期的大趋势,规避了季节的因素,而定基比侧重表现现象在较长时期内总的发展速度。同比环比的使用场景比较容易理解,定基比我们举个例子,比如“九五”期间各年水平都以1995年水平为基期进行对比,一年内各月水平均以上年12月水平为基期进行对比。另外需要注意的是,环比可以与环比相比较,不能将同比与环比相比较,但在一般业务分析中,考虑时间纵向上发展趋势时,需要把同比和环比放在一起对照。
2.4.3 异常值分析
一般来说,日常监控的数据指标都有其固定的波动周期,周期内的数据变化相对趋于稳定,如果某个时间的数据不再符合预期的稳定变化,数据异常就出现了。数据异常的分析是必要的,往往能够通过异常分析发现未知的机遇和风险。 数据分析中的异常值分析通常使用箱型图分析。箱型图包含六个数据节点,包括上边缘、上四分位书、中位数,下四分位数,下边缘和异常值。箱型图很形象的分为中心、延伸及分布状态的全部范围。箱型图依靠实际数据,不需要假定数据服从特定的分布形式,判断异常值的标准以四分位数和四分位距为基础,识别异常值的结果比较客观。 箱型图除了可以识别数据异常值,还可以粗略估计数据的分布偏态和尾重的部分信息。在几批数据并行排列时,可以比较集中数据的形状。 在DataFocus中选择目标信息列,转换图形为箱型图就可以查看信息列的异常值情况。从下图中可以看到有两个离群点,这两个月的销售数量极其高,后续可以进行进一步分析为什么会发生这种情况。
![《DataFocus 数据可视化》第二章 数据](/images/2/26/Image049.jpg)
2.4.4 平衡分析
平衡分析是分析事物之间相互关系的一种方法。盈亏平衡分析的全称为产量成本利润分析。盈亏平衡分析用来研究企业在经营中一定时期的成本、业务量和利润之间的变化规律,从而对企业利润进行规划。 成本、收入、利润之间存在的关系: 总成本=固定总成本+单位变动成本*销售量 销售收入=单位价格*销售量 利润=销售收入-固定总成本=单位价格*销售量-(固定总成本+单位变动成本*销售量)=(单位价格-单位变动成本)*销售量-固定总成本 盈亏平衡点是最尝用到的分析指标。当利润为0时,企业处于盈亏平衡,即收入等于成本;当利润小于0时,企业处于亏损状态,即收入小于成本;当利润大于0时,企业处于盈利状态,即收入大于成本。 盈亏平衡点::Q=F/(P-Cv) (其中,P—产品销售价格 F—固定成本总额 Cv—单件变动成本 Q—销售数量 Y—收入 ) 通过公式之间的灵活转换,就可以通过销售量,判断企业能否盈利,盈亏多少。 盈亏平衡分析的最主要功能是在于解释为了规避经营损失的最低产出水平。在制定价格和决定边际利润之后,盈亏平衡点就成了盈利水平的最后保障。因此,企业在经营管理中,把握好盈亏平衡点非常重要。 在DataFocus中添加目标公式列,双击搜索相关信息列即可呈现平衡分析可视化。图中呈现的即是每天盈亏平衡点的销售量。
![《DataFocus 数据可视化》第二章 数据](/images/4/45/Image050.jpg)
2.4.5 二八法则
巴莱多定律(也叫二八定律)是意大利经济学家巴莱多在19世纪末20世纪初提出的,因此也命名为帕累托法则。他认为,相对少量的原因通常造成大多数的问题和缺陷,即80%的问题是由20%的原因导致的。反过来,在实际生活中,我们看到,例如20%的产品带来了企业80%的利润,所有产品中,最重要的也许只有那20%。二八法则在保险经营、人员关系、客户管理、股票等场景中均有应用。 在数学上,帕累托图在概念上与二八法则有关,因此帕累托图用于汇总各种类型的数据,并进行80/20分析。帕累托图按照发生频率大小顺序绘制直方图,表示有多少结果是由已确认类型或范畴的原因所造成。它是将出现的质量问题和质量改进项目按照重要程度依次排列而采用的一种图表。可以用来分析质量问题,确定产生质量问题的主要因素。 “二八法则”非常适用于目前这个信息高速膨胀的互联网时代。为了能更高效地利用企业的诸多渠道资源——时间、成本、宣传渠道等,产生更多的利润价值和社会竞争力,二八法则的其综合能力发展的“势”和经营管理的“道”。 如果要绘制帕累托图的话,可以在excel里建个表格,然后填入数字,然后插入图表。在DataFocus中直接搜索相关信息列,选择帕累托图即可。
![《DataFocus 数据可视化》第二章 数据](/images/f/f8/Image051.jpg)