数据分析,R还是Python?真的是个问题么?

浏览: 1545

RPython作为数据分析的两大主流语言,究竟哪一个更好的争论不绝于耳。但对于两个语言都了解尝试过的小伙伴而言,结论其实非常简单:都好但都有不好。下面从几个方面聊聊我的看法。

开发目的

据我近期的观察了解,国内对Python的推广和接受度更高,可是这并不能代表R就不好。我个人认为一个最根本的原因是Python非常容易上手,稍微有一点编程基础的朋友一周之内就可以开始自由编程。因此,对于很多数据分析的新手而言,学习Python无疑是最快捷的入门方法了。这就让我联想到Python的设计初衷不就是这样么?“优雅”,“明确”,“简单”等等。(Python设计哲学)。Python就是为了改善代码可读性和效率而生的。

那么 R?R不同于Python,它的出生就肩负着统计分析、绘图、数据挖掘的重要使命。那么可想而知,R在被开发的过程中就融入了很多统计学的血液。举一个重要的例子,R里read.csv("example.csv", stringsAsFactors = F)的第二项参数 stringsAsFactors的default值是TRUE,这就表示在没有说明的情况下文件内所有的string都被做factor处理。这个设计害我在几次读入数据时都吃了苦头,并且表示无法理解这样的设置,决心找R官方讨个公道。但在多方查证后真正理解了这样设计的初衷。R最开始就是被统计学家广泛使用,在许多统计学原理公式中string都直接被当做factor处理,例如很多modelling function“lm()”和“glm(),不如在一开始就以factor读入,方便操作(stringsAsFactors详解)。真是因为+这一系列的设计理念,导致没有统计学背景的初学者很难对R产生好感,作出R远不如Python的结论。

使用人群

也正是因为开发目的的不同,导致了Python和R粉丝群的不同。

对于有着编程经验的IT开发者而言,很多时候需要对数据做一些简单处理,这时候最快最易上手的Python就变成了首选。我的和我的朋友在做了一些Python项目过后,也深深明白了那种快感。从零开始,基本一个下午,就能完成一些简单的数据清洗小项目。我的一位从未接触过Python但一直用C的PhD朋友,三天内也完成了导师布置的用Python写的Hadoop小项目。

R的使用人群就像它的开发目的一样,主要是一些统计学家已经研究学者,他们从根本研究数据,对统计学有着十分深刻的理解,R也使他们在运用各种模型时更加方便。在学习R的过程中,有一句话让我印象十分深刻:”Thecloser you are to statistics, research and data science, the more you might preferR.”。

切身感悟

本科软件工程出身的我,粗浅的学习过C和JAVA,具备一定的编程理论知识。在研究生阶段开始数据分析学习时,毅然决然选择了Python以显示自己的编程能力。不夸张的说,Python帮助我解决了大部分数据作业,我也没有想过要去学习R。

GeoSpatial Analytics forBusiness Intelligence门课老师的强制要求下,开始学习R。这是一门基于地理信息的数据分析课程,整个课程阶段我都惊叹于进行各种地理shape数据的modelling时代码的简洁和package的丰富。以及最近的几个月开始了对R从基础开始的学习,越来越感慨R对于统计学的意义,只要是你能想要的model在R里都可以找到对应的package。在学习R的过程也是不断巩固统计学知识的过程,而统计学也是数据分析各种模型的基础。

结论

在不停游走于Python和R之间,我终于摸索出了一套使用它们的方法论。

Python和R应该作为数据分析的左右手出现,而不是对手。

很多数据分析项目的完整流程包含:

需求定义 → 数据获取→ 数据治理→ 数据分析→ 数据可视化

Python在数据获取和数据治理上有着非常明显的优势。例如网络爬虫,Python很多广泛应用的框架Scrapy等等。数据治理包括很多很细节的数据清洗工作,这个时候使用灵活性较强的Ptyhon会大大提高效率。并最终得到可以进行分析的“干净”的数据集。

数据分析这一步其实一开始是一个探索分析的过程,R在这方面比Python要便利的多,可以通过各种function,例如dim(),summary()等,快速的了解到数据集的整体特性。之后可以回滚到数据治理环节,和Python一起完成模型的特征提取。再者就是R丰富的各类分析模型,在处理好Raw数据过后,基本只需要几行代码就可以得到想要的数据挖掘结果。

最后的一步是数据可视化,数据分析师在向他人展示数据分析结果时,直观的图形图像往往能让人更好的理解。虽说感觉谈到数据化都是JS的天下,d3.js、django、leaflet等等。所以我们应该再学一门JS?(想想心都累了。)依然惊叹于R的package的丰富,目前市面上大部分在Business Analysis应用的可视化JS库都被R语言大神封装好了,加上R shiny R 的web framework可以封装发布(我的研究生论文就用到的Shiny做结果展示),直接向客户展示各种业务场景,十分高效。

所以,

R还是Python? 真的是个问题么?

推荐 1
本文由 张土豆 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

有想法!
不好意思,才看见您的回复!欢迎交流!

要回复文章请先登录注册