社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

数据科学入门丨选Python还是R

CDA数据分析师 • 5 年前 • 305 次点击  

作者 Brian Ray 

编译  Mika
本文为 CDA 数据分析师原创作品,转载需授权


对于想入门数据科学的新手来说,选择学Python还是R语言是一个难题,本文对两种语言进行了比较,希望能帮助你做出选择。


我是德勤的数据科学家主管,多年来我一直在使用Python和R语言,并且与Python社区密切合作了15年。本文是我对这两种语言的一些个人看法。


第三种选择



针对这个问题,Studio的首席数据科学家Htley Wickham认为,比起在二者中选其一,更好的选择是让两种语言合作。因此,这也是我提到的第三种选择,我在文本最后部分会探讨。


如何比较R和Python


对于这两种语言,有以下几点值得进行比较:


· 历史:

R和Python的发展历史明显不同,同时有交错的部分。


· 用户群体:

包含许多复杂的社会学人类学因素。


· 性能:

详细比较以及为何难以比较。


· 第三方支持:

模块、代码库、可视化、存储库、组织和开发环境。


· 用例:

根据具体任务和工作类型有不同的选择。


· 是否能同时使用:

在Python中使用R,在R中使用Python。


· 预测:

内部测试。


· 企业和个人偏好:

揭晓最终答案。


历史



简史:


ABC语言 - > Python 问世(1989年由Guido van Rossum创立) - > Python 2(2000年) - > Python 3(2008年)


Fortan语言 - > S语言(贝尔实验室) - > R语言问世(1991年由Ross Ihaka和Robert Gentleman创立) - > R 1.0.0(2000年) - > R 3.0.2(2013年)


用户群体


在比较Python与R的使用群体时,要注意:



只有50%的Python用户在同时使用R。


假设使用R语言的程序员都用R进行相关“科学和数字”研究。可以确定无论程序员的水平如何,这种统计分布都是真实。


这里回到第二个问题,有哪些用户群体。整个科学和数字社区包含几个子群体,当中存在一些重叠。


使用Python或R语言的子群体:


· 深度学习


· 机器学习


· 高级分析


· 预测分析


· 统计


· 探索和数据分析


· 学术科研


· 大量计算研究领域


虽然每个领域几乎都服务于特定群体,但在统计和探索等方面,使用R语言更为普遍。在不久之前进行数据探索时,比起Python,R语言花的时间更少,而且使用Python还需要花时间进行安装。


这一切都被称为Jupyter Notebooks和Anaconda的颠覆性技术所改变。


Jupyter Notebook:增加了在浏览器中编写Python和R代码的能力; 


Anaconda:能够轻松安装和管理Python和R。


现在,你可以在友好的环境中启动和运行Python或R,提供开箱即用的报告和分析,这两项技术消除了完成任务和选择喜欢语言间的障碍。Python现在能以独立于平台的方式打包,并且更快地提供快速简单的分析。


社区中影响语言选择的另一个因素是“开源”。不仅仅是开源的库,还有协作社区对开源的影响。讽刺的是,Tensorflow和GNU Scientific Library等开源软件(分别是Apache和GPL)都与Python和R绑定。虽然使用R语言的用户很多,但使用Python的用户中有很多纯粹的Python支持者。另一方面,更多的企业使用R语言,特别是那些有统计学背景的。


最后,关于社区和协作,Github对Python的支持更多。如果看到最近热门的Python包,会发现Tensorflow等项目有超过3.5万的用户收藏。但看到R的热门软件包,Shiny、Stan等的收藏量则低于2千。


性能


这方面不容易进行比较。


原因是需要测试的指标和情况太多。很难在任何一个特定硬件上测试。有些操作通过其中一种语言优化,而不是另一种。


循环


在此之前让我们想想,如何比较Python与R。你真的想在R语言写很多循环吗?毕竟这两种语言的设计意图不太相同。


{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "%load_ext rpy2.ipython"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def do_loop(u1):\n",
    "\n",
    "    # Initialize `usq`\n",
    "    usq = {}\n",
    "\n",
    "    for i in range(100):\n",
    "      # i-th element of `u1` squared into `i`-th position of `usq`\n",
    "      usq[i] = u1[i] * u1[i]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%R\n",
    "do_loop 


Python为0.000037秒,R为0.00158秒


包括加载时间和在命令行上运行:R需要0.238秒,Python需要0.147秒。强调,这并不是科学严谨的测试。


测试证明,Python的运行速度明显加快。通常这并没有太大影响。


除了运行速度外,对于数据科学家而言哪种性能更重要?两种语言之所以受欢迎是因为它们能被用作命令语言。例如,在使用Python时大多时候我们都很依赖Pandas。这涉及到每种语言中模块和库,以及其执行方式。


第三方支持


Python有PyPI,R语言有CRAN,两者都有Anaconda。


CRAN使用内置的install.packages命令。目前,CRAN上有大约1.2万个包。其中超过1/2的包都能用于数据科学。


PyPi中包的数量超过前者的10倍,约有14.1万个包。专门用于科学工程的有3700个。其中有些也可以用于科学,但没有被标记。


在两者中都有重复的情况。当搜索“随机森林”时,PyPi中可以得到170个项目,但这些包并不相同。


尽管Python包的数量是R的10倍,但数据科学相关的包的数量大致相同。


运行速度


比较DataFrames和Pandas更有意义。


我们进行了一项实验:比较针对复杂探索任务的执行时间,结果如下:



在大多数任务中Python运行速度更快。


来源:

http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882


可以看到,Python + Pandas比原生的R语言DataFrames更快。注意,这并不意味着Python运行更快,Pandas 是基于Numpy用C语言编写的。


可视化



这里将ggplot2与matplotlib进行比较。


matplotlib是由John D. Hunter编写的,他是我在Python社区中最敬重的人之一,他也是教会我使用Python的人。


Matplotlib虽然不易学习但能进行定制和扩展。ggplot难以进行定制,有些人认为它更难学。


如果你喜欢漂亮的图表,而且无需自定义,那么R是不错的选择。如果你要做更多的事情,那么Matplotlib甚至交互式散景都不错。同样,R的ShinnyR能够增加交互性。


是否能同时使用


可能你会问,为什么不能同时使用Python和R语言?


以下情况你可以同时使用这两种语言:


· 公司或组织允许;


· 两种都能在你的编程环境中轻松设置和维护;


· 你的代码不需要进入另一个系统;


· 不会给合作的人带来麻烦和困扰。


一起使用两种语言的方法是:


· Python提供给R的包:如rpy2、pyRserve、Rpython等;


· R也有相对的包:rPython、PythonInR、reticulate、rJython,SnakeCharmR、XRPython


· 使用Jupyter,同时使用两者,例子如下:



之后可以传递pandas的数据框,接着通过rpy2自动转换为R的数据框,并用“-i df”转换:



来源:

http://nbviewer.jupyter.org/gist/brianray/734bd54f468d9a6db9171b2cfc98405a


预测


Kaggle上有人对开发者使用R还是Python写了一个Kernel。他根据数据发现以下有趣的结果:



· 如果你打算明年转向Linux,则更可能是Python用户;


· 如果你研究统计数据,则更可能使用R;如果研究计算机科学,则更可能使用Python;


· 如果你还年轻(18-24岁),则更可能是Python用户;


· 如果你参加编程比赛,则更可能是Python用户;


· 如果你明年想使用Android,则更可能是Python用户;


· 如果你想在明年学习SQL,则更可能是R用户;


· 如果你使用MS office,则更可能是R用户;


· 如果你想在明年使用Rasperry Pi,则更可能是Python用户;


· 如果你是全日制学生,则更可能是Python用户;


· 如果你使用的敏捷方法(Agile methodology),则更可能是Python用户;


· 如果对待人工智能,比起兴奋你更持担心态度,则更可能是R用户。


企业和个人偏好


当我与Googler和Stack Overflow的大神级人物Alex Martelli交流时,他向我解释了为什么Google最开始只官方支持少数几种语言。即使是在Google相对开发的环境中,也存在一些限制和偏好,其他企业也是如此。


除了企业偏好,企业中第一个使用某种语言的人也会起到决定性作用。第一个在德勤使用R的人他目前仍在公司工作,目前担任首席数据科学家。我的建议是,选择你喜欢的语言,热爱你选择的语言,起到领导作用,并热爱你的事业。


当你在研究某些重要的内容时,犯错是难以避免的。然而,每个精心设计的数据科学项目都为数据科学家留有一些空间,让他们进行实验和学习。重要的是保持开放的心态,拥抱多样性。


最后就我个人而言,我主要使用Python,之后我期待学习更多R的内容。


原文链接:

https://blog.usejournal.com/python-vs-and-r-for-data-science-833b48ccc91d



更多精彩文章

Python能用来做什么?以下是Python的三大主要用途

数据科学求职丨简历中应避免的四个错误

盘点丨2018年热门Python库丨TOP20

【数据看球】2018 年世界杯夺冠预测,CDA带你用机器学习来分析

十分钟带你看Google I/O 2018的亮点

在Booking当数据科学家是怎样一种体验

轻松看懂什么是以太坊

收藏丨学习数据科学不可错过的优质资源

TED演讲-数据科学家最重要的技能是什么

区块链将影响的19个行业





今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/8sNXoY0oVZ
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/20670
 
305 次点击