中企动力 > 商学院 > 数据的整理与分析
  • ?

    实用小贴士:Excel数据源整理六部曲

    武夜云

    展开

    Excel数据源是我们日常工作中最常使用的数据格式,在使用Tableau连接其做数据分析时,很多人会遇到这样的问题:打开的Excel跟想象的不太一样,甚至没办法直接用来做数据分析。因此,我们需要学习如何整理Excel数据源。

    为了更好的完成数据分析,Tableau通常建议您连接到未格式化的数据。也就是说,数据源可能是交叉表、聚合或包含其他无关信息。如果您的数据是这样的,就需要进行整理,因为Tableau无法查看或区分各个数据点与可能与数据相关的其他信息。

    在大多数情况下,如果您有这样的数据,您可以直接从Tableau连接到它,并使用数据解释器或其他清洁选项来解决数据的有问题的结构。少部分情况下,您可能需要在Tableau连接之前直接编辑Excel数据。

    以下是一些解决常见的格式问题的建议:

    >>>>

    以交叉表格式数据透视数据

    当数据格式化为交叉表格式时,表是列方向的。在面向列的表中,变量存储为列标题。但是,Tableau针对行向数据进行了优化。在面向行的表中,变量存储在行值中。

    例如,假设你有一个面向列的表格,它显示了小学生的数学,科学和历史分数。

    Tableau经过优化,可连接到面向行的表,其中数学、科学和历史值组织在名为“主题”的列下,每位学生的分数组织在名为“分数”的列下。您可以通过手动编辑Excel数据来旋转行中的列。或者,从Tableau连接到Excel数据,然后使用枢纽选项。

    删除预先汇总的数据

    数据往往可以预先聚合。也就是说,数据可以包含和、平均值、中位数等。预聚合数据的一个常见例子是小计和总计的形式。小计和总计数据从原始数据计算,但不是原始数据本身的一部分。

    例如,假设您有一个包含一小组小计信息的表。

    在这种情况下,需要删除预聚合的数据。要在分析中使用小计和总计,请从表中手动删除此类信息。然后,从Tableau连接Excel数据,并使用总计选项计算小计和总计。或者,从Tableau连接到Excel数据,打开数据解释器,然后使用总计选项。

    删除或排除介绍性文本

    作为报告传递的Excel数据可以包含介绍性文本的标题或块。由于Tableau希望在表的第一行中使用列标题或行值,所以在分析过程中可能会导致问题。

    例如,假设您有一个包含报表标题和日期的表。

    在这种情况下,需要删除标题和日期信息。要使用报告的标题和日期,请执行以下操作之一:

    从Excel数据手动删除此信息。然后从Tableau连接到Excel数据,并使用标题选项添加报告标题;

    从Tableau连接到Excel数据,打开数据解释器,然后使用标题选项;

    如果您无法从Excel数据中删除此信息,请创建命名范围并从Tableau连接到命名范围。

    将分层标题平铺到单个行

    一般来说,Tableau只希望Excel数据中的第一行包含列标题。包含多个列标题的数据在分析过程中可能会导致问题。

    例如,假设您有一个包含一个主标题和多个子标题的表。

    在这种情况下,标题的层次结构必须被平坦化或去除。为此,您可以直接在Excel数据中为层次结构中的每个标题手动创建一个新列。或者,从Tableau连接到Excel数据,然后打开数据解释器。验证您的标题是否正确平坦。

    确保没有空白单元格:如果为分层标题创建新列,请确保新列中的每个单元格都包含值。

    虽然您可能会为每一行重复相同的值,但重要的是每行都包含将数据与存储在分层标题中的数据相关联的数据。您必须手动从Excel数据中删除空白单元格。

    删除空白行

    要修复空白行,您必须从Excel数据中删除空行。

    添加缺少的标题

    确保没有丢失列标题。 要修复缺少的标题,您必须手动将丢失的标题直接添加到Excel数据。

  • ?

    差异数据的对比和整理

    Mercia

    展开

    在我们日常的工作中,常常会遇到很多结构相同,但来源不同的数据。有时,这些数据之间完全独立,互不重叠,例如各个分公司从自己系统中导出的销售数据;但有时,这些数据之间又会有大量的重叠,例如常见的一个完整业务流程中涉及的各个系统、各个环节,都可能根据各自收到的单据进行录入。这时,如何对这些重叠数据进行对比,从而发现和纠正其中的错误,就需要我们常说的“自动对账”操作了。

    在一般业务系统的设计开发中,这种对账功能的逻辑基本上都是通过循环遍历一套数据的记录,在另一套记录数据中逐一比对查找。虽然代码逻辑高度类似,但又常常因为比对所用关键字的差异,以及可能发生的需求变化而需要单独编写,最终导致开发成本居高不下,维护难度越来越大。

    现在有了集算器,类似问题的处理,就会变得直观而且便捷,因为集算器中提供了真正面向集合的各种运算。具体到差异数据的对比和整理,只需要sort()和merge()两个函数既可以了。

    我们以一个简化了的销售记录合并的例子来进行说明。

    下表显示的两个文件old.csv和new.csv分别代表预计销售的情况和实际销售的情况,都包含了销售人员姓名userName、销售日期date、销售额saleValue、销售数量saleCount。在业务分析时,需要分别找出新增的、删除的、修改的数据行进行分析,其中userName和date作为进行比对的关键字,也称为逻辑主键:

    可以看到new.csv中的第2、3行是新增的记录,可能对应额外成交的新订单,第4行是修改的记录,可能对应成交价格变化,old.csv中第3行是删除的记录,可能对应撤销的订单。

    传统逻辑的比对代码我们不再赘述,直接看一看在集算器中是如何处理的:

    没错,就这么几行,没有循环遍历,没有查询算法优化,而且如果比对的关键字变化了,只需要修改这么一目了然的几行。让我们从上到下捋一下:

    A1,B1:以逗号为分隔符读入文件,形成两个原始的数据集合。这里也可以从其他格式的文件或数据库的数据表中读取。

    A2,B2:使用sort()函数,将数据按照关键字,也就是逻辑主键排序,形成新的集合。以便后面的merge()函数使用。

    A3:查找新增记录,也就是关键字userName和date在集合B2中同时不在集合A2中,这就是集合的“差集”计算,是通过函数选项@d指定的,类似的还有并集@u,交集@i。计算得到一个新的集合“new”如下:

    A4:这次查找被删除的记录,也就是关键字userName和date在集合A2中但不在B2中的记录,注意merger()函数前方括号中A2、B2的次序不同。同样计算得到一个新的集合“delete”结果如下:

    A5:和A3一样,查找B2与A2的差集,但这次将所有字段都作为关键字,因此会找到所有变化的记录,包括修改过的和新增的记录。这个结果形成的新集合“diff”如下:

    A6:很明显“diff”集合中去掉新增的记录,也就“new”集合,就是被修改过的记录,对应的集合“update”如下:

    可以看到,在集合的概念下,记录的新增、删除、修改都有着直观的含义,无非就是新、老集合的不同部分,通过相应的集合运算可以非常方便的表示。

    这样计算得到的结果,除了可以在计算的IDE中查看,或者通过文件处理函数输出到文件中,还可以通过JDBC方式返回给 Java 程序或其他报表工具,代码中的 B6 就显示如何将这种对账处理的结果非常简单作为结果集返回给其他系统模块,下面是Java程序中使用这个结果集的示例:

    //建立esProc jdbc连接Class.forName(“com.esproc.jdbc.InternalDriver”);con= DriverManager.getConnection(“jdbc:esproc:local://”);//调用esProc,其中test是脚本文件名,可接收参数st =(com.esproc.jdbc.InternalCStatement)con.prepareCall(“call test()”);st.execute();//执行esProc存储过程ResultSet set = st.getResultSet();//获得计算结果

    可以看到,集算器处理差异数据,真正体现和“差异”的本质含义,也就是集合的差异。事实上,这种差异数据广泛存在与各种系统之中和不同系统之间,大到银行、运营商系统中的账目数据,小到个人文件系统中的查重和版本比较,只要明确了需要对比的数据集合和关键字,就可以灵活地通过集合运算进行各种整理工作了。

  • ?

    整理统计和分析客户数据是最关键的立身之本

    燕乐枫

    展开

    接着周六的话题聊,那么零售业呢?也许要好过一点。大家都在互联网+,都在线下实体店+线上平台。这时候所有人的目光都在朝线上流量聚焦——因为仿佛只有那里才是天空无极限的所在。

    互联网确实带来了流量,但是这个流量是站在行业维度甚至是整个商业领域维度计量的,就像是一条大河,沿途无数的水电站、灌溉渠和抽水机甚至木桶水瓢……挤满了取水的人群。那么,你如何能够撷取到更多一点?

    这时候我们看到微电商、各类工作室开始蜂拥,会员模式,分享模式,代理模式……自己资源能力不足就抱团,做异业联盟,做商户集成微平台。小程序甚至还没有经历成长期就已经泛滥。

    说实话,反正我是有点眼花缭乱了。很多东西超越了自己对商业理论的认知,所以不敢妄言,只能学习。我的习惯是一旦思维不清晰,就回到最基础的原点去推衍。

    说穿了,还是生意,还是赚钱。

    那么赚什么钱——自己能够匹配资源和能力的业务项目。

    拿服装零售来举例:

    对服装零售熟悉而且有进货渠道有目标客户,原则上就可以做服装。资金和运作能力都不太好,做做微店甚至根本不投资做个线上代理,也能赚点小钱;具备运作能力并且资金准备充足,可以做工作室,不再承担昂贵的店铺成本,服装销售很重要的客户线下体验环节同样能够满足甚至更好——工作室可以做很多氛围和情景布置,能够形成个人对个人那种朋友般的交流对接,某种程度上淡化了以往在店铺里那种纯粹的买卖关系的感觉,客户关系中添加了更多的“同理心“因素。当然,这对于商家自身的审美品位以及客户心理把握要求会更高。而这时候另外一个问题也随之而来:无论实体店还是网店微店工作室,理论上都是坐商,在”流量“为王的如今,能否有效地引流将成为胜负手。

    微信和小程序是目前最好的流量工具,但是有没有发现,已经不是太容易驾驭?打个比方:一条大河可以养育无数大鱼小虾,这时候无论钓鱼还是撒网,总是能够有收获的。而当某天河水不再纯净了,各种泥沙污水都涌了进来——这时候流量是巨大增加了,可是随之而来的垃圾糟粕有毒物质会怎样?会让大批鱼虾逃离和死去,剩下的变得小心翼翼神经衰弱甚至不敢轻易觅食,我们已经分明看到越来越多地人在选择性屏蔽朋友圈信息,在厌烦那些随时推送的小程序,在这样的生态环境之下,无论是“钓鱼“还是”撒网“,都变成技术性要求很高的事情。

    阿里的变化可能是一个风向标。

    2018年天猫GMV占到了阿里整体份额的47%,这意味着淘宝卖家的生态在急剧恶化,同时也意味着只有品牌商才能成为“好好活着“的那一批人。于是我们是否可以这样去理解:在微店、个人工作室等等这类体系里,要设法成为”品牌店“或者”品牌商家“——这里的品牌不是狭义的产品品牌,而是指营销特质。借用一个很新颖的说法:未来的零售将会是以消费者体验为中心的数据驱动的泛零售形态。这里面有几个关键词:体验、数据、泛零售概念。

    随意做点具象化说明:你的货品甚至可以和别人一样,但又要有所不同——也许是价格,也许是销售方式,也许是陈列展示上的独出心裁;你要能预见消费需求的变化和产生;你要随时关注客户数据,增加率/流失率;要分析客户结构,哪些总是买300元以内的东西哪些愿意接受价格更高点的商品,他们的比例结构是怎样?他们最集中的购物时间是在什么时候?等等等等。最后你还要懂得如何根据掌握到的数据来决定经营动作——目的只有一个,让客户始终愿意跟你保持关系。

    由此可见,无论你想做微店还是工作室,无论你处在哪个零售体系里,形成优秀差异化的客户体验,学会整理统计和分析客户数据是最关键的立身之本。具体的做法可能有一万种,因人而异,因商品属性而异,因经营思路而异。但当下已经不是那种全民皆可微商的概念了——不具备能力和思维,只能是江河里的泥沙。

  • ?

    数据整理太繁琐?MIT发布能化零为整的分析系统

    詹紫烟

    展开

    2016年美国CrowdFlower公司从业内80位数据科学家那里得到的调查结果显示,他们平均花费在数据收集和整理上的时间占到整个数据分析过程的80%,而只有余下20%的时间才是真正用来分析数据的。

    这就是我们通常所说的数据分析过程,其实有一大部分时间都用在了前期的数据的收集和整理上。那么收集和整理又为什么如此耗时呢?

    随着数字化和信息化的深入,目前的可用数据并非集中于一点,而是广泛分布在各种文件、电子表格、分布式数据库、数据湖和其他软件系统之中,数据科学研究者需要从各种渠道获取这些数据,过滤其中的有效部分,再将数据组织成便于处理的格式,这一系列的过程都需要耗费大量的精力和时间。

    为此,一支国际化的科研团队近期发布了一个全新的大数据分析系统——Data Civilizer,试图解决这一难题。该系统免去了一定程度的整理过程,可以自动识别不同数据表格之间的内在联系,并允许用户以类似查询数据库的方式直接操作这些零散的数据表格。更重要的是,用户还可以将这些查询结果重新组织成一个有序的新数据库,以便进行后续的分析和处理。

    这里之所以称Civilizer系统的研发团队是一支国际化的团队,是因为其主要成员并非来自同一个实验室或者同一所高校,甚至并非同一个国家。例如:来自CSAIL的博士后Dong Deng和Raul Castro Fernandez(他们同时也是论文的主要作者),上文提到的Sam Madden教授,以及其他6位来自柏林技术大学、南洋理工大学、滑铁卢大学和卡塔尔计算机研究所的科研人员。另外值得一提的是,尽管并没有参与论文的撰写,但来自麻省理工学院电气工程和计算机科学系的副教授、2014图灵奖获得者Michael Stonebraker同样也为这项研究做出了贡献。

    麻省理工学院电气工程和计算机科学教授,CSAIL大数据教研室主任Sam Madden表示:“当前,由于有成千上万的数据被分散在各种软件系统中,因此要组织一个庞大的数据集非常困难。Civilizer系统可以帮助数据科学家快速找到包含相关信息的数据表格,并将这些表格集合在一起,创建一个完整的数据库,从而大大提高了大数据分析的效率。”

    逐列分析

    Civilizer系统假定其处理的所有数据都按照表格的形式组织。但正如Sam Madden所说,由于将数据转换为表格的技术在大数据领域并不是什么高新的技术,因此这一点并非新研究的重点。类似的,虽然Civilizer的系统原型可以从各种不同类型的文件中提取表格数据,但配合现有程序对数据进行处理却并非研究者的首要任务。“这部分只是工程上的工作,而并非科研上的。”Sam Madden教授表示。

    Civilizer系统的核心优势在于逐列分析所有的数据表格,然后得到每一列的统计概要。对于数值数据,概要中可以包括该数值出现的频率、数值的范围、数值的基数、以及每列包含的不同数值的个数等。对于文本数据,概要将包含每列中出现频率最高的词汇,以及不同词汇的个数统计。此外,Civilizer系统还将对每个出现的词汇和包含这些词汇的表格生成一个索引目录。

    此后,系统将对比所有列的统计概要,根据概要内容识别具有高度相似性的列(例如具有相似的数值范围、相似的词汇集合的列),并将这些单独的列两两一组,组成一个一个的“列对”。Civilizer会为每个列对分配彼此相似的权值,并在权值的基础上生成一个能够反映列与列之前的连接关系、表格与表格之间的连接关系的映射图。

    自动识别相关性

    这里可以通过一个例子来说明Civilizer系统的查询能力:假设一家制药公司有一些包含药物品牌名的表格,一些包含药物化学成分的表格,以及一些包含药物内部代号的表格。我们不妨称这些表格为1类,2类和3类。现在假定1和2从未出现在同一个表格中,但至少有一份表格反映1和3的对应关系,以及反映2和3的对应关系。那么当用户利用Civilizer对所有这些表格展开分析时,对1类的查询结果也可以包含2类中的信息。

    需要指出的是,Civilizer系统的识别结果也有可能是错误的。但系统允许用户丢弃不恰当的查询结果,保留有效的数据。数据被裁减之后,用户还可以将结果保存为一个独立的数据文件,方便后续的使用。

    Merck制药公司的高级信息分析师Iain Wallace表示:“Civilizer的技术非常有趣,它或许能帮助数据科学家解决由于可用数据越来越多而引发的一个重要问题:究竟哪些数据集应该被纳入分析之列。而且组织机构越庞大,这个问题就越严重。”

    Sam Madden教授表示:“目前我们正在探索如何将Civilizer系统作为各种化学和生物学数据集之上的协调层。因为这些数据集通常需要将化合物、疾病和搜索目标联系在一起。一个典型例子就是当用户从一个化合物表格中找到某种特定的化合物后,常常还需要根据这种化合物在其他表格中搜索更多的附加信息。Civilizer系统允许用户对所有列数据进行全文搜索,并自动识别出相关列。通过Civilizer,我们可以方便地添加额外数据源,并快速更新之前的分析结果。”

    civilize意为使之文明、使之开化,MIT将新系统命名为Data Civilizer,意思很明显,是希望通过这个系统让大数据处理变得更简单方便,为开发者简化数据的预处理过程,把更多精力和时间放在真正的数据分析过程中。我们希望以MIT的这项最新研究成果为起点,未来可以出现更多类似的数据处理工具,推动数据科学更快的向前发展。雷锋网雷锋网

    来源:,雷锋网编译mit

  • ?

    CSGO Eleague Major正赛数据整理与分析

    曼岚

    展开

    2018年的Eleague Major已经完全结束了,本次Major的淘汰赛一共有三天,前两天每天三场BO3,最后一天决赛一场BO3,原计划21场的赛事打了17场。

    特别注释:本次数据包含了之前文章所写的小组赛数据,淘汰赛数据会有额外标注。

    大数据整理:

    正赛地图出现总场次(CT/T获胜总占比)【淘汰赛数据,获胜占比较小组赛变动幅度】:

    Mirage:14次 (54.2%/45.8%)【淘汰赛: 6 ,-5.3%/+5.3%】

    Inferno:12次 (55.7%/44.3%)【淘汰赛:5 ,-2.1%/+2.1%】

    Cache:7次 (39.9%/60.1%)【淘汰赛: 1 ,+0.8%/-0.8%】

    Overpass:8次 (62.2%/37.8%)【淘汰赛:3 ,-1.4%/+1.4%】

    Train:3次 (63.8%/36.2%)【淘汰赛:0次 , 0】

    Cobblestone:4次 (34.3%/65.7%)【淘汰赛:1次,+8.4%/-8.4%】

    Nuke:2次 (35.7%/64.3%)【淘汰赛:1次,+11.9%/-11.9%】

    Mirage和Inferno比小组赛的时候还要更受欢迎,其次则是overpass,看起来现在更多的队伍似乎更青睐这些经常出现的简单易打的地图而不再愿意选择一些结构复杂的冷门图。而Mirage和Inferno的CT方胜率进一步下降,双方胜率趋于均衡。

    (注:这里HLTV给出的数据出现了错误,原本打了三次overpass,但是不知道为什么将其中两次给到了train上面。)

    选手正赛总平均rating前十:

    得益于面对QBF时的“福利局”,flamie在第一张图砍下的2.99 Rating让他能够在这次正赛里成为最高rating选手。不过值得一提的是,在打决赛前的NiKo有着1.45惊人rating,但决赛上NiKo的低迷表现和梦游发挥让他的rating从第一跌倒了第五。另外夺冠队伍Cloud9里只有tarik和autimatic勉强挤入了前十名。

    Major正赛总数据之最:

    最高Rating:flamie(1.38)

    最多正KD:GuardiaN(+61)

    最高ADR:

    1.flamie (99.1)

    2.KRIMZ (90.4)

    3.AdreN (88.6)

    4.tarik (87.8)

    5.EliGE (86.7)

    最高平均ADR:

    1.flamie (+23.7)

    2.KRIMZ (+18.9)

    3.NiKo (+17.0)

    4.ropz (14.2)

    5.tarik (+14.1)

    最多击杀:

    1.tarik (258)

    2.autimatic (258)

    3.Stewie2k (244)

    4.RUSH (229)

    5.Skadoodle (225)

    【因为Cloud9是淘汰赛里打的场次最多的,所以全员成功屠榜】

    最多平均每局击杀:

    1.flamie (0.94)

    2.KRIMZ (0.89)

    3.shox (0.81)

    4.s1mple (0.81)

    5.sunNy (0.80)

    最少平均阵亡:

    1.Skadoodle (0.57)

    2.GuradiaN (0.57)

    3.ropz (0.58)

    4.RUSH (0.59)

    5.KennyS (0.59)

    最高每局至少一次击杀:

    1.shox (56.5%)

    2.flamie (56.5%)

    3.suNny (54.3%)

    4.KRIMZ (54.3%)

    5.Dosia (52.7%)

    最多助攻:

    1.tarik (60)

    2.RUSH (58)

    3.rain (56)

    4.Skadoodle (47)

    5.NiKo (45)

    最多平均每局助攻:

    1.fitch (0.22)

    2.rain (0.20)

    3.Zeus (0.20)

    4.Edward (0.19)

    5.apEX (0.18)

    最高KAST:

    1.Edward (77.4%)

    2.s1mple (77.4%)

    3.shox (77.4%)

    4.RUSH (76.1%)

    5.tarik (76.1%)

    最高Support:

    1. RUSH (25.2%)

    2. Zeus (24.9%)

    3. fitch (23.3%)

    4. Golden (22.9%)

    5. Edward (22.6%)

    最多1VN残局获胜:

    1. GuardiaN (8)

    2. NiKo (8)

    3. KRIMZ (6)

    4. Lekr0 (6)

    5. karrigan (5)

    最多爆头数:

    1.NiKo (116)

    2.autimatic (112)

    3.Stewie2k (111)

    4.RUSH (109)

    5.coldzera (106)

    最多每局爆头:

    1. Twistzz (0.46)

    2. shox(0.45)

    3. Lekr0 (0.45)

    4. Dosia (0.44)

    5. tabseN (0.42)

    最高爆头率:

    1. zews (62.5%)

    2. Twistzz (62.5%)

    3. tabseN (60.3%)

    4. hutji (59.7%)

    5. Lekr0 (57.%)

    最多AWP击杀:

    1. GuardiaN (143)

    2. Skadoodle (132)

    3. oskar(82)

    4. FalleN (80)

    5. waterfaLLZ (64)

    最高每局AWP击杀:

    1. GuradiaN(0.52)

    2. Jdm64 (0.45)

    3. oskar (0.45)

    4. WaterfaLLZ (0.44)

    5. kennyS (0.40)

    最多开局击杀:

    1. rain (44)

    2. Stewie2K (42)

    3. Skadoodle (41)

    4. FalleN(40)

    5. fer (38)

    最高开局击杀率:

    1. dupreeh(0.20%)

    2. shox (0.18)

    3. MSL (0.18)

    4. rain (0.16)

    5. tabseN (0.16)

    最高开局对枪胜率:

    1. Dosia(81.8%)

    2. shox (70.0%)

    3. dupreeh (67.9%)

    4. GuardiaN (66.7%)

    5. oskar (65.6%)

    五杀团灭次数:15【淘汰赛:7次(NiKo VS mousesports, sunNy VS FaZe,Kvik VS NaVi, RUSH VS G2, Lekr0 VS SK, KRIMZ VS SK, tarik VS FaZe),算上小组赛的一次,RUSH是唯一一个在本次Major正赛里拿到两个ACE的选手。】

    枪械使用情况:

    在小组赛里不见身影的famas在淘汰赛里最终再度现身,仅比maa1消音版少了0.11%,而之前在小组赛里表现两眼的P250和mac-10反而被数据给淹没,其他数据没有明显变化,但AK的使用率明显较小组赛高了许多。

    淘汰赛里的大比分分差翻盘(仍定义上半场10-5及其以上为大比分分差):0场【小组赛3场】

    赢得最轻松:无

    原本FaZe如果能够战胜Cloud9的话他们将会出现在这里,因为他们从正赛开始到决赛一场未负,而胜家Cloud9无论是和SK的大战三回合还是和FaZe的双加时决胜都无法给到胜利得“轻松”这个奖项,所以我们这次留空。

    输得最尴尬:QBF

    作为本届赛事小组赛里最大的黑马,QBF并没有给到我们惊喜,反而是在两张地图上只拿到了11分,以淘汰赛- 21 的胜负回合数据成为本次传奇组里输得最难看的队伍,而这也是引入瑞士制以来首支在淘汰赛里拿到-20以上数据输掉比赛的队伍,并且他们还在Mirage上送给了flamie半场32杀的新世界记录以及20回合39杀,2.99 rating的惊人数据。

    还是一些有趣的小数据:

    本次Major淘汰赛的0-5及其以上的开局有5场(2次0-6,1次 0-7,1次0-8),没有一场能够翻盘。【PGL淘汰赛4场,Eleague8场,有两场翻盘】

    本次Major淘汰赛有三场比赛加时,一共打了五个加时回合。【PGL 1场加时1个加时回合,Eleague 2场加时2个加时回合】

    这是第十二届Major,冠军由Cloud9拿下,不过非常有趣的是这次ELEAGUE Major和上次的ELEAGUE Major情况如出一辙,一支3-2的队伍先打赢了3-0,再打赢了3-1,最后决赛图战胜另一支3-0队伍。

  • ?

    数据分析:统计学与概率论的教学思考,看完长见识了!

    半烟

    展开

    为了在教学方面自我完善,自我提高,更好的服务于教学工作,结合自己的教学实践浅谈一些自己的心得:  一、统计与概率的内涵的进一步认识  数据能够帮助我们认识世界、做出决策和预测,而统计正是与数据打交道的科学,它是在人们对现实生活中数据资料的收集、整理、分析的过程中发展起来的。  (1)紧密联系学生生活实际,创设情境。有了这样的情感学生学起数学知识来当然是事半功倍了。例如:“分苹果”的情境创设,动手操作,激发了学生提出问题,解决问题的欲望,让学生在情境中感受、理解数学问题。再如:圆的周长收集整理的实际测量,也练习了学生的动手操作。  (2)在课堂上让学生充分交流讨论。在民主、和谐的氛围中开拓思维,积极参与,充分合作。教师适时地参与到学生的讨论和交流当中,较好地扮演了组织者、参与者、合作者的角色。  (3)运用丰富多彩的课堂教学手段。随着科技的进步和发展,我们的课堂也要跟上时代的潮流改变传统的一支粉笔进课堂,这两节数学课让我增长了很多见识,随着一个个课件的展示,本来很难理解的数学难题变得形象、具体,一个个教学难点也随之被攻破。课堂也显得生动活泼了很多。如果有条件我们也要丰富我们的课堂,提高课堂的教学效率。

    (4)引用《不列颠百科全书》对统计学的一个定义。《不列颠百科全书》对统计学的一个定义:“统计学是关于收集和分析数据的科学和艺术”。我认为定义中有三个比较关键的核心词,第一个是数据。“数据”和“数”的最重要的区别是数据是具有实际背景的,而“数”则并不一定。从这个意义上我们就可以理解了为什么说可以把“统计”从过去我们认为的“数的运算”中单独出来,成为一个相对独立的学习领域,统计主要作用正是通过数据处理来提取信息从而帮助人们进行决策。进一步,“随着信息高速的增长,我们需要进一步扩大对数据的认识。事实上,现在的数据不仅仅是数,其实图像也可以看成是数据、语句也可以看成是数据。只要蕴含着一定信息的,无论是什么表现形式,都可以看作是数据”。  二、教学当中概念的处理方法  在教学中,我们应该首先注重学生统计观念的形成与培养。能从统计的角度思考与数据信息有关的问题;能通过收集数据、描述数据、分析数据的过程,作出合理的决策,认识到统计对决策的作用;能对数据的来源、处理数据的方法以及由此得到的结论进行合理的质疑。收集整理养出来的感觉,统计学习要培养学生能自觉地想到运用统计的方法解决有关的问题。学生没有经历数据的收集过程,随机的数据对他们来说还是确定的,学生也就根本无从体会统计思想方法的价值。因此必须创设原始的随机情境,突出活动性,让学生亲身面对实际问题,亲自调查、收集数据,先体会随机数据的不确定、杂乱无章,然后组织学生经历数据的分类整理,凸现随机数据的特点。在这样的教学情形下,学生才深深地领悟到统计思想确实很有用。

    我们还要注重学生在概率实验中的操作体验。教学中应以学生亲身经历和体验统计过程作为主线,即对数据从收集、整理、描述到分析、运用的全过程中突出学生的主体参与,再此过程中引导学生发现并提出问题,用适当的方法收集和整理数据,用合适的图表展示数据,对数据作简单的分析并对自己的分析、思考进行交流和改进。由于处理数据没有唯一的样式,在统计过程中,不同情况下、不同的学生会用不同的方法来记录和表示数据。因此,引导学生经历数据处理过程的教学具有很强的探索性。  三、如何介绍收集和数据的分析和运用  统计处理数据的步骤主要包括:第一是要确定需要解决什么问题;第二是决定收集数据的方法并收集数据;第三是整理并尽可能清晰地描述数据;第四是分析数据,并做出决策和推断。统计学有着它科学的一面,但也有艺术的一面。对于同样的数据,由于背景和目标不同可以有多种分析的方法,需要根据问题的实际背景选择合适的方法。也就是统计的方法没有简单的理论意义上的对和错,只有好和不好。  统计在收集数据和运用数据做出推断等方面吸收了概率的主要成果和主要方法,产生了以抽样为特征的数学与概率论的统计学。数理统计学是运用统计的方法来研究随机现象、从而描述随机现象总体趋势的数学模型,它不会把注意力停留在个别的现象特征上,而是了解大量随机现象的总体的变化趋势,并由此得出随机现象的基本统计规律,进而得到关于社会发展、科学发现的统计预测。

    最后,我们再概括地分析一下统计与概率的关系。实际上,众所周知,统计与概率都是研究随机现象的学科。“不论怎么说,机遇(或说偶然性)无所不在,机遇伴随着人的一生(当然随人的情况而有异),这是一个无法回避的现实”。统计与概率正是从不同的角度来研究怎样更好的刻画随机现象,统计主要侧重于从数据来刻画随机,概率则主要侧重于建立理论模型来刻画随机。另一方面,概率为统计提供了理论基础。在运用样本估计总体的过程中,抽样的合理性、样本推断总体的合理性,包括犯错误的风险,都需要概率的知识来提供科学依据(这在下文还要论述)。“‘机遇(机会)的数学’,它包含数学中的两个学科分支——概率论和数理统计学。概括来说就是,前者属于机遇数量化的理论基础。而后者则是其应用。”  四、统计与概率课程的教育价值  由上一段内容我们可以看出,统计的关键是客观地提炼和表述现实世界中广泛存在的随机信息,准确地分析并把握随机信息中的关键因素的规律性,科学地应用数据并做出正确决策是统计与概率的主要任务,而这也构成了大学阶段学习统计与概率的重要原因。具体来说,学习统计与概率的主要目的是让学生适应现代社会的需要;帮助学生形成和运用数据进行推断的思考方式;有助于学生朝着数学思考、解决问题、情感态度等多方面的发展。/ 

    在以信息和技术为基础的现代社会里,生活中充满着大量的数据和随机现象,各种信息量以成倍地速度增长,这时就需要人们面对它们做出合理的决策。事实上,每个人每天都会遇到许多需要判断和推理的事情。总之,生活已先于数学课程将统计与概率推到了学生的面前,统计与概率的思想已渗入人们日常生活和社会生活的方方面面。  许多的例子表明,随着计算机等信息技术的飞速发展,数据日益成为一种重要的信息,21世纪的公民面临着更多的机会和挑战,常常需要在不确定情境中,根据大量无组织的数据,做出合理的决策,这就需要人们能对纷繁复杂的信息做出恰当的选择与判断,具有一定的收集??处理信息、做出决策的能力,并且能够进行有效的表达与交流。而统计与概率正是通过对数据的收集、整理和分析,来为人们更好的制定决策提供依据和建议。因此,要培养学生具有收集并处理数据、做出恰当的选择和判断的能力,以适应现代社会的发展,就必须将统计与概率的基本思想、方法和知识作为义务教育阶段数学课程的重要组成部分。统计与概率的学习必将为数学与学生的日常生活及其他学科联系起来提供一条自然的途径。

  • ?

    数据整理和汇总的神技能,数据透视表的使用!

    Willow

    展开

    搞定Office每周三更新

    「搞定Office」是黑马公社全新的七大版块之一,每周三更新,教授Office等办公软件的各种应用技巧。

    ◆◆◆

    如何利用数据透视表快速进行数据汇总

    黑马说:在Excel2013版本中,大家知道如何对繁杂的数据进行梳理,通过分析查看数据背后的联系吗?今天黑马就教你通过数据透视表快速的进行数据汇总!

    投稿:千禧世代

    ◆◆◆

    图文说明

    操作放法

    打开EXCEL表格,点击 “插入” 菜单栏,在最左端有一个“数据透视表”。

    点击后会弹出一个“创建数据透视表”的对话框,然后再点击右方的按钮。

    再点选我们需要做统计的范围,以下是示例中点选范围。

    然后再选择放置数据透视表的位置,点选“新工作表”,这样它会在保存的时候新建一个工作表,然后再点击确定。

    这样它就会新建一个工作表,起名为“Sheet1”。然后我们在右侧——“数据透视表字段”下方,将“职称”拖到行标签下,“籍贯”拖到列标签下,”基本工资“拖到值标签下。

    然后左侧表格就显示出来了,我们再给其加一个边框,就成了如图所示的样子,一张数据透视表就完成了。

    分析

    我们可以从这个表中分析得出,唐山市的讲师基本工资是983元,而其教授的基本工资是900元。

    这里讲师的基本工资是所有唐山市讲师基本工资之和,而总计下方表示的是唐山市所有职称的基本工资之和。

    这个表里的所有数据都是通过求和计算的,如果我们想求其平均值,我们需要这样操作:在表格右方”数据透视表字段“中的”值“列表下,有一个倒三角符号,点击之后在下拉菜单中,选择”值字段设置“。

    在值汇总方式下方,选择“平均值”,点击确定后,列表中的数据就是平均值的结果。

    注意:

    1.在选择区域的时候,一定要连带表头一起选择。

    2.为了不影响之前的数据信息,建议在新表中创建数据透视表。

  • ?

    数据分析:浅谈大数据对统计学的挑战和机遇,看完长见识了!

    祁聪展

    展开

    浅谈大数据对统计学的挑战和机遇

    引言  国际数据公司的相关研究指出,2011年全球数据生产量达1.8ZB,且全球信息总量每隔两年增长一倍[1]。在大数据时代下,对于统计学发展而言,挑战与机遇并存,挑战指的是现阶段传统统计学相关方法难以适用大数据,机遇指的是基于统计学,大数据展开数据处理、分析,促使大数据具备可视化特性。由此可见,研究大数据对统计学的挑战和机遇有着十分重要的现实意义。  1.大数据及其目的  现阶段,关于大数据仍旧没有一个十分明确的界定,大数据起初是源自于技术领域。在信息量不断扩大的情况下,使得常规电脑原有存储空间已不能对新处理数据进行承载,新兴数据处理技术得以产生,好比雅虎的Hadoop平台、谷歌的MapReduce等。此类技术能够对僵化层次结构、一致性予以消除,促进数据无需通过常规数据库表格进行排列,极大程度地提升了人们可处理的数据量[1]。 

     2.大数据与统计学的对比  2.1样本统计与全样本统计的区别  样本统计属于统计学不可或缺的依赖,样本指的是结合相应的概率自总体中随机筛选并视作总体代表的集合内容,值得一提的是随机抽样是需要成本的,包括社会关系、资金成本或者时间成本等。基于样本数量提升有限前提下,样本估计误差会随着总体数量增多而增大,这亦是样本统计无法避免的不足。大数据时代下,收集整理庞大的数据信息应运而生,数据信息发展表现出总体即是样本的态势,该属性很好的消除了样本统计这一不足。大数据时代下的全样本统计,通常情况下可对完全总体进行覆盖,然而受大部分数据属于半结构、半结构数据影响,使得概率论应用遭受一定的制约[2]。鉴于此,将全样本统计应用到统计学中,应当就总体数据展开相应的归纳、筛选,即好比在样本统计中展开数据预处理。  2.2预测分析与非预测分析的区别  统计学的创立,是为了对变量相互相关关系展开分析,因此获取数据是发生于变量确定之后的,数据分析价值是能够被预测的。相较于统计学的预测分析,庞大数据将互联网、传感器作为载体,存在于分析需求之前,因此构建于大数据上的分析多为非预测性分析。在统计学中,出现大数据无法有效应用局面,这是由于不具备非预测分析所需的庞大数据,庞大数据产生与数据中心、存储系统存在紧密的联系,并非短期产生。也就是说,统计学中大数据的应用发展,说明了非预测分析正逐步取代传统统计学预测分析,数据多次利用正逐步取代传统数据一次性利用的。  3.大数据对统计学的挑战与机遇  3.1数据生产、处理与应用的转变 

     相关统计部门经开展严格的统计设计工作,获得相关的统计数据,数据的预处理分别有数据清洗、非全面数据填补以及数据矫正等。大数据时代下的统计手段尚不十分明确,自大数据流环境而言,要不断探索新型抽样方法,并确保抽样方法的实时、连贯及可行性。除去传统的统计分析方法,还应当开发大数据动态分析、数据流算法等[3]。  3.2大数据时代对市场营销的机遇  3.2.1大数据营销的特点与价值  大数据营销的特点:I.数据采集多平台化特点,即大数据时代下,大数据的数据大多来源于不同的领域、不同的渠道。II.时效性特点,随着信息技术的急速发展,互联网用户消费、购物行为方式往往会瞬间出现转变。国际先进大数据营销企业AdTime基于此大数据营销特点,采取了时间营销措施,即采取相应的技术方式全面获悉用户所需,于第一时间对用户当下的需求进行回应,以使用户在下决心购买的最佳时间及时看到对应的产品广告。III.个性化特点,在大数据时代下,广告商传统媒体导向的营销理念逐步由受众导向取代,现如今,广告商可应用大数据了解用户的地理方位,需求内容等信息,达到对用户个性化营销的目的。  大数据营销的价值:I.升级营销与用户的匹配度,大数据营销不仅可提供给企业了解用户有效的途径,还能够与网络环境下,选取相关技术方法达到对用户精确定位的目的,从而开展好营销工作,升级营销与用户的匹配度。II.改善用户体验,大数据营销促使企业真正意义上认识到用户及其所使用企业产品情况,以给予用户最人性化的提醒。  3.2.2大数据营销的应用  (1)与消费者建立紧密关系  现如今,我国一些企业营销行为仍旧处于个性化定位信息、创意设计阶段,而无法对不同消费者展开个性化的营销活动。大数据时代下,经采用相关数据分析技术方法,基于对消费群体喜好、传媒接触习惯等展开有效的分析,达到特定营销活动明确开展的目的,实现企业精心开展的营销活动精准的辐射至目标消费群体处,与消费者建立紧密关系,极大的改善营销效率、质量[4]。  (2)掌握竞争对手数据  企业通过对竞争对手数据的有效掌握,获悉竞争对手发展状况,基于此帮助企业制定科学合理的产品价格,提升企业产品市场竞争优势。与此同时,企业务必要全面实施以事实为前提的决策手段,广泛地应用数据分析方式对企业每一个发展运营步骤进行优化,经对企业一系列数据的充分优化、对接,促使业务环节中潜在的价值得以被有效挖掘,降低生产成本,知己知彼,促使企业在日趋白热化的市场竞争中占据有利位置。  (3)挖掘企业内部数据  “市场未动,数据先行”俨然转变为国际上企业有效运营发展的一致认识,为了提升企业管理效率,要求企业要充分挖掘企业内部数据,并展开有效的整合、分析,以为企业相关人员做决策提供有利的参考依据,提升决策准确性,促进企业可持续发展。

    3.2.4 企业的应用案例——以亚马逊为例  在应用大数据开展市场营销方面,美国亚马逊公司一直处于领先地位。亚马逊研发出“用户未下单,先发货”功能,即结合用户的购物需求数据信息,分析用户想要购买的产品,达到用户未下单,提前发货的目的。此外,亚马逊通过对用户检索信息的分析,评估流感的传播,但这仅仅为海量检索数据中的一项用途,相同的数据能够应用于预测大选结果、预测某类产品市场行情等等,极大地降低了统计成本[5]。  3.3大数据时代对市场营销的挑战  3.3.1信息收集  大数据并非就是对数据信息展开盲目的收集,即便收集了再多的数据,倘若这些数据并非是市场营销所需要的,如此便会导致前期收集来的数据信息,变成一堆“数据垃圾”。鉴于此,为了避免这一情况发生,务必要充分分析业务需求,再对自身存在价值的数据展开收集、归纳,如此方可实现大数据的有效收集应用。  3.3.2经验与数据  数据采集完毕后,面对参差不齐的数据,还应当做好数据评估工作,评估对何种目标受众开展市场营销工作。鉴于此,要求采取科学合理的手段,将这些参差不齐的数据整合成可被市场营销实践应用的,经结合过去的经验,与采集数据进行有机融合,实现对目标受众的有效分析确定。  3.3.3分析与优化  数据分析,一方面是实现数据优化,一方面是进行决策层面上的调整、转变。此环节对于专业人才的需求提出了严苛的挑战。数据分析、数据优化对于专业人才的知识框架要求大不相同,这要求相关企业不仅要培养专业的数据分析人才,还要打造数据优化人才队伍。 

     3.4大数据营销的未来发展趋势  信息技术不断发展,单一媒体导向的“消费者碎片化”俨然无法达到企业对于数据多样性的需求。大数据时代下,媒体的跨界融合实现对“碎片化”受众的充分聚合。在科学技术技术不断进步的背景下,跨媒介、跨平台、跨终端的多途径将不断被开拓,将使庞大的数据信息获取多维度的整合,并且在多样化网络环境下,消费者主观信息与客观数据有机融合,构筑全面用户数据库环节,将成为未来大数据营销发展的必然趋势[6]。  4.结束语  总而言之,大数据为传统统计学带来了严峻的考验,也为传统统计学有效发展创造了良好的契机。在大数据时代发展潮流中,我们应当充分的认识到大数据对于传统统计学而言,是补充而不是更替,构建于样本统计、预测分析内容上的传统统计学,仍旧于社会统计、经济分析中占据着主导位置。大数据时代下,为了实现企业市场营销的有效开展,相关人员务必要不断专研研究、总结经验,全面分析大数据与统计学的对比,充分认识大数据对统计学的挑战和机遇,“与消费者建立紧密关系”、“掌握竞争对手数据”、“挖掘企业内部数据”等,积极促进企业市场营销的科学合理化。

  • ?

    python数据分析笔记——数据加载与整理

    泪痣

    展开

    文 | 张俊红

    数据加载

    导入文本数据

    1、导入文本格式数据(CSV)的方法:

    方法一:使用pd.read_csv(),默认打开csv文件。

    9、10、11行三种方式均可以导入文本格式的数据。

    特殊说明:第9行使用的条件是运行文件.py需要与目标文件CSV在一个文件夹中的时候可以只写文件名。第10和11行中文件名ex1.CSV前面的部分均为文件的路径。

    方法二:使用pd.read.table(),需要指定是什么样分隔符的文本文件。用sep=””来指定。

    2、当文件没有标题行时

    可以让pandas为其自动分配默认的列名。

    也可以自己定义列名。

    3、将某一列作为索引,比如使用message列做索引。通过index_col参数指定’message’。

    4、要将多个列做成一个层次化索引,只需传入由列编号或列名组成的列表即可。

    5、文本中缺失值处理,缺失数据要么是没有(空字符串),要么是用某个标记值表示的,默认情况下,pandas会用一组经常出现的标记值进行识别,如NA、NULL等。查找出结果以NAN显示。

    6、逐块读取文本文件

    如果只想读取几行(避免读取整个文件),通过nrows进行制定即可。

    7、对于不是使用固定分隔符分割的表格,可以使用正则表达式来作为read_table的分隔符。

    (’\s+’是正则表达式中的字符)。

    导入JSON数据

    JSON数据是通过HTTP请求在Web浏览器和其他应用程序之间发送数据的标注形式之一。通过json.loads即可将JSON对象转换成Python对象。(import json)

    对应的json.dumps则将Python对象转换成JSON格式。

    导入EXCEL数据

    直接使用read_excel(文件名路径)进行获取,与读取CSV格式的文件类似。

    导入数据库数据

    主要包含两种数据库文件,一种是SQL关系型数据库数据,另一种是非SQL型数据库数据即MongoDB数据库文件。

    数据库文件是这几种里面比较难的,本人没有接触数据库文件,没有亲测,所以就不贴截图了。

    数据整理

    合并数据集

    1、数据库风格的合并

    数据库风格的合并与SQL数据库中的连接(join)原理一样。通过调用merge函数即可进行合并。

    当没有指明用哪一列进行连接时,程序将自动按重叠列的列名进行连接,上述语句就是按重叠列“key”列进行连接。也可以通过on来指定连接列进行连接。

    当两个对象的列名不同时,即两个对象没有共同列时,也可以分别进行指定。

    Left_on是指左侧DataFrame中用作连接的列。

    right_on是指右侧DataFrame中用作连接的列。

    通过上面的语句得到的结果里面只有a和b对应的数据,c和d以及与之相关的数据被消去,这是因为默认情况下,merge做的是‘inner’连接,即sql中的内连接,取得两个对象的交集。也有其他方式连接:left、right、outer。用“how”来指明。

    也可以根据多个键(列)进行合并,用on传入一个由列名组成的列表即可。

    2、索引上的合并

    (1)普通索引的合并

    Left_index表示将左侧的行索引引用做其连接键

    right_index表示将右侧的行索引引用做其连接键

    上面两个用于DataFrame中的连接键位于其索引中,可以使用Left_index=True或right_index=True或两个同时使用来进行键的连接。

    (2)层次化索引

    与数据库中用on来根据多个键合并一样。

    3、轴向连接(合并)

    轴向连接,默认是在轴方向进行连接,也可以通过axis=1使其进行横向连接。

    (1)对于numpy对象(数组)可以用numpy中的concatenation函数进行合并。

    (2)对于pandas对象(如Series和DataFrame),可以pandas中的concat函数进行合并。

    ·4、合并重叠数据

    对于索引全部或部分重叠的两个数据集,我们可以使用numpy的where函数来进行合并,where函数相当于if—else函数。

    对于重复的数据显示出相同的数据,而对于不同的数据显示a列表的数据。同时也可以使用combine_first的方法进行合并。合并原则与where函数一致,遇到相同的数据显示相同数据,遇到不同的显示a列表数据。

    重塑数据集

    1、旋转数据

    (1)重塑索引、分为stack(将数据的列旋转为行)和unstack(将数据的行旋转为列)。

    (2)将‘长格式’旋转为‘宽格式’

    2、转换数据

    (1)数据替换,将某一值或多个值用新的值进行代替。(比较常用的是缺失值或异常值处理,缺失值一般都用NULL、NAN标记,可以用新的值代替缺失标记值)。方法是replace。

    一对一替换:用np.nan替换-999

    多对一替换:用np.nan替换-999和-1000.

    多对多替换:用np.nan代替-999,0代替-1000.

    也可以使用字典的形式来进行替换。

    (2)离散化或面元划分,即根据某一条件将数据进行分组。

    利用pd.cut()方式对一组年龄进行分组。

    默认情况下,cut对分组条件的左边是开着的状态,右边是闭合状态。可以用left(right)=False来设置哪边是闭合的。

    清理数据集

    主要是指清理重复值,DataFrame中经常会出现重复行,清理数据主要是针对这些重复行进行清理。

    利用drop_duplicates方法,可以返回一个移除了重复行的DataFrame.

    默认情况下,此方法是对所有的列进行重复项清理操作,也可以用来指定特定的一列或多列进行。

    默认情况下,上述方法保留的是第一个出现的值组合,传入take_last=true则保留最后一个。

    End.

    来源:36大数据

  • ?

    干货 | 这是一份完整的大数据处理技术总结与分析

    阮碧莲

    展开

    一 数据分析处理需求分类

    1 事务型处理

    在我们实际生活中,事务型数据处理需求非常常见,例如:淘宝网站交易系统、12306网站火车票交易系统、超市POS系统等都属于事务型数据处理系统。

    这类系统数据处理特点包括以下几点:

    一是事务处理型操作都是细粒度操作,每次事务处理涉及数据量都很小。

    二是计算相对简单,一般只有少数几步操作组成,比如修改某行的某列;

    三是事务型处理操作涉及数据的增、删、改、查,对事务完整性和数据一致性要求非常高。

    四是事务性操作都是实时交互式操作,至少能在几秒内执行完成;

    五是基于以上特点,索引是支撑事务型处理一个非常重要的技术。

    在数据量和并发交易量不大情况下,一般依托单机版关系型数据库,例如ORACLE、MYSQL、SQLSERVER,再加数据复制(DataGurad、 RMAN、MySQL数据复制等)等高可用措施即可满足业务需求。

    在数据量和并发交易量增加情况下,一般可以采用ORALCE RAC集群方式或者是通过硬件升级(采用小型机、大型机等,如银行系统、运营商计费系统、证卷系统)来支撑。

    事务型操作在淘宝、12306等互联网企业中,由于数据量大、访问并发量高,必然采用分布式技术来应对,这样就带来了分布式事务处理问题,而分布式事务处理很难做到高效,因此一般采用根据业务应用特点来开发专用的系统来解决本问题。

    2 数据统计分析

    数据统计主要是被各类企业通过分析自己的销售记录等企业日常的运营数据,以辅助企业管理层来进行运营决策。典型的使用场景有:周报表、月报表等固定时间提供给领导的各类统计报表;市场营销部门,通过各种维度组合进行统计分析,以制定相应的营销策略等。

    数据统计分析特点包括以下几点:

    一是数据统计一般涉及大量数据的聚合运算,每次统计涉及数据量会比较大。

    二是数据统计分析计算相对复杂,例如会涉及大量goupby、 子查询、嵌套查询、窗口函数、聚合函数、排序等;有些复杂统计可能需要编写SQL脚本才能实现。

    三是数据统计分析实时性相对没有事务型操作要求高。但除固定报表外,目前越来越多的用户希望能做做到交互式实时统计;

    传统的数据统计分析主要采用基于MPP并行数据库的数据仓库技术。主要采用维度模型,通过预计算等方法,把数据整理成适合统计分析的结构来实现高性能的数据统计分析,以支持可以通过下钻和上卷操作,实现各种维度组合以及各种粒度的统计分析。

    另外目前在数据统计分析领域,为了满足交互式统计分析需求,基于内存计算的数据库仓库系统也成为一个发展趋势,例如SAP的HANA平台。

    3 数据挖掘

    数据挖掘主要是根据商业目标,采用数据挖掘算法自动从海量数据中发现隐含在海量数据中的规律和知识。

    数据挖掘主要过程是:根据分析挖掘目标,从数据库中把数据提取出来,然后经过ETL组织成适合分析挖掘算法使用宽表,然后利用数据挖掘软件进行挖掘。传统的数据挖掘软件,一般只能支持在单机上进行小规模数据处理,受此限制传统数据分析挖掘一般会采用抽样方式来减少数据分析规模。

    数据挖掘的计算复杂度和灵活度远远超过前两类需求。一是由于数据挖掘问题开放性,导致数据挖掘会涉及大量衍生变量计算,衍生变量多变导致数据预处理计算复杂性;二是很多数据挖掘算法本身就比较复杂,计算量就很大,特别是大量机器学习算法,都是迭代计算,需要通过多次迭代来求最优解,例如K-means聚类算法、PageRank算法等。

    因此总体来讲,数据分析挖掘的特点是:

    1、数据挖掘的整个计算更复杂,一般是由多个步骤组成计算流,多个计算步骤之间存在数据交换,也就是会产生大量中间结果,难以用一条sql语句来表达。

    2、计算应该能够非常灵活表达,很多需要利用高级语言编程实现。

    二 大数据背景下事务型处理系统相关技术

    在google、facebook、taobao等大互联网公司出现之后,这些公司注册和在线用户数量都非长大,因此该公司交易系统需要解决“海量数据+高并发+数据一致性+高可用性”的问题。

    为了解决该问题,从目前资料来看,其实没有一个通用的解决方案,各大公司都会根据自己业务特点定制开发相应的系统,但是常用的思路主要包括以下几点:

    (1)数据库分片,结合业务和数据特点将数据分布在多台机器上。

    (2)利用缓存等机制,尽量利用内存,解决高并发时遇到的随机IO效率问题。

    (3)结合数据复制等技术实现读写分离,以及提高系统可用性。

    (4)大量采用异步处理机制,对应高并发冲击。

    (5)根据实际业务需求,尽量避免分布式事务。

    1相关系统介绍

    1) 阿里CORBAR系统

    阿里COBAR系统是一个基于MYSQL数据库的分布式数据库系统,属于基于分布式数据库中间件的分布式数据库系统。该系统是前身是陈思儒开发的“变形虫”系统(以前调研过),由于陈思儒离开阿里去了盛大,阿里当心“变形虫”稳定性等问题,重新开发该项目。

    该系统主要采用数据库分片思路,实现了:数据拆分、读写分离、复制等功能。由于此系统由于只需要满足事务型操作即可,因此相对真正并行数据库集群(例如TeraData等),此类系统提供操作没有也不需要提供一些复杂跨库处理,因此该系统存在以下限制:

    (1)不支持跨库的join、分页、排序、子查询。

    (2)insert等变更语句必须包括拆分字段等。

    (3)应该不支持跨机事务(以前变形虫不支持)。

    说白了此类系统不具备并行计算能力,基本上相当于数据库路由器!

    另外此类系统的在实际应用的关键问题是,根据什么对数据进行切分,因为切分不好会导致分布式的事务问题。

    2) 阿里OceanBase系统

    该系统也是淘宝为了解决高并发、大数据环境下事务型处理而定制开发的一个系统。该系统主要思路和特点如下:

    (1)他们发现在实际生成环境中,每天更新的数据只占总体数据的1%不到,因此他们把数据分为:基线数据和增量更新数据。

    (2)基线数据是静态数据,采用分布式存储方式进行存储。

    (3)只在一台服务器上存储和处理增量更新数据,并且是在内存中存储和处理更新数据。

    (4)在系统负载轻的时候,把增量更新批量合并到基线数据中。

    (5)数据访问时同时访问基线数据和增量更新数据并合并。

    因此这样好处是:

    (1)读事务和写事务分离

    (2)通过牺牲一点扩展性(写是一个单点),来避免分布式事务处理。

    说明:该系统虽然能处理高并发的事务型处理,号称很牛逼,但其实也只是根据电商的事务处理来定制开发的专用系统,个人认为其技术难度小于oracle等通用型的数据库。该系统无法应用到银行或者12306等,因为其事务处理的逻辑远远比电商商品买卖处理逻辑复杂。

    在目前的大数据时代,一定是基于应用定制才能找到好的解决方案!

    3) 基于Hbase的交易系统

    在hadoop平台下,HBASE数据库是一个分布式KV数据库,属于实时数据库范畴。支付宝目前支付记录就是存储在HBASE数据库中。

    HBASE数据库接口是非SQL接口,而是KV操作接口(基于Key的访问和基于key范围的scan操作),因此HBASE数据库虽然可扩展性非常好,但是由于其接口限制导致该数据库能支持上层应用很窄。基于HBASE应用的设计中,关键点是key的设计,要根据需要支持的应用来设计key的组成。

    可以认为HBASE数据库只支持作为KEY的这一列的索引。虽然目前HBASE有支持二级索引的方案,二级索引维护将会比较麻烦。

    2并发和并行区别

    并发是指同时执行通常不相关的各种任务,例如交易型系统典型属于高并发系统。

    并行是通过将一个很大的计算任务,划分为多个小的计算任务,然后多个小计算任务的并行执行,来缩短该计算任务计算时间。

    两者主要区别在于:

    (1)通讯与协调方面:在并行计算中,由于多个小任务同属一个大的计算任务,因此小任务之间存在依赖关系,小任务之间需要大量通讯和协调;相反,并发中的多个任务之间基本相互独立,任务与任务之间相关性很小。

    (2)容错处理方面:由于并发任务之间相互独立,某个任务执行失败并不会影响其它的任务。但是并行计算中的多个任务属于一个大任务,因此某个子任务的失败,如果不能恢复(粗粒度容错与细粒度容错),则整个任务都会失败。

    3本章总结

    数据量大不一定需要并行计算,虽然数据量大,数据是分布存储,但是如果每次操作基本上还是针对少量数据,因此每次操作基本上都是在一台服务器上完成,不涉及并行计算。只是需要通过数据复制、数据缓存、异步处理等方式来支撑高并发访问量

    三 大数据背景下数据统计分析技术介绍

    随数据量变大,和事务处理不同的是,单个统计分析涉及数据量会非常大,单个统计分析任务涉及数据会分散在多台服务器上,且由于计算量大,采用单台服务器进行计算,会导致计算时间非常长,单个统计分析任务必须采用并行计算方式来加快单个统计分析任务执行速度。

    1并行查询与并行计算技术介绍

    在大数据背景下的数据统计分析技术门类很多,常见的有:

    n MPP并行数据库 : TeraData、GreenPlum、Vertica等。

    n 基于MapReduce并行计算框架的数据仓库:

    HIVE(Hadoop平台) 、Tenzing(Google公司)

    n 基于Hbase的Phoenix系统

    n HadoopDB系统

    n EMC公司的hapt系统

    n MPP分布式查询引擎: Dremel、Impala、Presto、Shard query、Citusdb。

    n 基于SPARK的Shark、基于Dryad的SCOPE、基于Tez的stinger。

    n 基于hadoop+index的JethroData系统

    n 基于内存计算的Druid系统

    这些系统都解决了海量数据下的数据统计分析的问题,并且这些系统另外一个共同特点是都提供了SQL或者类SQL接口。

    为了能够较好研究这些系统,我们需要对并行查询与并行计算的相关技术做一个简要的介绍。

    首先所有的系统都可以分为三个层次: 语义层、并行计算引擎层、分布式存储层。语义层提供一个编程接口让用户表达所需要计算,并负责把该计算翻译成底层并行计算引擎可以执行的执行计划,并由并行计算引擎来执行,最下面一层是分布式存储层。

    对于提供类SQL接口并行计算系统,语义层可以认为是SQL解析层。

    1) 语义层

    SQL语言是一种声名式语言,SQL只是表达了要做什么,而没有表达怎么做。为此,SQL解析层主要作用是:将用户提交的基于SQL的统计分析请求,转化为底层计算引擎层可以执行的执行计划。也就是解决“怎么做”的问题。

    SQL解析层工作主要包括两个大方面:

    (1) 通过语法分析技术来理解要做什么。在关系数据库中,一般会把SQL语言分析后,形成树型结构的执行计划。

    (2) 在语法分析技术上,利用各种优化技术和算法,找出一种最经济物理执行计划。

    优化可以分为两个方面:一是逻辑层面优化、二是物理执行层面优化。

    (1) 逻辑层优化

    逻辑层面个人认为主要是因为同样表达一个分析请求,有的人SQL写的好,有的人SQL写的烂,因此在逻辑层面可以通过一些等价关系代数变换,实现查询重写,将写的比较烂的sql变换为好的写法。

    比较典型优化是:“把投影和过滤下沉,先执行过滤和投影操作”,减少中间结果。

    (2) 物理层优化

    物理层面优化是在逻辑优化后,结合实际物理执行过程,找出最优的物理执行计划。生成物理查询计划的工作包括:

    ü 增加一些操作符: 包括扫描和排序等。

    ü 确定各个操作符实现算法。例如扫描是全表扫描还是利用索引;Join是采用HASH连接、索引连接、合并排序等实现算法中的那一种。

    ü 确定操作符之间的数据流转方法:物化还是流水线方式。

    ü 采用基于代价估算方法确定最优的物理执行计划,目前代价估算主要是以估算该物理计划需要的IO量。另外对于并行数据库,则还要考虑通讯代价,即尽量减少数据在各个机器之间的传递。

    在物理层优化的代价估算过程中,代价估算需要依靠很多统计信息,如表有多大,表中相关列的值分布是什么样子等。传统数据库在数据Load过程中会事先计算好这些统计信息。并行计算中还需要考虑通讯代价。

    需要指出是,由于imapla、Presto、HIVE等系统只是一个查询引擎,它们可以直接查询以普通文件方式存储在HDFS系统上的文件,因此这些系统一般无法使用索引和各种统计信息来进行物理执行计划的优化,这些系统一般只能在逻辑层进行一些基于规则静态优化。根据SHARK论文,SHARK系统支持根据前面一些节点计算获得的信息,来动态优化后面执行计划。

    (3) 物化与流水线执行方法

    一条SQL语句对开发人员而言,感觉只是一次调用,但是实际上在数据库内部,一条SQL语句执行其实是有多个操作符组合而成的的树型结构计算流。如下图:

    针对该计算流有两种执行方式:一是基于物化或者是实体化执行方式,另外一种是基于数据流的执行方式。

    第一种方法的过程是: 把各个操作运算排序,并把每个操作运算的输出的中间结果存储在磁盘上,直到被另外一个操作运算所...

数据的整理与分析

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP