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之间创建心理相似性的起点。虽然大多数数据科学家倾向于使用一种语言或另一种语言,但是在这两种语言中都能很好地使用最适合您需要的工具。

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

目录
相关文章
|
2天前
|
Linux Python
在Linux下升级到Python3的两种方法
在Linux下升级到Python3的两种方法
16 0
|
8天前
|
数据处理 索引 Python
【Python学习篇】Python实验小练习——文件操作(十一)
【Python学习篇】Python实验小练习——文件操作(十一)
20 1
|
8天前
|
存储 缓存 算法
【Python学习篇】Python实验小练习——循环结构(八)
【Python学习篇】Python实验小练习——循环结构(八)
9 1
|
8天前
|
存储 算法 数据安全/隐私保护
【Python学习篇】Python实验小练习——高级数据结构(五)
【Python学习篇】Python实验小练习——高级数据结构(五)
25 1
|
8天前
|
存储 Python
【Python学习篇】Python判断语句(四)
【Python学习篇】Python判断语句(四)
17 1
GitHub爆赞!终于有大佬把《Python学习手册》学习笔记分享出来了
这份笔记的目标是为了给出一份比较精炼,但是又要浅显易懂的Python教程。《Python学习手册》中文第四版虽然比较简单,但是措辞比较罗嗦,而且一个语法点往往散落在多个章节,不方便读者总结。 我在做笔记时,将一个知识点的内容都统筹在一个章节里面,因此提炼性大大提高。而且还有《Python学习手册》中文第四版的翻译在某些章节(可能难度较大?)措辞可能前后矛盾。当知识点提炼之后就能够很快的找到一些难以理解的概念的上下文,方便吃透这些难点。
|
1天前
|
测试技术 Python
Python set 的pop()方法 返回元素并不随机
Python set 的pop()方法 返回元素并不随机
|
1天前
|
自然语言处理 Python
python技巧:数组排序sort,all方法
python技巧:数组排序sort,all方法
|
1天前
|
程序员 Python
GitHub爆赞!最适合新手入门的教程——笨方法学Python 3
“Python 是一门既容易上手又强大的编程语言。”这句话本身并无大碍,但需要注意的是,正因为它既好学又好用,所以很多 Python 程序员只用到了其强大功能的一小部分。 今天给小伙伴们分享的这份手册以习题的方式引导读者一步一步学习编程,从简单的打印一直讲到完整项目的实现。
|
2天前
|
Python
Python基础教程(第3版)中文版 第9章 魔法方法、特性和迭代器(笔记)
Python基础教程(第3版)中文版 第9章 魔法方法、特性和迭代器(笔记)