【蜘蛛智链】包装供应链公司_包装盒批发定做厂家

数据分析的准备:从问题分析到数据清理

刘雪华 586680

本文介绍了数据分析前的准备工作,分为四个部分:一是问题的分析,二是数据的收集,二是数据的预处理,三是数据的前期分析。

让我们回顾一下前几天,我们学过的数据分析框架:

今天,我们开始详细拆解框架:

今天我来介绍一下数据分析前的准备工作,分为四个部分:一是问题分析,二是数据收集,二是数据预处理,最后是数据预分析。

首先是问题的分析:

问题的分析并不是我今天要讲的重点,但是为了框架的完整性,我今天就简单介绍一下。就问题本身的分析来说,人类的知识体系在这方面积累了很多智慧和经验。

其中积累了维特根斯坦的语言哲学分析,诺贝尔奖获得者西蒙的满意决策理论,以及大量关于宗教哲学和政治的标准和价值的讨论。任何纬度的叙述都有可能穷尽一个人的人生经历。所以今天只能讲到这里,给大家简单介绍一下。

关于问题的提出

首先是提出问题。

问题可能来自老板或同事。公司人际关系的分析不是我们讨论的重点。当然,这在实际工作中尤为重要,因为每个人的精力都是有限的。但是,每个人面临的任务其实是无限的。我们必须有选择地完成一些对我们和公司都很重要的项目。

首先,我们来看看。当我们面对一个问题时,我们在问什么?

很多时候,我们觉得当我们需要解决一个问题时,我们需要创造性地提供一个解决方案。实际情况可能和我们的常识不太一样。

我们可以想象这样一个场景:

通常,在回答一个问题之前,你必须提出那个问题。或者打个比喻,你要找的东西一定是已经失去的东西。

但这是真的吗?当一个人发现了一条黄金矿脉,自然就失去了吗?

如果我们能找到我们从未丢失的黄金,我们也许能回答我们从未问过的问题。

现实中,我们在面对一个问题的时候,往往需要自己去寻找解决方案,而不是去创造一个解决方案,所以我们工作的重点应该是如何与我们现有的积累形成联系,或者用更数学的语言来描述。如何将现实问题映射到我们的模型空应该是我们的重点。

关于问题种类的分析

有对问题类型的分析。我们先来看看为什么要分析题型。现实中我们面对的是现实问题,其表现形式可能是千变万化的。但是我们的资源有限,不可能每个问题都积累经验,建立模型。我们只能对一些有重要特征的问题建立模型空。

所以我们在面对一个问题的时候,首先要看问题,它本质上在说什么,它的标准形式是什么。

在这个过程中,我们要做的第一步就是剥离自然语言。这很容易理解。当我们说话时,语言中有许多多余的成分。我们要做的第一件事就是删除这些多余的成分,然后用我们的标准名词代替我们的一些似是而非的名词。做完自然语言,我们就更容易发现一个问题的本质。

举个例子,也许大家会更好理解。比如,甲方父亲给了我们一个需求:我们公司最近遇到了一件特别闹心的事。活动一举办,活跃用户就少了。我们赶时间。请过来帮我们看看Balabala。

上面这段翻译成:持有活动与活跃用户的相关性分析。

用set语言和系统气泡图重新描述问题。把复杂现实情境中的一个问题变成几个研究对象之间以及这些研究对象之间的关系问题。

当作品到了这个阶段,我们已经可以清楚地看到一个问题的范畴了。一般来说,世界上所有的问题大致可以分为三类:

首先是一类探索是什么的问题,也就是关于一些科学性的问题。这一类问题的核心特征是科学研究中对准确率要求非常高,一般要达到99.7%以上。在工作中,要求可能并不需要这么高。还有一类问题是关于为什么的问题,也就是关于一些价值评价标准的问题。日常所说的宗教哲学政治探讨的问题,都属于这个范畴。这个问题的特征是特别讲究多远,从本质上来看,各个价值观之间它们是没有可比性的。然而这只是理论上的,实际生活中还是会看到很多大家因为不同价值观真的面红耳赤的情况,这一类问题在研究过程中非常体现的是组织的价值观,还有上级的价值观。还有一个问题是关于怎么办的问题,这一类问题本质上是属于一类工程问题。在这类问题中我们要注意的是,我们并不是像求解第一类是什么问题,要追求极高的准确率,我们追求的是在资源有限的情况下,我们如何把一件事情做到流畅,也就是60分到80分的样子。也就是说在大多数的时候,我们求解的不是最优解,我们求解的仅仅是一个满意解而已。 现实生活中我遇到遇到的本质性的三类问题,其他任何问题都可以转化为这三类问题,或者转化为这三类问题的组合。

这三类问题在模型空中也有标准的对应形式。探索价值观的问题,本质上是一种标记或分类问题。对它是什么的探索,往往是一种预测相关性问题。做什么的工程问题,本质上是一个过程描述模型和概率描述模型的问题。

对问题边界的边界分析

问题的边界分析就是问题解决后我们能达到的最佳效果是什么,问题不解决最坏的结果会是什么。

为什么要对问题进行边界分析?因为在我们的工作中,我们面临的大部分问题都是在给定的约束下寻求满意的解决方案,因为给定资源约束,我们也给出了能力的边界。

从更深的角度来看,一个工程问题的最优空区间总是有限的。

为什么呢?

因为本质上,首先问题的度量存在较大误差,然后图灵机极限/哥德尔不完全定理/摩尔定律这些底层定律都定义了工程问题优化的边界。所以,千万不要用科学的态度和方法对待工程问题。

那么我们如何分析问题的边界呢?这里有一个参考思路。我们在工作中经常面临三个限制:时间/质量/成本;我可以选择一个必须符合要求的,然后调整另外两个的关系。

比如我们现在需要在假期前完成一些周作业/考试/谈恋爱等项目。首先要把握主要因素:时间,必须在节前完成,然后就是质量和成本的关系。就成本而言,我们可以削减一些项目。比如,比起交作业和考试,我们可以忘掉谈恋爱。质量上,追求中等质量,作业不回,考试不及格。

数据收集:

数据采集分为两部分:内部数据读取和外部数据采集。今天主要讲内部数据读取。

内部数据收集1. 数据库种类

关系数据库是指使用关系模型组织数据的数据库。关系模型是由IBM研究员E.F.Codd博士在1970年首次提出的。在随后的几十年中,关系模型的概念得到了充分的发展,并逐渐成为主流数据库结构的主流模型。

简单来说,关系模型是指二维表模型,关系数据库是由二维表及其关系组成的数据组织。

关系数据库最大的特点是事务的一致性:关系数据库传统的读写操作是事务性的,具有ACID的特性,这使得关系数据库几乎可以用在所有要求一致性的系统中,比如典型的银行系统。

然而,在web应用中,尤其是SNS应用中,一致性并不那么重要。用户A看到的内容和用户B看到同一个用户c的内容更新不一致是可以容忍的,或者说,两个人看到同一个好友的数据更新的时间差是可以容忍几秒钟的。所以关系数据库最大的特点在这里没用,至少没那么重要。

相反,关系数据库为了保持一致性所付出的巨大代价是其糟糕的读写性能。而微博、facebook等SNS应用对并发读写能力的要求极高,关系型数据库无法应对(在读取方面,传统上,为了克服关系型数据库的缺陷,提高性能,需要在静态网页上增加一级memcache。

然而在SNS中,变化如此之快,以至于memchache对此束手无策。)因此,必须用一种新的数据结构存储来代替关系数据库。

关系数据库的另一个特点是有固定的表结构,所以扩展性极差。而在SNS中,系统的升级和功能的增加往往意味着数据结构的巨大变化,关系数据库难以应对,需要新的结构化数据存储。

因此,非关系数据库应运而生,因为一个结构化的数据存储不可能满足所有新的需求。因此,非关系数据库严格来说不是数据库,而是结构化数据存储方法的集合。必须强调的是,数据的持久化存储,尤其是海量数据的持久化存储,还是需要一个老牌的关系数据库。

2. 数据库读取工具

SQL概述

结构化查询语言(简称SQL)(发音:/esk yuel/& # 8220;s-Q-L & # 8221;),专用编程语言,是一种数据库查询和编程语言,用于访问数据、查询、更新和管理关系数据库系统,也是数据库脚本文件的扩展。

结构化查询语言是一种高级非过程化编程语言,允许用户处理高级数据结构。它不需要用户指定数据存储方式,也不需要用户知道具体的数据存储方式,因此底层结构完全不同的不同数据库系统可以使用相同的结构化查询语言作为数据输入和管理的接口。结构化查询语言语句可以嵌套,这使得它非常灵活和强大。

SQL语法摘要:

(选择全部)SELECT * from celebs;(创建表格)CREATE TABLE celebs (id INTEGER, name TEXT, age INTEGER); (插入行数据)INSERT INTO celebs (id, name, age) VALUES (1, ‘Justin Bieber’, 21);(选择某列)SELECT name FROM celebs;(更新信息)UPDATE celebs SET age = 22 WHERE id =1;(添加表列)ALTER TABLE celebs ADD COLUMN twitterhandle TEXT;(处理缺失值)DELETE FROM celebs WHERE twitterhandle IS NULL;(多变量筛选)SELECT name ,imdbrating FROM movies;(唯一筛选)SELECT DISTINCT genre FROM movies;(条件匹配)SELECT * FROM movies WHERE imdbrating > 8;(文本部分匹配单)SELECT * FROM movies WHERE name LIKE ‘Seen’;(文本部分匹配多)SELECT * FROM movies WHERE name LIKE ‘a%’ ;(范围内的数据)SELECT * FROM movies WHERE name BETWEEN ‘A’ AND ‘J’;(与条件选择)SELECT * FROM movies WHERE year BETWEEN 1990 AND 2000 AND genre = ‘comedy’;(或条件选择)SELECT * FROM movies WHERE genre = ‘comedy’ OR year < 1980;(排序)SELECT * FROM movies ORDER BY imdbrating DESC;(选取前几个)SELECT * FROM movies ORDER BY imdbrating ASC LIMIT 3;(计数)SELECT COUNT(* ) FROM fakeapps;(条件计数) SELECT COUNT(* ) FROM fakeapps WHERE price = 0;(分组计数)SELECT price ,COUNT(*) FROM fakeapps GROUP BY price;等等等。

蜂巢概述

Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射到一个数据库表中,提供完整的sql查询功能,将sql语句转换成MapReduce任务运行。它的优点是学习成本低,简单的MapReduce统计可以通过类SQL语句快速实现,不需要开发专门的MapReduce应用,非常适合数据仓库的统计分析。

Hvie IE是基于Hadoop的数据仓库基础设施。它提供了一系列可用于数据提取、转换和加载(ETL)的工具,ETL是一种可以存储、查询和分析Hadoop中存储的大规模数据的机制。

Hive定义了一个简单的类似SQL的查询语句,名为HQL,允许熟悉SQL的用户查询数据。同时,这种语言也允许熟悉MapReduce的开发者开发定制的mapper和reducer来处理内置mapper和reducer无法完成的复杂分析工作。

Hive采用SQL查询语言HQL,所以很容易理解Hive是一个数据库。其实从结构上来说,Hive和数据库除了查询语言相似之外,没有任何相似之处。

本文将从多个方面阐述Hive与数据库的区别。数据库可以用于在线应用,但是Hive是为数据仓库设计的。了解这一点,有助于从应用角度理解Hive的特点。传统数据库都使用SQL语句,而Hive使用HQL语句。在大多数情况下,添加、删除和检查的语句是相似的。因此,一般来说,如果你学习了SQL语句的语法,你也将学习HQL语句。

外部数据收集

外部资料的收集往往是对我们资料收集的补充,有助于我们对问题有一个外部的大致了解。

优秀的数据源:

国家数据 - http://data.stats.gov.cn/index.htmCEIC - http://www.ceicdata.com/zh-hanswind(万得)- http://www.wind.com.cn/搜数网 - http://www.soshoo.com/中国统计信息网 - http://www.tjcn.org/亚马逊aws - http://aws.amazon.com/cn/datasets/?nc1=h_ls 来自亚马逊的跨科学云数据平台,包含化学、生物、经济等多个领域的数据集。figshare - https://figshare.com/ 研究成果共享平台,在这里你会发现来自世界的大牛们的研究成果分享,同时get其中的研究数据,内容很有启发性,网站颇具设计感。github - https://github.com/caesar0301/awesome-public-datasets 如果觉得前面的数据源还不够,github上的大神已经为大家整理好了一个非常全面的数据获取渠道,包含各个细分领域的数据库资源,自然科学和社会科学的覆盖都很全面,简直是做研究和数据分析的利器。

数据预处理(数据清理):

数据清理–重新检查和验证数据的过程,目的是删除重复信息、纠正现有错误并提供数据一致性。

有三种主要类型:

(1)数据不完整

这类数据主要是因为一些信息缺失,如供应商名称、分公司名称、客户区域信息缺失、业务系统中主表与明细表不匹配等。对于筛选出来的这类数据,根据缺失的内容,写入不同的Excel文件,提交给客户,要求在规定时间内完成。完成后写入数据仓库。

(2)误差数据

产生这类错误的原因是业务系统不够完善,接收输入后不经判断直接写入后台数据库,比如数值型数据输入全角数字字符,字符串数据后面有回车操作,日期格式不正确,日期越界等。

这种数据也要分类。对于数据前后类似全角字符和隐形字符的问题,只能通过写SQL语句来查找,等业务系统修改后再让客户提取。日期格式不正确或日期过期等错误会导致ETL操作失败。这些错误需要在业务系统数据库中用SQL挑出,提交业务主管部门限期改正,改正后再提取。

(3)重复数据

对于这类数据——尤其是维度表——导出重复数据记录的所有字段,供客户确认并整理出来。数据清洗是一个迭代的过程,不是几天就能完成的。只有不断发现问题,解决问题。

一般要求客户确认是过滤还是修正过滤后的数据。对于过滤后的数据,将其写入Excel文件或数据表。在ETL开发初期,可以每天给业务单元发送过滤后的数据的邮件,以提示他们尽快改正错误,同时也可以作为以后数据验证的依据。

在数据清理中要注意不要过滤掉有用的数据。每个过滤规则都应该经过用户的仔细验证和确认。

数据清洗方法

一般来说,数据清理是对数据库进行缩减以删除重复记录,并将剩余部分转换为标准可接受格式的过程。数据清洗的标准模式是将数据输入到数据清洗处理器中,通过一系列步骤对数据进行“清洗”,然后将清洗后的数据以想要的格式输出(如上图所示)。

数据清洗从数据的准确性、完整性、一致性、唯一性、及时性和有效性等方面处理缺失值、越界值、代码不一致、重复数据等问题。

数据清洗一般是针对具体的应用,很难归纳出统一的方法和步骤,但是可以根据不同的数据给出相应的数据清洗方法。

解决不完整数据( 即值缺失)的方法 大多数情况下,缺失的值必须手工填入( 即手工清理)。当然,某些缺失值可以从本数据源或其它数据源推导出来,这就可以用平均值、最大值、最小值或更为复杂的概率估计代替缺失的值,从而达到清理的目的。错误值的检测及解决方法 用统计分析的方法识别可能的错误值或异常值,如偏差分析、识别不遵守分布或回归方程的值,也可以用简单规则库( 常识性规则、业务特定规则等)检查数据值,或使用不同属性间的约束、外部的数据来检测和清理数据。重复记录的检测及消除方法 数据库中属性值相同的记录被认为是重复记录,通过判断记录间的属性值是否相等来检测记录是否相等,相等的记录合并为一条记录(即合并/清除)。合并/清除是消重的基本方法。不一致性( 数据源内部及数据源之间)的检测及解决方法 从多数据源集成的数据可能有语义冲突,可定义完整性约束用于检测不一致性,也可通过分析数据发现联系,从而使得数据保持一致。

目前开发的数据清理工具大致可以分为三类。

数据迁移工具允许指定简单的转换规则,如:将字符串gender替换成sex。sex公司的PrismWarehouse是一个流行的工具,就属于这类。数据清洗工具使用领域特有的知识( 如:邮政地址)对数据作清洗。它们通常采用语法分析和模糊匹配技术完成对多数据源数据的清理。某些工具可以指明源的“ 相对清洁程度”,工具Integrity和Trillum属于这一类。数据审计工具可以通过扫描数据发现规律和联系。因此,这类工具可以看作是数据挖掘工具的变形。数据清洗工具:Python简介

Python是一种计算机编程语言,一种动态的面向对象的脚本语言。它最初被设计用来编写自动化脚本(shell)。随着版本的不断更新和语言新功能的加入,它越来越多地被用于独立和大型项目的开发。

设计师在开发时总的指导思想是,对于一个具体的问题,只要有最好的解决方法。这在Tim Peters写的Python格言(称为Python的禅)中表达为:应该有一个& # 8211;并且优选只有一个。显而易见的方法。这与TMTOWDI(Perl & # 8217;做这件事的方法不止一种)恰恰相反。

Python的数据清理实现如所示:

Python学习的一点心理体会

Python学习是另一大模块。本质上,我们只是在学习如何使用Python包。新人最容易产生恐惧:我没学过任何语言。会很难吗?

其实我们只是把用来背软件操作的时间花在背代码上了,并没有什么很难解决的事情。我们只需要前期了解I/O是什么,后期可以学习中间原理,甚至可以跳过。

让我简单提两点注意事项:

输入法配置:搜狗输入法的英文状态,记得设置标点为英文.找有源码的教程:一边看,一边打。有源码很关键,因为有一个完全正确的对照,比较容易发现自己错误的地方。否则一处代码错误,可能是环境错误,可能是语法错误,可能是标点错误,可能是…..

数据的预分析:

数据的描述性统计分析:

描述性统计是指利用一般数据的制表和分类、图形和计算来描述数据特征的各种活动。描述性统计分析应对调查人群中所有变量的相关数据进行统计描述,主要包括频率分析、集中趋势分析、分散程度分析、分布以及一些基本的统计数字。

数据的频数分析:在数据的预处理部分,利用频数分析和交叉频数分析可以检验异常值。数据的集中趋势分析:用来反映数据的一般水平,常用的指标有平均值、中位数和众数等。数据的离散程度分析:主要是用来反映数据之间的差异程度,常用的指标有方差和标准差。数据的分布:在统计分析中,通常要假设样本所属总体的分布属于正态分布,因此需要用偏度和峰度两个指标来检查样本数据是否符合正态分布。绘制统计图:用图形的形式来表达数据,比用文字表达更清晰、更简明。

在SPSS软件中,很容易画出各种变量的统计图,包括柱状图、饼状图和折线图。

数据的相关性探索分析

数据是事实或观察的结果,是对客观事物的逻辑归纳,是用来表示客观事物的原始原料。数据可以是连续的值,如声音和图像,这些数据称为模拟数据。也可以是离散的,如符号、文字等,称为数字数据。

数据相关性是指数据之间的关系,如正相关、负相关等。数据相关性是指数据之间存在一定的关系。在大数据时代,数据关联分析因其快速高效地发现事物之间内在联系的优势而受到广泛关注,并在推荐系统、商业分析、公共管理、医疗诊断等领域得到有效应用。

数据相关性可以用时间序列分析、空区间分析等方法进行分析。数据关联分析还面临着高维数据、多元数据、大规模数据、增长数据及其可计算性等挑战。

不同的相关系数适用于不同测量尺度的变量:

Pearson相关系数(Pearson’s r):衡量两个等距尺度或等比尺度变数之相关性。是最常见的,也是学习统计学时第一个接触的相关系数。 净相关(partial correlation):在模型中有多个自变数(或解释变数)时,去除掉其他自变数的影响,只衡量特定一个自变数与因变数之间的相关性。自变数和因变数皆为连续变数。相关比(correlation ratio):衡量两个连续变数之相关性。 Gamma相关系数:衡量两个次序尺度变数之相关性。Spearman等级相关系数:衡量两个次序尺度变数之相关性。 Kendall等级相关系数(Kendall tau rank correlation coefficient):衡量两个人为次序尺度变数(原始资料为等距尺度)之相关性。Kendall和谐系数:衡量两个次序尺度变数之相关性。Phi相关系数(Phi coefficient):衡量两个真正名目尺度的二分变数之相关性。 列联相关系数(contingency coefficient):衡量两个真正名目尺度变数之相关性。四分相关(tetrachoric correlation):衡量两个人为名目尺度(原始资料为等距尺度)的二分变数之相关性。 Kappa一致性系数(K coefficient of agreement):衡量两个名目尺度变数之相关性。点二系列相关系数(point-biserial correlation):X变数是真正名目尺度二分变数。Y变数是连续变数。二系列相关系数(biserial correlation):X变数是人为名目尺度二分变数。Y变数是连续变数。可视化探索分析

数据可视化主要是通过图形化的手段,清晰有效地交流和沟通信息。然而,这并不意味着数据可视化一定因为其功能用途而乏味,或者因为其丰富多彩的外观而极其复杂。

为了有效地传达思想和概念,美学形式和功能需要齐头并进。通过直观地传达关键方面和特征,我们可以实现对相当稀疏和复杂的数据集的深入洞察。但设计师往往不能很好地把握设计与功能的平衡,从而打造出华而不实的数据可视化形式,无法达到其主要目的,即传达和交流信息。

推荐学习网站:博客园/知乎/网易云课堂/蜘蛛智能链社区/GitHub

最后,讲一个小故事:

在七十六岁时,爱因斯坦因腹主动脉瘤破裂导致内出血而被送往医院。这不是不治之症。医生建议立即动手术,但爱因斯坦拒绝了。

爱因斯坦说:“当我想离开的时候,请让我离开。一味的延长自己的生命是没有意义的。我已经做了我该做的。现在是离开的时候了。我想优雅地离开。”

我希望我们离开这个世界的时候也能这样说:我想优雅地离开。

作者:小琪爱数据,微信官方账号:小琪的成长故事

本文最初由@发表在《蜘蛛智慧链》上中中中中中中中中中数据。未经允许禁止转载。

图片来自Unsplash,基于CC0协议。