一、Python与R功能对比分析

1、python与R相比速度要快。python可以直接处理上G的数据;R不行,R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析,因此R不可能直接分析行为详单,只能分析统计结果。Python=R+SQL/Hive

2、如果是统计理论研究、前沿科学研究,R比python更胜一筹。R的优势在于有包罗万象的统计函数可以调用,特别是在时间序列分析方面(主要用在金融分析与趋势预测)无论是经典还是前沿的方法都有相应的包直接使用;相比python在这方面贫乏不少。R的使用人群主要是一些高校、医药的统计学家,新出现的理论很快就被社区开发出相应的库,以供调用。

3、python的工程化应用强于R。Python的优势在于其胶水语言的特性,由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!

4、python的应用场景大于R。Python是一套比较平衡的语言,各方面都可以,而R是在统计、数据分析方面比较突出。但是数据分析其实不仅仅是统计,前期的数据收集,数据处理,数据抽样,数据聚类,以及比较复杂的数据挖掘算法,数据建模等等这些任务,只要是100M以上的数据,R都很难胜任,但是Python却基本胜任。

5、python处理大数据的速度快于R。一些底层用C写的算法封装在python包里后性能非常高效(Python的数据挖掘包Orange canve 中的决策树分析50万用户10秒出结果,用R几个小时也出不来,8G内存全部占满)。

二、Python与R应用场景对比分析

(1)使用 Python 进行数据预处理、数据清洗,特别针对于非结构化数据(如网页,图像,文本等):

  • 极强的灵活性,能够从自由文本、网站和社交媒体网站提取信息
  • 便于图像挖掘和为分析准备数据
  • 处理大量的数据的时候比 R 语言更好

(2)使用 R 进行分析、数据可视化与建模:

  • 为分析提供了极好的灵活性
  • R 使你在分析的时候更容易思考
  • 由于有着十分活跃的统计与数学社区,可以持续的更新和增强分析功能优秀的数据可视化工具
  • 优秀的数据可视化工具

三、权威文献

IEEE:Python高居首位

世界上最大的技术专业协会 IEEE 在几年前已经创建了一个编程语言排名。这个 IEEE 的排名系统使用一组 12 个指标,包括比如谷歌的搜索量、谷歌的趋势、Twitter 的点击次数、GitHub 的库、Hacker News 的帖子等等。使用这种方法,他们将几十种编程语言进行排名和分类。

在他们对 2017 年顶级编程语言的回顾中,python高居首位,是最好的开源语言。

热门开源语言排名

文献:http://36kr.com/p/5084329.html

 


以下作为Python和R的优缺点分析,已经在开头整合分析,所以下面部分简单了解即可

四、Python优点

  1. 作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
  2. 易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。
  3. 开源。Python是FLOSS(自由/开放源码软件)之一,简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。Python希望看到一个更加优秀的人创造并经常改进。
  4. 可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!
  5. 在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单。由于你只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。
  6. Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
  7. 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
  8. 丰富的库。Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
  9. Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。
  10. 规范的代码。Python采用强制缩进的方式使得代码具有极佳的可读性。

五、python语言的缺点

很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。(对很多用户而言这也不算是限制)

  1. 运行速度,有速度要求的话,用C++改写关键部分吧。不过对于用户而言,机器上运行速度是可以忽略的。因为用户根本感觉不出来这种速度的差异。
  2. 既是优点也是缺点,python的开源性是的Python语言不能加密,但是目前国内市场纯粹靠编写软件卖给客户的越来越少,网站和移动应用不需要给客户源代码,所以这个问题就是问题了。国随着时间的推移,很多国内软件公司,尤其是游戏公司,也开始规模使用他。
  3. 构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。不过这也从另一个侧面说明,python比较优秀,吸引的人才多,项目也多。

六、R的优点:

  1. 免费... 开源... (这是最重要的一点好不好,也是SAS流行于公司,R流行于研究机构和大学的最主要原因)
  2. 是专门为统计和数据分析开发的语言,各种功能和函数琳琅满目,其中成熟稳定的一抓一把。
  3. 语言简单易学。不需要太多底层编程,解决了许多非IT人需要面对大量编程的困扰,所以适合统计学人群,想的多,编程工作少一点。
  4. 更新较快。R的使用人群主要是一些高校、医药的统计学家,新出现的理论很快就被社区开发出相应的库,以供调用。

七、R的缺点:

1. 对大数据、大文本处理极差。

2. 内存管理和平行处理(parallel processing/programming)都为人诟病。数据小时没有感觉,数据大了就各种报错

3. package的可靠性问题,因为开源不可靠。

4.当你跑比较大的simulation,对效率有要求的时候,有时还是不得不用C,这可能是10小时和10分钟的差别,毫不夸张。

Python、R对比分析的更多相关文章

  1. 横向对比分析Python解析XML的四种方式

    横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...

  2. Go/Python/Erlang编程语言对比分析及示例

    本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性,不过最主要的原因是这几个我比较熟悉. Go的很多语言特性借鉴 ...

  3. Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!

    Go/Python/Erlang编程语言对比分析及示例   本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...

  4. 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析

    老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...

  5. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

  6. python编辑器对比和推荐

    python编辑器对比和推荐   我先给一个初步的表格吧,大家如果有什么意见,或有补充,欢迎提出.有些我没有用过,先不写了.以下是我使用过的python IDE: 除了PythonWin, Visua ...

  7. [python]Python代码安全分析工具(Bandit)

    简介: Bandit是一款Python源码分析框架,可用于Python代码的安全性分析.Bandit使用标准库中的ast模块,将Python源码解析成Python语法节点构成的树.Bandit允许用户 ...

  8. 用python探索和分析网络数据

    Edited by Markdown Refered from: John Ladd, Jessica Otis, Christopher N. Warren, and Scott Weingart, ...

  9. (转)ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

随机推荐

  1. 第十章、vim 程序编辑器

    第十章.vim 程序编辑器   1. vi 与 vim 1.1 为何要学 vim 2. vi 的使用 2.1 简易执行范例 2.2 按键说明 2.3 一个案例的练习 2.4 vim 的暂存档.救援回复 ...

  2. PL/SQL:these query result are not updateable,include the ROWID to get updateab -----for update

    these query result are not updateable,include the ROWID to get updateab 原因: 其实,选中一个表后,右键,如果选择“query ...

  3. C# 请求Https

    /// <summary> /// Get请求 /// </summary> /// <param name="Url"></param& ...

  4. 程序员必备技能:代码审查 (Google牛人谈Code Review)

    在上一篇博客里我暗示自己将不在为Google工作. 我还没有决定好去哪儿-有几个非常不错的工作机会让我选择.鉴于这段时间内我不受雇于任何公司,我想我可以写点和专业相关的东西,这些东西很有趣,但是如果我 ...

  5. LeetCode刷题第一天

    1 . 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用 ...

  6. UML 简介笔记

    1. UML 是什么? UML 统一建模语言是一组图形表示法,可以帮助描述和设计软件系统,特别是使用面向对象 OO 风格建造的软件系统. 2. 使用 UML 的方式 UML 有 3 种使用模式:草稿, ...

  7. Java 学习笔记(2)——基本语句、控制结构

    上一篇中简单谈了一下自己对Java的一些看法并起了一个头,现在继续总结java的相关语法.java语法总体上与C/C++一样,所以对于一个C/C++程序员来说,天生就能看懂Java代码.在学习java ...

  8. php 生成唯一id的几种解决方法(实例)

    php 生成唯一id,网上查了下,有很多的方法 1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid ...

  9. Web前端面试指导(十八):用纯CSS创建一个三角形的原理是什么?

    题目点评 三角形的图标在网页设计是很常见的,属于基本常识题,只要在练习做到过这个功能都能回答出来,可以把你做过的思路描述出来就可以了,本题的难易程度为简单 答题要点 1.采用的是均分原理 盒子都是一个 ...

  10. 【Html基础】之<h1>~<h6> <p> <br> <hr>

    学习html无从下手,就在w3school的html手册按着教程学习了下. 什么是html? html是指超文本标记语言,即Hyper Text Markup Language html不是一种编程语 ...