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

目录
相关文章
|
18天前
|
人工智能 数据可视化 数据挖掘
【Python】Python全国工作岗位数据分析(源码)【独一无二】课程设计
【Python】Python全国工作岗位数据分析(源码)【独一无二】课程设计
|
4月前
|
数据可视化 JavaScript 前端开发
十大Python可视化工具,太强了
十大Python可视化工具,太强了
|
4月前
|
算法 调度 决策智能
Python高级算法——模拟退火算法(Simulated Annealing)
Python高级算法——模拟退火算法(Simulated Annealing)
148 1
|
8月前
|
存储 人工智能 运维
远程工作和TS全栈
我在做一套 TS 全栈(Nextjs+Nestjs)开发课,同时经营一个作品服务推广/招聘求职/外包需求接单的 Discord 社区
97 0
|
Java C语言 Python
【paddle领航团基础python课程】三岁水课—python基础
大家好,这里是三岁,别的不会,擅长白话,今天就是我们的白话系列,内容就是大家看的迷迷茫茫的python基础,由于python是自学的,我也翻看了很多的教学视频和书籍,也看过部分的文档,写过自己的心得与笔记,那么接下看看,让我们一起来看看内容
101 0
【paddle领航团基础python课程】三岁水课—python基础
|
数据可视化 数据处理 C++
reticulate包|数据科学者的福音
如果你还在纠结:学数据科学到底用 python 还是 R 好?现在我的回答是:大可不必。现在两者的变量可以相互调用了。你可以用 R 做数据处理(tidyverse),可视化(ggplot2),用 python 做开发。具体可参考该文章:R Vs Python: What’s the Difference?[1]
256 0
reticulate包|数据科学者的福音
|
自然语言处理 安全 索引
《R数据科学》学习笔记|Note13:函数
《R数据科学》学习笔记|Note13:函数
180 0
|
机器学习/深度学习 人工智能 算法
开发人员亲自上场:Julia语言搞机器学习和Python 比,哪个好用?
开发人员亲自上场:Julia语言搞机器学习和Python 比,哪个好用?
299 0
开发人员亲自上场:Julia语言搞机器学习和Python 比,哪个好用?
|
Python
Python编程:数据科学常用的包
Python编程:数据科学常用的包
|
人工智能 分布式计算 前端开发
3大阶段,30+教程,超全年度 Python 礼包大放送 | 技术日报(15期)
Python简单易懂,功能强大,同时也是大数据、人工智能时代的首选编程语言之一。这两年 Python 如破竹之势一般出现在开发者眼前,甚至有许多非技术人员也会想通过学习 Python 来提高自己的工作效率。这么火的语言,开发者社区当然要为你带来 “Python 学习大礼包” 了!
965 0