摘要: 大数据的浪潮仍在继续。它渗透到了几乎所有的行业,信息像洪水一样地席卷企业,使得软件越发庞然大物,比如Excel看上去就变得越来越笨拙。数据处理不再无足轻重,并且对精密分析和强大又实时处理的需要变得前所未有的巨大。
大数据的浪潮仍在继续。它渗透到了几乎所有的行业,信息像洪水一样地席卷企业,使得软件越发庞然大物,比如Excel看上去就变得越来越笨拙。数据处理不再无足轻重,并且对精密分析和强大又实时处理的需要变得前所未有的巨大。
那么,在巨大的数据集中进行筛选的最好工具是什么?通过和数据骇客的交流,我们知道了他们用于硬核数据分析最喜欢的语言和工具包。
R语言
在这些语言名单中,如果R语言排第二,那就没其他能排第一。自1997年以来,作为昂贵的统计软件,如Matlab和SAS的免费替代品,它渐渐风靡全球。
在过去的几年时间中,R语言已经成为了数据科学的宠儿——数据科学现在不仅仅在书呆子一样的统计学家中人尽皆知,而且也为华尔街交易员,生物学家,和硅谷开发者所家喻户晓。各种行业的公司,例如Google,Facebook,美国银行,以及纽约时报都使用R语言,R语言正在商业用途上持续蔓延和扩散。
R语言有着简单而明显的吸引力。使用R语言,只需要短短的几行代码,你就可以在复杂的数据集中筛选,通过先进的建模函数处理数据,以及创建平整的图形来代表数字。它被比喻为是Excel的一个极度活跃版本。
R语言最伟大的资本是已围绕它开发的充满活力的生态系统:R语言社区总是在不断地添加新的软件包和功能到它已经相当丰富的功能集中。据估计,超过200万的人使用R语言,并且最近的一次投票表明,R语言是迄今为止在科学数据中最流行的语言,被61%的受访者使用(其次是Python,39%)。
此外,它的身影也渐渐出现在了华尔街。以前,银行分析师会全神贯注于Excel文件直到深夜,但现在R语言被越来越多地用于金融建模R,特别是作为一种可视化工具,Niall O’Connor,美国银行的副总裁如是说。 “R语言使我们平凡的表格与众不同,”他说。
R语言的日渐成熟,使得它成为了数据建模的首选语言,虽然当企业需要生产大型产品时它的能力会变得有限,也有的人说这是因为它的地位正在被其他语言篡夺。
“R更适合于做一个草图和大概,而不是详细的构建,”Michael Driscoll,Metamarkets的首席执行官说。 “你不会在谷歌的网页排名以及Facebook的朋友推荐算法的核心找到R语言。工程师会用R语言做原型,然后移交给用Java或Python写的模型。”
话说回来,早在2010年,Paul Butler就以R语言打造了全球的Facebook地图而著名,这证明了该语言丰富的可视化功能。尽管他现在已经不像以前那样频繁地使用R语言了。
“R正在一点点地过时,因为它的缓慢和处理大型数据集的笨重,”Butler说。
那么,他使用什么代替呢?请继续阅往下看。
Rython
如果说R语言是一个神经质又可爱的高手,那么Python是它随和又灵活的表兄弟。作为一种结合了R语言快速对复杂数据进行挖掘的能力并构建产品的更实用语言,Python迅速得到了主流的吸引力。Python是直观的,并且比R语言更易于学习,以及它的生态系统近年来急剧增长,使得它更能够用于先前为R语言保留的统计分析。
“这是这个行业的进步。在过去的两年时间中,从R语言到Python已经发生了非常明显的转变,”Butler说。
在数据处理中,在规模和复杂性之间往往会有一个权衡,于是Python成为了一种折中方案。IPython notebook和NumPy可以用作轻便工作的一种暂存器,而Python可以作为中等规模数据处理的强大工具。丰富的数据社区,也是Python的优势,因为可以提供了大量的工具包和功能。
美国银行使用Python在银行的基础架构中构建新的产品和接口,同时也用Python处理财务数据。“Python广泛而灵活,因此人们趋之若鹜,”O’Donnell说。
不过,它并非最高性能的语言,只能偶尔用于大规模的核心基础设施,Driscoll这样说道。
Julia
虽然当前的数据科学绝大多数是通过R语言,Python,Java,MatLab和SAS执行的。但依然有其他的语言存活于夹缝中,Julia就是值得一看的后起之秀。
业界普遍认为Julia过于晦涩难懂。但数据骇客在谈到它取代R和Python的潜力时会不由得眉飞色舞。Julia是一种高层次的,极度快速的表达性语言。它比R语言快,比Python更可扩展,且相当简单易学。
“它正在一步步成长。最终,使用Julia,你就能够办到任何用R和Python可以做到的事情,”Butler说。
但是至今为止,年轻人对Julia依然犹豫不前。Julia数据社区还处于早期阶段,要能够和R语言和Python竞争,它还需要添加更多的软件包和工具。
“它还很年轻,但它正在掀起浪潮并且非常有前途,”Driscoll说。
JAVA
Java,以及基于Java的框架,被发现俨然成为了硅谷最大的那些高科技公司的骨骼支架。 “如果你去看Twitter,LinkedIn和Facebook,那么你会发现,Java是它们所有数据工程基础设施的基础语言,”Driscoll说。
Java不能提供R和Python同样质量的可视化,并且它并非统计建模的最佳选择。但是,如果你移动到过去的原型制作并需要建立大型系统,那么Java往往是你的最佳选择。
Hadoop和Hive
一群基于Java的工具被开发出来以满足数据处理的巨大需求。Hadoop作为首选的基于Java的框架用于批处理数据已经点燃了大家的热情。Hadoop比其他一些处理工具慢,但它出奇的准确,因此被广泛用于后端分析。它和Hive——一个基于查询并且运行在顶部的框架可以很好地结对工作。
Scala
Scala是另一种基于Java的语言,并且和Java相同的是,它正日益成为大规模机器学习,或构建高层次算法的工具。它富有表现力,并且还能够构建健壮的系统。
“Java就像是建造时的钢铁,而Scala则像黏土,因为你之后可以将之放入窑内转变成钢铁,”Driscoll说。
Kafka和Storm
那么,当你需要快速实时的分析时又该怎么办呢?Kafka会成为你的好朋友。它大概5年前就已经出现了,但是直到最近才成为流处理的流行框架。
Kafka,诞生于LinkedIn内部,是一个超快速的查询消息系统。Kafka的缺点?好吧,它太快了。在实时操作时会导致自身出错,并且偶尔地会遗漏东西。
“有精度和速度之间有一个权衡,”Driscoll说, “因此,硅谷所有的大型高科技公司都会使用两条管道:Kafka或Storm用于实时处理,然后Hadoop用于批处理系统,此时虽然是缓慢的但超级准确。”
Storm是用Scala编写的另一个框架,它在硅谷中因为流处理而受到了大量的青睐。它被Twitter纳入其中,勿庸置疑的,这样一来,Twitter就能在快速事件处理中得到巨大的裨益。
鼓励奖:
MatLab
MatLab一直以来长盛不衰,尽管它要价不菲,但它仍然被广泛使用在一些非常特殊的领域:研究密集型机器学习,信号处理,图像识别,仅举几例。
Octave
Octave和MatLab非常相似,但它是免费的。不过,它在学术性信号处理圈子之外很少见到。
GO
GO是另一个正在掀起浪潮的后起之秀。它由Google开发,从C语言松散地派生,并在构建健壮基础设施上,正在赢得竞争对手,例如Java和Python的份额。
相关推荐
但它在单片机编程中的应用相对较少,主要是因为它缺乏高级语言的一些特性,如复杂的数据处理能力和丰富的库支持。 ###### 2.3.3 PL/M语言 PL/M语言具有良好的可读性和可靠性,但在单片机编程中也存在局限性,如不...
这种纯文本方式提供了更大的灵活性和表达能力,使得程序员能够用更接近于传统高级编程语言(如C或Pascal)的方式编写代码,这对于有软件背景的工程师来说更加熟悉和方便。 在ST语言中,你可以使用结构化的控制流...
Java是一种跨平台的面向对象编程语言,由Sun Microsystems开发,后来被Oracle公司收购。Java的核心理念是“一次编写,到处运行”,它的应用程序可以在任何支持Java虚拟机(JVM)的设备上运行。Java拥有丰富的类库,...
ST语言,也称为结构化文本(ST),是一种高级编程语言,它基于文本,用于工业自动化和控制系统的编程。根据IEC61131-3标准,ST语言被广泛应用于可编程逻辑控制器(PLC)和其他工业设备中。PLCopen是一个全球性的行业协会...
编程语言实现模式通常指的是在各种编程语言中实现设计模式、编程模式或系统架构模式的源代码示例。这些模式可以帮助开发者在遇到类似问题时,能够快速找到解决方案,提高代码质量和可维护性。以下是对这些模式的一些...
Perl是一种强大的、高级的脚本编程语言,最初由Larry Wall在1987年设计和开发。Perl在处理文本操作、系统管理任务、网络编程以及Web开发等方面具有出色的表现。"Perl语言编程教程"旨在帮助初学者和有一定经验的...
传统的数据处理通常需要使用如C、FORTRAN或C++、VB等编程语言进行复杂的算法编写和矩阵运算,这不仅耗时,还容易出错。然而,随着MATLAB(Matrix Laboratory)的引入,测绘数据处理的方式得到了显著的改善。 MATLAB...
结构化文本(Structured Text, ST)是IEC 61131-3标准定义的五种编程语言之一,适用于高级逻辑和数学运算,尤其适合编写复杂的控制程序。本资料合集主要关注的就是如何使用ST语言来对三菱PLC进行编程。 《三菱Q-L...
嵌入式系统的编程语言选择往往需要考虑到多个因素,包括执行效率、内存占用、可移植性、实时性能以及开发工具的可用性等。相比于传统的汇编语言,高级语言如C、C++、Python、Java等在这些方面都有其独特的优势。 ...
ST语言(结构化文本)是一种高级编程语言,适用于编程PLC(可编程逻辑控制器)。ABB-PLC-ST语言编程手册涵盖了使用ST语言编程时所需掌握的知识点和技术细节。ST语言具有类似于C语言的语法结构,是一种纯文本的编程...
Go语言,也被称为Golang,是由Google公司于2007年设计并推出的开源编程语言。它的设计目标是简洁、高效和可并发。Go语言以其快速编译、垃圾回收、C-like语法和内置并发机制而受到开发者们的喜爱,尤其在云计算和...
"Perl语言编程,最佳实践"这个主题涉及到的是如何有效地利用Perl进行编程,遵循良好的编程习惯,以提高代码质量、可读性和可维护性。 1. **变量和数据类型**:Perl支持多种数据类型,包括标量(scalar)、数组...
本文将深入探讨编程语言、基础编程以及与“左上三角”相关的概念,帮助初学者和有一定经验的程序员更好地理解这个主题。 首先,编程语言是计算机能理解和执行的指令集,它为人们提供了与机器交流的途径。常见的编程...
- 软件包:R有许多预装和可安装的软件包,如`ggplot2`用于高级数据可视化,`dplyr`用于数据处理,`tidyr`用于数据整理,`lm`和`glm`进行线性模型和广义线性模型分析。 3. **图形绘制** - `base R`图形系统:学习...
"线切割编程.ppt"可能是一个详细的演示文稿,详细讲解了线切割的工作原理、工艺参数设定、数据处理方法以及编程技巧。 线切割的数据处理主要包括以下几个方面: 1. **工件设计**:首先,需要将待加工零件的形状...
《VC串口编程源程序及数据处理》 在IT领域,串口通信是设备间进行数据交换的一种常用方式,尤其在嵌入式系统和工业控制中广泛应用。VC++(Visual C++)作为Microsoft开发的一款强大的集成开发环境,支持C++语言,...
1. Python语言特性:Python是一种解释性的、具备动态语义的高层编程语言,它允许开发者在编写程序时不必过分关注底层细节,专注于问题本身,从而简化编程过程,提高开发效率。Python的语法清晰简洁,支持面向对象、...
7. **应用领域**:数据流驱动的编程语言广泛应用于各种领域,包括信号处理、图像分析、实时系统、物联网(IoT)、金融交易系统以及大数据处理。例如,Apache Spark和Flink等大数据处理框架就采用了数据流模型。 8. **...