深度对比Python和R之争

概述

在真实的数据科学世界里,我们会有两个极端,一个是业务,一个是工程。偏向业务的数据科学被称为数据分析(DataAnalysis),也就是A型数据科学。偏向工程的数据科学被称为数据构建(DataBuilding),也就是B型数据科学。

从工具上来看,按由业务到工程的顺序,这个两条是:EXCELRPythonScala

在实际工作中,对于小数据集的简单分析来说,使用EXCEL绝对是最佳选择。当我们需要更多复杂的统计分析和数据处理时,我们就需要转移到Python和R上。在确定工程实施和大数据集操作时,我们就需要依赖Scala的静态类型等工程方法构建完整的数据分析系统。

Scala和Excel是两个极端,对于大多数创业公司而言,我们没有足够多的人手来实现专业化的分工,更多情况下,我们会在Python和R上花费更多的时间同时完成数据分析(A型)和数据构建(B型)的工作。而许多人也对Python和R的交叉使用存在疑惑,所以本文将从实践角度对Python和R中做了一个详细的比较。

应用场景对比应用Python的场景

网络爬虫/抓取:尽管rvest已经让R的网络爬虫/抓取变得容易,但Python的beautifulsoup和Scrapy更加成熟、功能更强大,结合django-scrapy我们可以很快的构建一个定制化的爬虫管理系统。

连接数据库:R提供了许多连接数据库的选择,但Python只用sqlachemy通过ORM的方式,一个包就解决了多种数据库连接的问题,且在生产环境中广泛使用。Python由于支持占位符操作,在拼接SQL语句时也更加方便。

内容管理系统:基于Django,Python可以快速通过ORM建立数据库、后台管理系统,而R中的Shiny的鉴权功能暂时还需要付费使用。

API构建:通过Tornado这个标准的网络处理库,Python也可以快速实现轻量级的API,而R则较为复杂。

应用R的场景

统计分析:尽管Python里Scipy、Pandas、statsmodels提供了一系列统计工具,R本身是专门为统计分析应用建立的,所以拥有更多此类工具。

互动式图表/面板:近来bokeh、plotly、intuitics将Python的图形功能扩展到了网页浏览器,甚至我们可以用tornado+d来进一步定制可视化页面,但R的shiny和shinydashboard速度更快,所需代码更少。

数据流编程对比

接着,我们将通过下面几个方面,对Python和R的数据流编程做出一个详细的对比。

参数传递

数据读取

基本数据结构对照

矩阵转化

矩阵计算

数据操作

参数传递

Python/R都可以通过命令行的方式和其他语言做交互,通过命令行而不是直接调用某个类或方法可以更好地降低耦合性,在提高团队协作的效率。

参数PythonR命令行输入Pythonpath/to/myscript.pyarg1argargRscriptpath/to/myscript.Rarg1argarg脚本识别importsysmy_args=sys.argvmyArgs-







































儿童白癜风饮食
北京白癜风治疗白癜风的医院



转载请注明:http://www.92nongye.com/zyjs/204616323.html

  • 上一篇文章:
  •   
  • 下一篇文章: