reticulate包——数据科学者的福音

简介: 如果你还在纠结:学数据科学到底用 python 还是 R 好?现在我的回答是:大可不必。现在两者的变量可以相互调用了。你可以用 R 做数据处理(tidyverse),可视化(ggplot2),用 python 做开发。

{B}P_~(8~8BBD%CFA0G$MIK.png


前言


如果你还在纠结:学数据科学到底用 python 还是 R 好?现在我的回答是:大可不必。现在两者的变量可以相互调用了。你可以用 R 做数据处理(tidyverse),可视化(ggplot2),用 python 做开发。具体可参考该文章:R Vs Python: What’s the


Difference?[1]

这一切有它就行了——reticulate 包

reticulate 包涵盖了用于 Python 和 R 之间协同操作的全套工具,在 R 和 Rstudio 中均可使用,主要包括:

1)在 R 中支持多种方式调用 Python。包括 R Markdown、加载 Python 脚本、导入 Python 模块以及在 R 会话中交互式地使用 Python。

2)实现 R 和 Python 对象之间的转换(例如 R 和 Python 数据框、R 矩阵与 NumPy 数组之间)。

在 R 会话中嵌入了 Python 会话,从而实现了无缝的、高性能的互操作性。如果你是使用 Python 进行某些工作的 R 开发人员或使用两种语言的数据科学团队的成员,那么 reticulate 包可以极大地简化你的工作流程!官方资料可见:reticulate 网站[2]


本文框架


`RQ3NT@HITJNU2]HFFYB65B.png

前期准备


安装 reticulate 包

可以直接安装,并进行加载,非常方便。

install.packages("reticulate")
library("reticulate")


下载 python 库

假设我们想用 pandas 库,但是有没有安装,那么一种方法是可以在 R 引擎下运行以下代码。可以下载 python 第三方库,也可以查看是否安装成功等其他操作。

py_install("pandas") #下载scipy库
py_module_available("pandas") #查看是否安装成功
#repl_python()# 查看python路径
#use_python("D:/anaconda/python.exe") #更换python路径


导入 python 库

安装完第三方库,就可以将其进行导入了,这里也是在 R 引擎下进行。

pd <- import("pandas")

可以发现,这与 pthon 代码不同的是:

  • import("os)代替了import os
  • $代替了.
  • <- 代替了 =


常用操作


reticulate 包含一个用于 R Markdown 的 Python 引擎,具有以下功能,具体可见reticulate: R interface to Python[3]

1)可在 R 会话中嵌入的单个 Python 会话中,运行 Python 块。同时 Python 块之间的共享变量/状态。

2)可打印 Python 输出,包括 matplotlib 的图形输出。

3)可使用 py 对象访问 R 中 Python 块中创建的对象。

4)使用 r 对象从 Python 中访问在 R 块中创建的对象。

作图

可以直接用 python 引擎绘图。

import numpy as np 
import matplotlib.pyplot as plt 
# 计算正弦曲线上点的 x 和 y 坐标
x = np.arange(0,  3  * np.pi,  0.1) 
y = np.sin(x)
plt.title("sine wave form")  # 使用 matplotlib 来绘制点
plt.plot(x, y) 
plt.show()

%~VJQOO5BP85G9FXJ09O$Q0.png5[N$Y5@F_7RN@5C%$XGH5O1.png

读取文件

python 怎么读取,这里也可以怎么读取,基本和在 jupter notebook 中是一样的。下面读取下 csv 格式的数据表。

import pandas as pd
df = pd.read_csv("test.csv", encoding="gbk")
df.head()

image.gif

返回的 df 是 Python 对象,我们可以看到表格不好看,这是 R 中的 Python 对象。


在 R 代码块中调用 Python 变量


刚刚讲的都是在 Rmakdown 中运行 Python 代码块,并不是在 R 代码块中运行 Python 代码或者调用 Python 变量,现在我们试试在 R 代码块中调用 Python 变量。

py$python 变量名

R 代码块中调用 Python 方法 py$python 变量名

  • py 相当于 Python 中的对象
  • $ 相当于 Python 中的
  • python_variable_name 是 Python 代码块中的变量名

比如在上文中 Python 的变量 df,在 R 中调用

```{r}
py$df

image.gif

现在调用 Python 对象 df 时,R 会默认将其转为 R 对象,所以内容一样,样式似乎变好看了。


source_python()

使用 reticulate 包中的 source_python('py 文件路径')可以导入 py 文件中的变量,这样就可以在 R 代码块中使用外部变量。例如我在 data.py 中准备 A 和 B 两个字符串

A = '我是庄闪闪,'B = '来自浙江温州'

在 R 代码块中运行 data.py

```{r}library(reticulate)
source_python("data.py")
paste0(A, B)
#我是庄闪闪,来自浙江温州


py_run_file()

在 R 代码块中运行项目文件夹中的 test.py 文件,可使用以下代码

library(reticulate)
py_run_file("test.py")


数据类型对比


4E(WR2(D(YMAL}E9ZY7TP]U.png

目录
相关文章
|
6月前
|
SQL 机器学习/深度学习 数据挖掘
云端数据科学平台Deepnote,相当于云上的Jupyter Note
云端数据科学平台Deepnote,相当于云上的Jupyter Note
209 0
|
3月前
|
存储 数据库 开发者
Web2py的神秘力量:如何用Python打造快速原型设计与开发,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,快速原型设计至关重要。Web2py作为一款Python Web框架,凭借其简洁的语法和高效开发流程受到开发者青睐。本文通过在线调查问卷系统的案例,展示Web2py在快速原型设计中的应用,包括需求分析、数据库设计、表单创建及路由实现,并提供示例代码,帮助读者理解其最佳实践。
25 1
|
机器学习/深度学习 算法 数据可视化
2022年Python顶级自动化特征工程框架⛵
特征工程一般是手动完成,不仅依赖于工程师的丰富经验,也非常耗时。因此『自动化特征工程』可以自动生成大量候选特征,帮助数据科学家显著提升了工作效率和模型效果。
1319 2
2022年Python顶级自动化特征工程框架⛵
|
机器学习/深度学习 搜索推荐 数据挖掘
24个终极数据科学项目(可免费获取资源)
本文精选了24个数据科学项目,并囊括了各个领域和各种不同大小的数据集。另外,所有的数据集都是开源、可免费获取的。
6736 0
|
Apache 开发工具 数据安全/隐私保护
提高代码可重用性, 减少重复劳动 -- 手把手带你 Python 自定义模块并上传到 pypi, 贡献自己创造的轮子为所有人使用, 让 Python 开发更简单
我们都知道程序中可通过定义函数来减少工作量,提高代码的可重用性,从而提高我们的开发效率.我们一直import的是别人的模块,那如果我们需要使用自己的模块,或者开发一个自己的模块供别人使用,我们自己造轮子该怎么做呢? 我们实际的开发中,只在一个文件中编写代码是不太可能的,当开发大型项目的时候,一个文件过于臃肿,第一个是不利于阅读,代码可读性极差,还不利于团队协作开,所以这时候我们需要引入模块的概念.下面我们来了解什么是模块
418 1
|
机器学习/深度学习 数据采集 传感器
猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目
猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目
104 0
猿创征文|Python-sklearn机器学习之旅:我的第一个机器学习实战项目
|
前端开发 JavaScript Go
2022 软件工程师状况报告:Go 最抢手|开发者最“嫌弃” PHP、Swift、Scala/R/Objective-C
2022 软件工程师状况报告:Go 最抢手|开发者最“嫌弃” PHP、Swift、Scala/R/Objective-C
185 0
2022 软件工程师状况报告:Go 最抢手|开发者最“嫌弃” PHP、Swift、Scala/R/Objective-C
|
数据可视化 数据处理 C++
reticulate包|数据科学者的福音
如果你还在纠结:学数据科学到底用 python 还是 R 好?现在我的回答是:大可不必。现在两者的变量可以相互调用了。你可以用 R 做数据处理(tidyverse),可视化(ggplot2),用 python 做开发。具体可参考该文章:R Vs Python: What’s the Difference?[1]
300 0
reticulate包|数据科学者的福音
|
资源调度 索引
《R数据科学》学习笔记|Note16:使用purrr实现迭代(下)
《R数据科学》学习笔记|Note16:使用purrr实现迭代(下)
125 0
《R数据科学》学习笔记|Note16:使用purrr实现迭代(下)
《R数据科学》学习笔记|Note12:使用magrittr进行管道操作
《R数据科学》学习笔记|Note12:使用magrittr进行管道操作
168 0
《R数据科学》学习笔记|Note12:使用magrittr进行管道操作