让Python和R共舞
2017-04-08 本文已影响160人
默默杂谈
Python和R已经成为数据分析中两大利器,两者各有所长,相互借鉴。
Python 的 pandas 从 R 中偷师 dataframes,R 中的 rvest 则借鉴了 Python 的 BeautifulSoup,我们可以看出两种语言在一定程度上存在的互补性。通常,我们认为 Python 比 R 在泛型编程上更有优势,而 R 在数据探索、统计分析是一种更高效的独立数据分析工具。所以说,同时学会Python和R这两把刷子才是数据科学的王道。本文将介绍R和Python的应用场景,同时介绍在Windows环境下实现R和Python的共舞通道——rpy2
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 本身是专门为统计分析应用建立的,所以拥有更多此类工具,尤其是在计量经济学方面的包,是Python无法比拟的
- 互动式图表/面板: 近来 bokeh、plotly、 intuitics 将 Python 的图形功能扩展到了网页浏览器,甚至我们可以用tornado+d3来进一步定制可视化页面,但 R 的 shiny 和 shiny dashboard 速度更快,所需代码更少。
如何实现R语言和Python的完美结合
- Python和R共享文件,将Python清理好的数据储存成cvs等格式,再交给R进行进一步的回归分析和图表绘制等。
- 让Python直接调用R函数;目前可以通过第三方库——rpy2实现R语言和Python的互通。
显然第二种方法可行性较高,但是windows环境下,rpy2的安装经常报错。我之前在安装rpy2时遇到了无数的坑,所以将经验共享给大家。
rpy2 安装教程
- conda安装
conda install rpy2
- 安装编译好的rpy2
- 下载地址:rpy2
- 打开cmd,cd + 下载路径;
- pip install rpy2文件名
安装完之后,如果我们直接导入rpy2,任然会存在报错问题。需要对环境进行设置:
import os os.environ['R_HOME'] = r'C:\Program Files\R\R-3.3.2' # R语言安装目录 os.environ['R_USER'] = r'C:\ProgramData\Miniconda3\Lib\site-packages\rpy2# rpy2安装目录
在Python中运行以上代码,之后便可以顺利的使用rpy2了。