大家好,我是老乔,这里是超智学堂的《超智·统计学》系列课程。

本文是系列课程的第九期,3779个字,预计用时6分钟。

为了让学习更加体系化,本系列所有的内容,我都同步放在了【超智星球】网站上。

# 为什么要使用Python进行数据分析

先回顾一下,上一篇文章的内容。上篇文章,我重点推荐了R语言。主要理由如下:

1. R的使用模式是脚本(如果你对编程不感兴趣,选R)

2. 对于数据科学任务,R的语法更直观形象

3. 在数据处理方面,R非常优秀

4. 在数据可视化方面,R非常优秀

5. R在统计学地位突出(如果你是统计学相关,学R)

6. R也有其缺点,但依旧备受青睐(学了R不会没有用)

尽管我强烈推荐学R,但它也不是唯一的选择。对于某些人,Python可能是最好的选择。下面讲一下哪些情况下选择Python更好。

R说:“我R天生就是为这个领域而设计的。你Python是个外来户,凭什么跟我争地盘?“

Python说:“哼,你做的了也能做好的事,我也能做好;你做不好的事,我也做的很好;你做不了的事,我完全能做好”

嗯,很像《龙门飞甲》里面那句话:“你问我西厂什么东西,,,,东厂管得了的我要管,东厂管不了的我更要管,,,这就是西厂”。

### Python说:你做不了的,我做得了

我已经说了R更擅长数据科学。但如果你想建立软件系统的话,我认为Python更合适。

这涉及到两种场景与能力:通用编程能力、数据分析能力。

* 【在通用编程能力方面】,自从1991年诞生以来,Python现在已经成为最受欢迎的动态编程语言之一(其他还有Perl、Ruby等)。由于拥有大量的Web框架(比如Rails(Ruby)和Django(Python)),自从2005年,非常流行使用Python和Ruby进行网站建设工作。

* 【在数据分析能力方面】,近年来,由于Python的库(例如pandas和scikit-learn)不断改良,使其成为数据分析任务的一个优选方案。

我想澄清一下,不是说R“不能”写软件,只是说它“不适合”。R语言一出生就是为了数据分析领域设计的,它的常规语法、语义表达都更加适合数据领域。但是,这种特定领域的“便捷”,在熟悉通用编程语言的人看来,可能就是“灾难”。

Python的闪光点就是写软件。在这一点上,不只是跟R相比更适合写软件,而是跟所有编程语言JAVA、C等等比起来,Python都是一个很受推崇的语言。事实上,许许多多的人(包括我自己)都很容易爱上Python这门语言。

Python是一门解释型语言。这些语言常被称作脚本(scripting)语言,因为它们可以用于编写简短而粗糙的小程序(也就是脚本)。就像一些专家所说的那样,写Python代码就如同写伪代码。

但我个人并不喜欢“脚本语言”这个术语,因为它好像在说这些语言无法用于构建严谨的软件。

事实上,大多数代码都可以两部分:少量需要占用大部分执行时间的代码,以及大量不经常执行的“胶水代码”。大部分情况下,胶水代码的执行时间是微不足道的。我们可以把大量不经常执行的代码用Python,来写。然后就有精力去优化计算瓶颈的代码。

由于程序员的时间通常都比CPU时间值钱,这种在“程序性能”与“工作效率”之间的权衡,是非常有意义的。这也就是常说的“人生苦短,我用Python”。

选择Python不只是关乎易用性,更关键的是关乎一致性。Python可以避免“两种语言”问题。

很多组织通常都会用一种类似于领域特定的计算语言(如SAS和R)对新的想法进行研究、原型构建和测试,然后再将这些想法移植到某个更大的生产系统中去(可能是用Java、C#或C++编写的)

而如果选择Python,我们完全可以只使用Python这一种语言去构建以数据为中心的应用程序。为什么一种语言就够了,却要使用两个语言的开发环境呢?

我相信越来越多的企业也会这样看,因为研究人员和工程技术人员使用同一种编程工具将会给企业带来非常显著的组织效益。

此外,在对其他语言的调用,和数据源的连接、读取,对系统的操作,正则表达和文字处理等方面,Python都有着明显优势。

正因如此,许多企业和国家实验室也利用Python来“粘合”那些已经用了多年的遗留软件系统。这意味着学Python的学员,往往可以更快的适应一个复杂零散的工作场景需求。

总之,如果你曾经有软件开发经验或者你是计算机科学专业的话,我认为Python会更适合你。

## Python说:你做不好的,我做的好

在上一篇文章的最后,我们讲了R的诸多缺陷,并且,我们认为最致命的,还是性能。这使得它更适合个人学习和个人小型科研,很难在企业中、大型实验室中应用(或应用范围极大受限)

Python与R相比速度要快。Python可以直接处理上G的数据,而R不行。Python的数据挖掘包Orange canve 中的决策树分析50万用户10秒出结果,用R几个小时也出不来,8G内存全部占满--除非你水平很高,R矢量化编程做得好(对我上大学时用的ThinkPad T450来说,感觉只要是100M以上的数据,R都很难胜任,但是Python却基本胜任)

R分析数据时需要先通过数据库把大数据转化为小数据(通过groupby)才能交给R做分析,因此R不可能直接分析行为详单,只能分析统计结果。所以有人说:Python=R+SQL/Hive,并不是没有道理的。

Python能变为成功的科学计算工具的部分原因是,其胶水语言的特性,使得它能够轻松地集成C、C++以及Fortran代码。这进一步强化了性能方面的优势。

由于Python是一种解释型编程语言,因此大部分Python代码都要比用编译型语言(比如Java和C++)编写的代码运行慢得多。

对于高并发、多线程的应用程序而言(尤其是拥有许多计算密集型线程的应用程序),Python并不是一种理想的编程语言。

在那些要求延迟非常小或高资源利用率的应用中(例如高频交易系统),就需要使用诸如C++这样更低级、更低生产率的语言进行编程。

在这类问题上,Python允许用户使用原生的C或C++的来完成任务。比如,你可以调用基于C实现的线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。

当然了,咱这个系列的课程,完全不会出现这类代码。

## Python说:你的过去,我正在追赶

2012年的时候我们说R是学术界的主流,但是今天是2020年了。时代变了啊,R大人。

在过去的10年,Python从一个边缘或“自担风险”的科学计算语言,成为了数据科学、机器学习、学界和工业界软件开发最重要的语言之一。

至今,Python已经发展出了一个巨大而活跃的科学计算(scientific computing)社区。

以前,R的优势在于有包罗万象的统计函数可以调用,特别是在时间序列分析方面,无论是经典还是前沿的方法都有相应的包直接使用。

现在Python已经有了pandas。pandas提供了一组标准的时间序列处理工具和数据算法。因此,你可以高效处理非常大的时间序列,轻松地进行切片/切块、聚合、对定期/不定期的时间序列进行重采样等。

可能你已经猜到了,这些工具中大部分都对金融和经济数据尤为有用,但你当然也可以用它们来分析服务器日志数据。于是,近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大替代方案。

在数据可视化方面,Python也有诸多的库和包,我们后面会讲。但我要提的是,Python可以结合前端技术(html等),做出来的可视化图效果更酷炫。

比如百度Echarts:

## Python说:我的未来,你很难到达

现在Python正在慢慢取代R在学术界的地位。但Python之于R,不只是追赶,还是在超越。其未来的路子比R要宽广。很清晰的看到,R代表着过去,Python代表着未来。

这种取代,不是偶然的,而是历史的必然,其核心原因,是因为相比于R,Python更加适合当今这个时代数据科学的特点。

第一点,大数据。不多说了,前面我们讲过Python的性能。补充一下,我们有Pyspark,用于处理更大的大数据问题。

第二点,人工智能。Python比R更适合各类人工智能问题。我们本文主要说下机器学习和深度学习。

如果你想长期从事机器学习方面的研究,我建议你学Python。

客观的讲,R也有机器学习生态系统。特别地,R的caret包开发得很好,它有能力完成各种机器学习任务。比如:使用caret包建立回归模型(regression model)、支持向量机(SVM)、决策树(包括回归和分类)以及执行交叉验证(cross validation)等等。总之,R的机器学习生态系统发展得很好。

但是,Python在机器学习方面的支持出现更早。为实现各种不同机器学习方法,Python的scikit-learn库提供了一套更加简洁和易读的语法。而R中caret包的语法有时有点拙劣。尤其,caret包与Tidyverse包兼容得不是很好,输出的结果有时也很难处理。相反,Python的scikit-learn库与Python生态环境整合得很好。

市面上有关机器学习的书籍,其算法实现很多都是用Python写的。总之,如果你想致力于机器学习,我认为Python会更好。

除了传统机器学习,此外,深度学习可谓是目前人工智能领域最热门的技术之一,而Python是深度学习使用最热门的语言。

大多数深度学习框架都有Python接口,比如:TensorFlow,Keras,Pytorch,Theano,MXNET等等。

Python与各框架兼容得非常好,拥有大量贡献者、搜索结果、相关书籍和学术文章;Github上的深度学习项目大多数都是用Python写的。如果你是刚入门深度学习的新手,使用Keras是不错的选择。

相比较,R对深度学习框架兼容方面表现不佳。因此如果你想专注深度学习,Python可能更适合。

## 总结

至今为止,Python和R这是第二篇了。一篇写R,一篇写Python。

整体上来看,对于不喜欢编程的,我推荐R;喜欢编程的,我推荐Python。

选择困难症的:我推荐都学,并且推荐先学Python。除非有外部因素要求学R。

事实上,Python和R我都会,我个人会结合使用,下期,我会讲一下怎么让R和Python共舞。

感谢大家。可以关注我的公众号【超智星球】,或是知乎留言我。一起学习进步。我们下期再见。

r与python语法_Python和R:我推荐Python的几大理由相关推荐

  1. r语言和python-Python和R语言的区别_Python与R的区别和联系

    Python和R语言的区别_Python与R的区别和联系 可能问这个问题会很无脑,但是我还没有深入接触过Python,只是用过R语言.谁能帮我解答一下,这两者的主要区别呢?是否存在代替关系呢? 精彩解 ...

  2. python和r语言哪个简单_python与r语言哪个简单

    如果只想学一个语言的话,还是推荐python. 从我身边人的情况来看,很多学了很多R的人最后都选择再去多学一门python,包括我自己也是,而python很厉害的人却没听说过会来学R. 我其实学pyt ...

  3. matlab python对比_Python与R、Matlab的对比

    作为一枚程序员,想要研究Python编程语言与数学学习(教学)的结合,就不能不了解以及比对一下其他数学学习与应用的解决方案,比如R语言.Matlab等数学软件.经过广泛的搜索了解了一下国外的反馈与趋势 ...

  4. r语言python对比_Python和R语言之分析对比

    在Python中调用R或在R中调用Python,为什么是"和"而不是"或"? 在互联网中,关于"R和Python"的文章,排名前十的搜索结果 ...

  5. python中 r是什么意思_python中r含义

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 另外encoding可以指定解码格式,utf-8是现在的主流编码方式,如果没有指 ...

  6. python中 r是什么意思_python中\r的意义及用法

    \r的意义 \r 表示将光标的位置回退到本行的开头位置 \b表示将光标的位置回退一位 在python里print会默认进行换行,可以通过修改参数让其不换行 (1) python2中可以在print语句 ...

  7. 计算机python教程_Python 如何入门?附Python教程下载

    学习编程,有兴趣最好,小时候就开始捣鼓电脑.知识兔上有大量编程视频教程课程,都是精品课程,1080P超高清画质教学视频,精品之精品,找一套优秀Python课程教程或者找公众号超乎想象客服推荐一下,轻轻 ...

  8. python语法类似于php_通过PHP与Python代码对比浅析语法差异

    一.背景 人工智能这几年一直都比较火,笔者一直想去学习一番:因为一直是从事PHP开发工作,对于Python接触并不算多,总是在关键时候面临着基础不牢,地动山摇的尴尬,比如在遇到稍微深入些的问题时候就容 ...

  9. python创建_python 创建txt并写入Python基础1 Hello World!

    从今天开始和大家分享一下python最基础的知识,以便帮助初学者快速入门. 最最基础的当然是hello world 了,无论哪门语言都会从它开始... 简单的'Hello World!' 1. 直接运 ...

最新文章

  1. 20170507Linux七周二次课 io监控free ps 网络状态 抓包
  2. 下一个人才大缺口:量子计算研究人员
  3. react native 中下拉列表FlatList组件的讲解以及实例demo
  4. python装饰器-Python @函数装饰器及用法(超级详细)
  5. Autofac - 属性注入
  6. phpredis中文手册——《redis中文手册》 php版
  7. delphi 手机访问lan_索尼全新“黑科技”,手机秒变PS4,Apex英雄彻底沦为手游?...
  8. java ftp 中文上传_java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题...
  9. 新快现类似产品_小米全新折叠屏产品曝光,预计今年还有更多折叠屏产品亮相...
  10. 主网已经上线的币有哪些_什么是主网币圈主网上线意味着什么?
  11. 【python】详解类class的继承、__init__初始化、super方法
  12. 将XML文件数据插入到数据库中
  13. 笔记本电脑频繁自动重启_笔记本电脑经常自动重启怎么办
  14. JS时间增加2个小时
  15. linux识别硬盘时显示gpt,Ubuntu不识别GPT硬盘已有系统的解决方案
  16. 有哪些在深度模型添加黑盒水印的方法
  17. ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)
  18. FFmpeg滤镜:制作图片视频流(续)
  19. 香港大学赵恒爽老师招收计算机视觉博士/博士后/研究助理
  20. java c 速度_Java和C#运行速度对比:Java比C#快约3倍

热门文章

  1. 正版方舟建服务器,方块方舟怎么自建服务器 自建服务器方法详解
  2. 从Spark MLlib到美图机器学习框架实践
  3. 回溯法实例----著名医生的药方
  4. 看《赛德克·巴莱》有感!
  5. PLSQL 解析XML示例2
  6. 【实用工具】RD Clinet使用教程之ipad连接windows
  7. 金三银四,给大家肝一下面试~
  8. 在微型计算机中 多媒体信息包括,公务员考试常识题:1、具有多媒体功能的微型计算机系统中,常用的CD-ROM是...
  9. 虚拟化系统到VMware虚拟机
  10. 自制FM单频道收音机