Python和R之间转换的基本指南:使用Python或R知识来有效学习另一种方法的简单方法

简介: Python和R之间转换的基本指南:使用Python或R知识来有效学习另一种方法的简单方法

这里介绍的方法与我们自学习外语的时候使用的方法是有共同之处的,例如我们要学习英语,可以使用以下三个关键的练习帮助我从笨拙地将中文单词翻译成英语,转变为直接用英语思考和回答(英语思维)。

把新的英语单词和我已经知道的中文单词关联起来。把英语和中文的单词作比较,使我能很快地领会这个生词的意思。          

重复这个词很多次,并在许多不同的场景中使用它,把这个词深深地刻在我的脑海里。            

利用上下文线索使我能够更好地理解这个词在同义词上的用法和原因。

image.png

当你第一次学习编码时,重复和语境化是必不可少的。通过不断的重复,你开始记住词汇和语法。通过项目开发,你能够理解如何以及为什么使用不同的功能和技术,并开始看到在不同的上下文环境中如何使用的代码。但是不一定有一种简单的方法可以把新的思维方式和你所说的语言联系起来,这意味着你不仅要记住一个单词,而是要对每一个编程概念有一个新的理解。甚至你写的第一行代码,print(“你好,世界!“)要求您了解print函数的工作原理、编辑器如何返回print语句以及何时使用引号。当你学习第二种编程语言时,你可以将你所知道的语言中的概念翻译成新的语言,从而更有效、更快地学习。

数据科学的世界被Python的拥护者和R的狂热者分割开来。但是,任何学习过其中一种语言的人,都应该充分利用它们的优势,深入到另一种语言中去,而不是宣称自己是一方。Python和R之间有着无限的相似性,而且这两种语言都是您可以使用的,您可以用最好的方式解决挑战,而不是将自己限制在工具库的一半。

下面是一个连接R和Python的简单指南,便于两者之间的转换。通过建立这些连接、反复与新语言交互以及与项目的上下文化,任何理解Python或R的人都可以快速地开始在另一种语言中编程。

基础

可以看到Python和R的功能和外观非常相似,只是语法上的细微差别。

数据类型

# Python                                  # R
type()                                      class()
type(5) #int                             class(5) #numeric
type(5.5) #float                       class(5.5) #numeric
type('Hello') #string                class('Hello') #character
type(True) #bool                     class(True) #logical
赋值
# Python                             # R
a = 5                                 a <- 5
导包
# Python                                          # R
pip install packagename               install.packages(packagename)
import packagename                   library(packagename)
数学计算包:数学在所有语言中都是一样的
# Python                                  # R
+ - / *                                       + - / *# The same goes for logical operators
< #less than                              < #less than
> #greater than                       > #greater than
<= #less than or equal to        <= #less than or equal to
== #is equal to                       == #is equal to
!= #is not equal to                   != #is not equal to
& #and                                    & #and
| #or                                         | #or
调用函数
# Python                                          # R
functionname(args, kwargs)           functionname(args, kwargs)
print("Hello World!")                         print("Hello World!")
条件判断
# Python                             # R
if True:                                 if (TRUE) {
    print('Hello World!')                     print('Go to sleep!')
else:                                     } else {
    print('Not true!')                       print('Not true!')

                                              }

列表和向量:这个有点难,但是我发现上面说的关联的方法很有用。

在python中,列表是任何数据类型的有序项的可变集合。Python中的列表索引从0开始,不包括0。            

在R中,向量是同一类型的有序项的可变集合。索引R中的向量从1开始,并且是包含的。

Python                                      # R
ls = [1, 'a', 3, False]                   vc <- c(1, 2, 3, 4)# Python indexing starts at 0, R indexing starts at 1
b = ls[0]                                     b = vc[1]
print(b) #returns 1                     print(b) #returns 1c = ls[0:1]                           c = vc[1:2]
print(c) #returns 1                      print(c) #returns 1,
循环
# Python                             # R
for i in range(2, 5):                 for(i in 1:10) {
    a = i                                     a <- i }

数据操作

python和R都提供了简单而精简的数据操作包,使它们成为数据科学家必不可少的工具。

这两种语言都配备了能够加载、清理和处理数据的包。

python使用pandas、R使用tidyverse,并且他们的函数基本相同。

两种语言都允许多个操作通过管道(pipe)连接在一起。在python中使用“.” 在R中使用“%>%”组合不同的操作。

读取、写入和查看数据

# Python                                          # R
import pandas as pd                       library(tidyverse)
# load and view data
df = pd.read_csv('path.csv')             df <- read_csv('path.csv')
df.head()                                          head(df)
df.sample(100)                                sample(df, 100)
df.describe()                                    summary(df)
# write to csv
df.to_csv('exp_path.csv')                  write_csv(df, 'exp_path.csv')
重命名和添加列
# Python                                         # R
df = df.rename({'a': 'b'}, axis=1)       df %>% rename(a = b)
df.newcol = [1, 2, 3]                         df$newcol <- c(1, 2, 3)
df['newcol'] = [1, 2, 3]                      df %>% mutate(newcol = c(1, 2, 3))

选择和筛选列

# Python                             # R
df['col1', 'col2']                    df %<% select(col1,col2)
df.drop('col1')                      df %<% select(-col1)

筛选行

# Python                             # R
df.drop_duplicates()             df %<% distinct()
df[df.col > 3]                        df %<% filter(col > 3)

排序

# Python                                      # R
df.sort_values(by='column')           arrange(df, column)

聚合

# Python
df.groupby('col1')['agg_col').agg(['mean()']).reset_index()
# R
df %>%
    group_by(col1) %>%
    summarize(mean = mean(agg_col, na.rm=TRUE)) %>%
    ungroup() #if resetting index
使用筛选器聚合
# Python
df.groupby('col1').filter(lambda x: x.col2.mean() > 10)
# R
df %>%
    group_by(col1) %>%
    filter(mean(col2) >10)
合并dataframe
# Python
pd.merge(df1, df2, left_on="df1_col", right_on="df2_col")
# R
merge(df1, df2, by.df1="df1_col", by.df2="df2_col")

上面的例子是在Python和R之间创建心理相似性的起点。虽然大多数数据科学家倾向于使用一种语言或另一种语言,但是在这两种语言中都能很好地使用最适合您需要的工具。

我们的最终的目的并不是为了熟练的掌握另一门语言并用它开发,而是能够看懂另一门语言所写的代码,并把它的思想应用到我们自己的项目中去。

目录
相关文章
|
13天前
|
存储 API 数据安全/隐私保护
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
51 6
|
13天前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
19天前
|
SQL 关系型数据库 MySQL
Python中使用MySQL模糊查询的方法
本文介绍了两种使用Python进行MySQL模糊查询的方法:一是使用`pymysql`库,二是使用`mysql-connector-python`库。通过这两种方法,可以连接MySQL数据库并执行模糊查询。具体步骤包括安装库、配置数据库连接参数、编写SQL查询语句以及处理查询结果。文中详细展示了代码示例,并提供了注意事项,如替换数据库连接信息、正确使用通配符和关闭数据库连接等。确保在实际应用中注意SQL注入风险,使用参数化查询以保障安全性。
|
21天前
|
存储 算法 API
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
137 82
|
21天前
|
Python
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
24 3
|
1月前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
2月前
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
47 10
|
2月前
|
人工智能 自然语言处理 算法
随机的暴力美学蒙特卡洛方法 | python小知识
蒙特卡洛方法是一种基于随机采样的计算算法,广泛应用于物理学、金融、工程等领域。它通过重复随机采样来解决复杂问题,尤其适用于难以用解析方法求解的情况。该方法起源于二战期间的曼哈顿计划,由斯坦尼斯拉夫·乌拉姆等人提出。核心思想是通过大量随机样本来近似真实结果,如估算π值的经典示例。蒙特卡洛树搜索(MCTS)是其高级应用,常用于游戏AI和决策优化。Python中可通过简单代码实现蒙特卡洛方法,展示其在文本生成等领域的潜力。随着计算能力提升,蒙特卡洛方法的应用范围不断扩大,成为处理不确定性和复杂系统的重要工具。
91 21
|
2月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
3月前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。

热门文章

最新文章

推荐镜像

更多