门外汉掌握数据分析处理技术的路线图
大数据和人工智能时代,数据分析是个热门话题,数据分析师貌似也是个热门职业。很多门外汉想学,但面对浩瀚繁杂的技术,也搞不清该从哪里开始。于是,经常有人问这个问题,当然还有问得更具体的,怎么能学会 SQL 啊,要不要学 Python 啊,其实背后经常都是一回事。
这里刻意把“处理”也挂上,因为数据分析并不会单独存在,用来分析的数据常常还需要自己去准备去整理,这些都是数据处理的范畴。比如把一堆 Excel 给合并起来,也许下一步的任务就是分析了,但这一步却少不了。还有些事情,比如用花名册生成员工卡,说成是数据分析显然不太合适,但这也是日常工作中要干的活。这个贴子就把这种折腾数据的事都放一起说了。
另外,这是个面向门外汉的话题,讲到能进入专业状态之后就不能再说了,之后相关的技术更多更繁,但能走到那一步的同学,自己都门儿清了,用不着再看这个贴子的唠叨了。
还要特别强调一点,数据分析并不只是个技术问题,甚至可以说主要问题并不在技术。有很多同学可能认为只是掌握一些相关的技能后就会做数据分析了,这就彻底搞拧了。做好数据分析的重点在于业务知识,也就是你要知道有啥需要被分析。业务经验充分的人用很原始的技术,也常常比毫无业务感觉的人使用高档技术能分析出更多有意义的结果。这就像掌握各种车辆的驾驶只是某种技能,而知道要把货运到哪里能卖出好价钱才是更重要的。用手推车运货,只要运对了地方,有可能会比用汽车运货挣到更多的钱。做数据分析不要迷信技术和工具,如果你本来还不知道做数据分析的业务目的,那学会技术和工具也是白搭。而且,同类同级别的技术和工具通常也差不多,对于数据分析目标而言差别很小(奔驰宝马对于个人乘坐并无区别),刻意选择的意义不大。
言归正传,这篇主要还是讲技术,毕竟掌握技术还是能大幅提高工作效率的。
我们从最基础的讲起:
第 0 级,Excel
你没看错,人人都会使的 Excel 就是最基础的数据分析和处理技术,也就因为 Excel 几乎人人都会使,所以这一级叫第 0 级,没把它编进序号。
Excel 能干啥和怎么干,这里就不多说了,网上资料太多。而且,以门外汉自居而关心数据技术的同学,多少也都会使点 Excel。这一关对大多数人来讲可以认为是能过去的,但却不能不列出来。如果觉得 Excel 使得还不熟(比如不会用 VLookup,不会写 if),那自己去补课了。反正这是基础中的基础,现在再牛的数据分析师都绕不开这玩意儿。
第 1 级,敏捷 BI
敏捷 BI 就可以帮我们做的分析称为多维分析了,也就是各种分类方式去看统计数据,比如按月份看销售额、按地区看产量、或者几样一起看。哪一块汇总数大了,可以再钻进去看看怎么回事,比如北京销售额不错,那要看看是不是海淀人民购买热情特别高。还能把这些统计数据画成各种图形来看,联动起来能更形象也更容易发现问题或规律,这就是妥妥的数据分析了。分析出的结果做个报告给老板看,升职涨薪那都不在话下。
敏捷 BI 的代表产品主要是国外的几家,PowerBI、Tableau 之类;其实 Excel 本身也有个透视表,可以做基本的多维分析,但细节做得还不够好,而且它的这功能也可以算作第 1 级技术了。
国产的报表工具和 BI 厂商也有很多在喊敏捷 BI,然而,坦白地说,木有一个合适的。国产 BI 产品(下面也会说到)老实说就技术水平而言,做得还挺好(其实从某种角度上看比国外产品的技术含量更高),但都沉重得很,根本不敏捷,原因说起来挺复杂,初学者暂时也理解不了。反正如果看到有非专业人员自己折腾国产 BI 产品分析出啥结果了,都可以认定为是厂家编的案例在忽悠你。就记住,现在没有简单易用且面向非技术人员的国产敏捷 BI 产品,未来大概率也没有。
第 1 级,润乾报表
前面说了,我们还会碰到用花名册生成员工卡这种烦人事,敏捷 BI 帮不了这个忙,润乾报表就擅长了。
润乾报表不也是个传说中的国产 BI 类产品吗?这刚说了就打脸?
非也,润乾报表是国产报表工具(也算 BI 吧)不假,但在第 1 级技术中,它不是以 BI 技术出现的,它和其它国产货一样,并没有敏捷 BI 的本事,它就是一个做报表的工具。
Excel 做报表没问题,但只能做静态的,行列根据数据量变化的表,你不会做吧,如果再有多片多层分组交叉的情况,数据变了每个月都要重做一次,那真是很累很累的,而且稍有不慎就会搞错。这种出报表的事,你说它算不算数据分析呢?这并不重要,反正日常工作中总要做,而且敏捷 BI 们通通搞不定。
对于润乾报表来讲,这些事就很 easy 了,做一次模板之后,数据变了一键搞定,动态行列多层报表毫无压力。中国人的报表技术天下第一,这可不是吹的。
那为啥只提润乾报表,其它国产报表工具不行吗?
因为只有润乾报表提供了面向非专业职场人员的使用方式以及相关的课程资料,确实也有其它报表工具也能做复杂报表,但都是面向专业技术人员的(也许哪天也有产品会加入到职场市场),处在你这一级的同学搞不定(再往后学就可以啦)。
敏捷 BI 和润乾报表代表的数据分析和处理算是常规技术,所涉及的运算难度也就是和四则运算相当(大部分是加法,还有取最大 / 最小等等),不超过初中水平,是个人都能懂。但这些运算还有可能会涉及各种条件,比如只加 500 块以上的订单、只看北京 3 月的情况等等,难度不大,烦度很大。传说中高大上的 BI 分析其实就些东西,和我们平时用 Excel 做个报表在细节上没区分,只是自动化程度更高,这玩意儿看破了不神奇。
第 1 级,易明建模
还有另一条线的数据分析技术,也就是现在很热门的人工智能(数据挖掘、机器学习、…),这里涉及的运算要复杂得多(不过也离不开常规数据处理技术来准备数据),动不动就是概率论、统计学之类的公式了,这一点都不简单了,远远超出中学水平,没好好念数学课的大学生都搞不懂。
按说,这么复杂的技术不该是第 1 级的事情了。
不过,有了这个易明建模就可以了。
易明建模把这些复杂的人工智能算法都封装起来了,使用者只要把数据准备好(就是 Excel 的表格即可),丢进去,它就能自动建出模型了,然后就可以预测了。因为这里固化了顶尖统计专家数十年的经验,对于大部分商业场景,它比不熟悉机器学习算法的程序员做得还好。
那为什么又把这东西单提出来?没有其它自动人工智能的产品吗?
有,但又是太沉重,你还是搞不定,不适合这一级的选手。
这三种技术(产品)门槛都比较低,也就是要写点公式,仅仅比 Excel 难一点点,可以并列为第 1 级。
易明建模其实使用起来最简单(连公式都很少填),但需要了解一些数据挖掘知识(算法不用懂,要对建模预测的机制有点概念,也要学会如何评价模型的好坏),而且人工智能业务也显得高端一点,算作 1.5 级也行吧。
第 1 级的状态,还不需要学会编程序(如果写公式不算编程的话)。
第 2 级,SPL
然后,就要开始学编程了。
有些事会涉及更复杂的计算,虽然每一步还是四则运算难度,但步骤多了用一个公式很难写出来,要分几步才行,过程中还可能有判断;更麻烦的是有些要重复做 N 遍的事,如果都是手工操作那会累死人,比如把 500 个 Excel 合并拼起来或者把一个 Excel 拆成 500 个小文件。这里有本 帮你早下班 - esProc 桌面版与 Excel 数据处理 ,里面绝大多数问题都是实际发生的,而用 Excel 以及第 1 级技术却很难实现。
如果学会编程,这些就不是个事了。
这个道理好懂,但为啥是这个 SPL,编程语言不是很多吗?
是很多,但在这一级里没有别的了。
做数据分析处理,基本都是在处理表格式的数据,这有个学名叫结构化数据,如果所学的程序语言不擅长对付结构化数据,那只能拿着做做算术题玩,对于数据分析处理却无济于事。然而,能很方便地处理结构化数据的程序语言就不多了,包括 Excel 里自带的 VBA 都不行,算下来就只有 SPL 和 SQL,还有 Python 看起来也能对付(有很多培训班在宣称),但 SQL 和 Pyhton 都是专业级的技术(后面会说),出现在第 2 级太早了。
关于业余人员学编程,还可以参考这个 零基础同学自学编程的正确姿势
以上是业余级别的东西。之后就可以进入专业级别了,也就是程序员的世界。
第 3 级,SQL
程序员世界里的数据分析处理技术,SQL 是首当其冲的。数据库可能是存储最多数据的地方,而这里的数据主要就是用 SQL 来耍,不会 SQL 很难在数据圈里混。
简单 SQL 长得像英语,语法学起来很容易。如果已经掌握了结构化数据的概念和运算,估计也就看上几小时语法书就能上手写查询了,按说不应该是个专业级的技术。但是,你学会了没地方用啊,得有个数据库才能跑 SQL,安装数据库以及把数据倒腾进去来做查询,都是很专业的任务,会折腾这种事的你已经是个半职业的程序员了。
倒是可以用 SPL 来学,SPL 中也实现了常见的 SQL,可以让使用者针对文件执行 SQL。不过,如果学会了 SPL,在处理分析文件数据时也没必要学 SQL 了,SPL 的运算处理能力要远远强于 SQL。
这里有个贴子讲初学者怎么学 SQL 初学者怎样快速学会 SQL
重复一下这个帖子中最后强调的:SQL 入门容易,但精通很难,复杂的 SQL 始终还是很复杂的。三行五行的简单 SQL 通常只会大量出现在教科书和培训班,现实中用于做数据分析的 SQL 语句,说起长度时我们通常是用 K(千字符)而不是用行作为单位的。
它还是在这一级比较合适。
第 3 级,国产报表工具与企业 BI 软件
现在该轮到说国产的报表和 BI 软件了,这些东西可以看成是第 1 级的敏捷 BI 和润乾报表所做事情的企业级版本。
企业应用建设时也会用到报表和 BI 功能,这方面国产软件的技术要比国外做得好得多得多得多(这可能是唯一一个国产强于国外的基础软件领域了)。国内几家知名的都还不错,当然也各有特色,这里就不点名了。掌握这些产品和技术后,作为程序员要搞企业级的 BI 和报表分析业务时,就会得心应手了。
使用这些技术做出来的系统,就可以给非专业的业务人员使用了。但我们并没有在第 1 级提及,因为使用企业内部已经做好的应用系统也不需要专门去学啥技术,按操作规程做就行了,真有难一点的内容,企业也会提供统一培训,所以用不着在这里说了。
作为系统建设者的程序员,要比使用者懂得更多。学习这些技术(产品)时也要同时学会多维分析、报表模型中更深一点的理论知识了。
弱弱地说一句:国产 BI 技术含量虽然高,但做出来通用企业 BI 用处并不大(看这 怎样评价国产报表工具和 BI 软件 ,也解释了为什么国产没有敏捷 BI)。不过可以不用管,反正现在还有客户肯掏钱,学了这些技术就能有事干,将来做专用的企业 BI 也还需要这些知识的。
第 3 级,SPL
SPL 又来了,它同样可以作为程序员的武器来做结构化数据的处理和计算。
程序员不是已经有数据库和 SQL 吗?
是,但还有很多场景下没法用数据库也就没法用 SQL。程序员也要对文件数据做处理,有多个数据库的情况也没法直接跑 SQL,能跑 SQL 的数据库叫关系数据库,还有一堆不是关系数据库的数据库,比如 MongoDB,还有 json,xml 这些奇怪格式的数据。这时候,掌握 SPL 技术就方便多了,它不要求有数据库,啥场景都能算。
而且,SQL 在处理很多有过程运算的时候也不方便,企业应用中常常会出现我们前在说过的长达几 K 十几 K 的 SQL。而大多数情况用 SPL 要简单得多,开发效率也就高得多。有过企业报表开发经验的同学都知道,报表没完没了做不完,开发成本极高。而我们的国产报表工具已经把呈现解决得很好了,仍然会出现这种现象,主要就是因为用 SQL 或 Java 等去实现数据计算的难度太大效率太低。会了 SPL,这些事就会轻松多了。
这一级别的 SPL 要比第 2 级的复杂,需要学会如何连接数据库以及各种其它数据源,还要知道如何被应用程序调用等。
第 3 级,AutoML 平台
再说说人工智能那条线。作为刚进入专业级别的程序员,还很难自己做出复杂的人工智能模型,所以还是要用这些 AutoML(自动机器学习)的工具。前面说了,除了易明建模是个轻量级产品外,业界提供的其它 AutoML 产品都有点沉重,虽然仍然不需要多少人工智能算法方面的知识,但还是要有点程序员的功底才能折腾得动(不是数据处理的功底,而是搞应用系统部署调试之类程序员本身的本事),所以列到这一级了。
这一类的产品和技术国内外都有一点,国外的更成熟一点,大名鼎鼎的 google 也在做。其它就不点名了,自己上网搜搜吧。
顺便说一句,易明建模也有程序员的版本,也可以算是 AutoML 的一种列到这一级。
类似地,这个也可以算作 3.5 级。
然后呢?然后就进入专业级别的深造期了,那技术就多了。
搞性能优化,用 SPL,但重点是高性能算法;玩大数据,用 Hadoop/Spark/…;做人工智能学 Python,其实更要学的是数学;…。都这级别了,也不用再说了。
好象有个问题,Python 的段位会如此之高吗,不是很多培训班宣称这是让职场人员提高工作效率的东西吗?
没搞错,Python 是很专业的东西,会 Python 的人也绝大多数都是重度专业选手,它只是看起来简单,用来学习基础编程逻辑是没有问题,但想学以致用来处理结构化数据就一点也不简单了,它完全不像某些培训班宣称的那样能让普通职场人员学会后可用于处理日常工作。这个话题在前面链接的那个零基础人员学编程的帖子里有讨论,有兴趣可以找来参考。
Python 拥有大量涉及人工智能技术的开源库,前面说的自动机器学习产品用起来简单,对于很多场景也足够用,但是顶尖的高手还希望能控制得更深入,而且自动机器学习软件也有不少解决不了的场景,这就需要自己来动手了。不过,这需要真正理解人工智能技术,而这些技术的核心是数学(统计学)。
除 Python 外,类似的产品技术还有商用的 SAS、开源的 R、以及 MATLAB 里也有很多算法,都用 Python 代表了吧。
最后附个路线图:
英文版