最近人工智能的概念在IT界非常火,许多小伙伴想进入这一领域,但还没想好选啥“兵器”称手,那这篇文章可能非常适合你。
业界的翘楚之争集中在R、Python和SAS上。在商业分析领域,SAS是无可争辩的霸主,但是太贵了,三者中他是唯一的商业软件,即便对专业的分析师个人而言,根本买不起,因此本篇将着重讨论R和Python的优劣性。而从我们获取的调查表来看,对于起步阶段(数据分析经验在5年以内的分析师),R和Python确实是绝大部分人的首选。
R是一门功能性的语言,就是说语言本身只是辅助,有点像Excel里的VBA语言,相较于语言本身,它的环境才是开发的重点;而Python更像是EIFFEL,C++之类的面向对象的编程语言。
正如我在第一篇文章里说的(初始R语言),R是由统计学家发明的,其自身就是一门统计学科。而Python,尽管也包含诸如“statsmodels”之类的深入统计模块,R的生态系统在学术上会钻得更深。
两者无法比较孰优孰劣,只是看问题的角度不同,就像如果把一个复杂的数学问题分别抛给程序员和数据专员,程序员会关注解决问题的先后步骤;数据专员会更关心问题背后的逻辑;程序员解决问题更快,数据专员解决虽慢,但能建立算法模型解决以后相似的问题。
下面我们来比较两种语言在实操中的区别:
导入文件:
R中导入文件,直接使用箭头给变量赋值(统计学家果然毫无编程底子;-p)
Python中导入文件,正如我前面所提到的,需要先导入一个面板数据分析模块(Pannel Data Analysis,即pandas),再读取目标CSV文件。
这个模块是记录2013年nba所有球员的各项指标总数,共有481行(运动员)31列(指标)。
查看记录,在R里面是一条命令,比如我们查看第一条记录就是head(nba,1)
而在python里面,他是这个数组对象的一个方式类属性(method)。
对于空值数据的处理:在现实世界里,空值是统计中无法避免的问题。比如说某项民意调查,即使问卷只有两三道题目,也无法保证所有人都全部作答了。对于NBA里的球员,有些人一个赛季没投过三分球,那他的三分球命中率就是空值,在统计人员平均值时,这些人需要从分子和分母中都去掉。在R语言中,需要添加移除NA字段的约束(na.rm=TRUE),不然NA作为字符串计入数值运算时会报错。
而Python默认会去掉NA字段。
绘制散点对比图:这里就体现R语言的长处了。
可以看到经过编译之后,R的对比图形更清晰:
而在Python中,与散点对比图拟合最好的是seaborn和matplotlib模块,但仍然无法将图形完全量化(欠拟合):
由上图延伸出的所有运动员的特定指标的散点归类图就能看到更加明显的差别。R语言调用的是群集库(cluster library)中的群集绘图函数(clusplot function):
而Python调用的是scikit-learn库中的PCA类,也是要基于第四点中提到的Matplotlib模块来调用。
综上所述,R和Python都有非常强大的数据处理能力。不过R在处理数据分析时不需要太多的模块,绝大部分都是自带的功能;而Python需要依赖于不同的组件包来实现这些功能。因此小编选择R作为进入数据分析领域的兵器,将不定时在本公众号内更新实战经验,敬请期待!
领取专属 10元无门槛券
私享最新 技术干货