近年来,移动互联网发展迅猛,我国网民数量突破9亿,海量的用户产生了超大规模的数据。面对用户成千上万的浏览记录、记录行为数据,如果就单纯的Excel来进行数据处理是远远不能满足的。
当你遇到一个大数据项目时,如果只用一些操作软件来分析,而不怎么如何用逻辑数据来分析的话,那也只是简单的数据处理。当你知道了大数据项目的问题领域,也知道使用什么框架来处理数据之后,那么,问题来了,你要选择哪种语言呢?
今天,本文为大家介绍一下数据分析的常用语言。
Excel
EXCEL是其中最简单的,运用十分广泛。使用EXCEL分析数据的话,图表只是基础,还要学会使用透视图以及VBA函数。Excel的功能其实非常强大,尤其是通过学习VBA,几乎能解决所有的问题,需要花费一些时间,但是Excel的数据处理量并不是很大,几十万而已,大数据量还要另寻方法。
SPSS
SPSS最初是社会科学统计软件,如果刚入门数据分析,懂点SPSS是非常有好处的,当然前提是要懂SQL。SPSS得使用对人的能力要求不高,编程模块很少使用,通常用于科学、市场之类的调研,在院校中使用较多。SPSS适用于市场研究,上手较快。如果会编程的话,功能还是蛮强大的。
SAS
R语言
若要列出所有程序语言,你能忘记其他的没关系,但最不能忘的就是R。从1997年悄悄地出现,最大的优势就是它免费,是除了昂贵的统计软件Matlab或SAS之外的另一种选择。
但是在过去几年来,它的身价大翻转,变成了资料科学界眼中的宝。不只是木讷的统计学家熟知它,包括WallStreet交易员、生物学家,以及硅谷开发者,他们都相当熟悉R。多元化的公司像是Google、Facebook、美国银行以及NewYorkTimes通通都使用R,它的商业效用持续提高。
R做量化交易
R的好处在于它简单易上手,透过R,你可以从复杂的数据集中筛选你要的数据,从复杂的模型函数中操作数据,建立井然有序的图表来呈现数字,这些都只需要几行程序代码就可以了,打个比方,它就像是好动版本的Excel。
R最棒的资产就是活跃的动态系统,R社群持续地增加新的软件包,还有以内建丰富的功能集为特点。目前估计已有超过200万人使用R,最近的调查显示,R在数据科学界里,到目前为止最受欢迎的语言,占了回复者的61%(紧追在后的是39%的Python)。
它也吸引了WallStreet的注目。传统而言,证券分析师在Excel档从白天看到晚上,但现在R在财务建模的使用率逐渐增加,特别是可视化工具,美国银行的副总裁NiallO’Conno说,「R让我们俗气的表格变得突出」。
在数据建模上,它正在往逐渐成熟的专业语言迈进,虽然R仍受限于当公司需要制造大规模的产品时,而有的人说他被其他语言篡夺地位了。
“R更有用的是在画图,而不是建模。”顶尖数据分析公司Metamarkets的CEO,MichaelDriscoll表示,
“你不会在Google的网页排名核心或是Facebook的朋友们推荐算法时看到R的踪影,工程师会在R里建立一个原型,然后再到Java或Python里写模型语法”。
举一个使用R很有名的例子,在2010年时,PaulButler用R来建立Facebook的世界地图,证明了这个语言有多丰富多强大的可视化数据能力,虽然他现在比以前更少使用R了。
“R已经逐渐过时了,在庞大的数据集底下它跑的慢又笨重”Butler说。
所以接下来他用什么呢?
Python
如果说R是神经质又令人喜爱的Geek,那Python就是随和又好相处的女生。
Python结合了R的快速、处理复杂数据采矿的能力以及更务实的语言等各个特质,迅速地成为主流,Python比起R,学起来更加简单也更直观,而且它的生态系统近几年来不可思议地快速成长,在统计分析上比起R功能更强。
Butler说,“过去两年间,从R到Python地显著改变,就像是一个巨人不断地推动向前进”。
在数据处理范畴内,通常在规模与复杂之间要有个取舍,而Python以折衷的姿态出现。IPythonNotebook(记事本软件)和NumPy被用来暂时存取较低负担的工作量,然而Python对于中等规模的数据处理是相当好的工具;Python拥有丰富的资料族,提供大量的工具包和统计特征。
美国银行用Python来建立新产品和在银行的基础建设接口,同时也处理财务数据,“Python是更广泛又相当有弹性,所以大家会对它趋之若鹜。”O’Donnell如是说。
然而,虽然它的优点能够弥补R的缺点,它仍然不是最高效能的语言,偶尔才能处理庞大规模、核心的基础建设。Driscoll是这么认为的。
Julia
今日大多数的数据科学都是透过R、Python、Java、Matlab及SAS为主,但仍然存在着鸿沟要去弥补,而这个时候,新进者Julia看到了这个痛点。
Julia仍太过于神秘而尚未被业界广泛的采用,但是当谈到它的潜力足以抢夺R和Python的宝座时,数据黑客也难以解释。原因在于Julia是个高阶、不可思议的快速和善于表达的语言,比起R要快的许多,比起Python又有潜力处理更具规模的数据,也很容易上手。
“Julia会变的日渐重要,最终,在R和Python可以做的事情在Julia也可以”。Butler是这么认为的。
就现在而言,若要说Julia发展会倒退的原因,大概就是它太年轻了。Julia的数据小区还在初始阶段,在它要能够和R或Python竞争前,它还需要更多的工具包和软件包。
Driscoll说,它就是因为它年轻,才会有可能变成主流又有前景。
Java
Driscoll说,Java和以Java为基础的架构,是由硅谷里最大的几家科技公司的核心所建立的,如果你从Twitter、Linkedin或是Facebook里观察,你会发现Java对于所有数据工程基础架构而言,是非常基础的语言。
Java没有和R和Python一样好的可视化功能,它也不是统计建模的最佳工具,但是如果你需要建立一个庞大的系统、使用过去的原型,那Java通常会是你最基的选择。
Hadoop and Hive
为了迎合大量数据处理的需求,以Java为基础的工具群兴起。Hadoop为处理一批批数据处理,发展以Java为基础的架构关键;相较于其他处理工具,Hadoop慢许多,但是无比的准确和可被后端数据库分析广泛使用。和Hive搭配的很好,Hive是基于查询的架构下,运作的相当好。
Matlab
Matlab可以说是历久不衰,即使它标价很高;在非常特定的利基市场它使用的相当广泛,包括密集的研究机器学习、信号处理、图像辨识等等。
Octave
Octave和Matlab很像,除了它是免费的之外。然而,在学术信号处理的圈子,几乎都会提到它。
GO
GO是另一个逐渐兴起的新进者,从Google开发出来的,放宽点说,它是从C语言来的,并且在建立强大的基础架构上,渐渐地成为Java和Python的竞争者。
哪种语言胜出?
你该使用哪种语言用于大数据项目?恐怕这还得“视情况而定”。如果你对晦涩的统计运算进行繁重的数据分析工作,那么你不青睐R才怪。如果你跨GPU进行NLP或密集的神经网络处理,那么Python是很好的选择。如果想要一种加固的、面向生产环境的数据流解决方案,又拥有所有重要的操作工具,Java或Scala绝对是出色的选择。
当然,不一定非此即彼。比如说,如果使用Spark,你可以借助静态数据,使用R或Python来训练模型和机器学习管道(pipeline),然后对该管道进行序列化处理,倒出到存储系统,那里它可以供你的生产Scala
Spark Streaming应用程序使用。虽然你不应该过分迷恋某一种语言(不然你的团队很快会产生语言疲劳),使用一套发挥各自所长的异构语言也许会给大数据项目带来成效。
这么多的软件可以使用,但不是每个都要会,根据你的目标和方向,选定一个最适合的工具使用吧!