分享

R语言与python对数据框的操作(对比笔记)

 育种数据分析 2021-11-18

这篇主要比较R语言的data.talbe和python的pandas操作数据框的形式, 学习两者的异同点, 加深理解两者的使用方法。

1. data.table VS pandas

这里使用R语言的data.tablet包和python的pandas进行对比.

主要分为三部分:

    1. 新建数据库

    1. 行列选择

    1. 行列筛选

2. data.table操作数据框

data.table介绍:

使用R语言, 通过data.table创建数据框.

library(data.table)
set.seed(123)
DT <- data.table(V1=c(1,2),V2=c("A","B","C"),V3=round(rnorm(4),4), V4=1:12)

2.1 行选择

选择单行

# 行选择

DT[2]

DT[2,] # 同上

选择多行

DT[3:5]

DT[3:5,]

选择列

DT[,2]


可以使用.()号, 返回数据框

DT[,.(V2)] # 同上


或者使用list(), 等同于.()

DT[,list(V2)]

2.2 行列筛选

选择V2等于A的列

DT[V2=="A"]


也可以使用下面这种形式

DT[V2=="A",]

如果选择V2等于A或者等于B的列

DT[V2 == "A"|V2=="B"]


也可以使用%in%进行多条件选择

DT[V2 %in% c("A","B")]

新建一列V5

DT[,V5:=V3*V4]

DT

2.3 使用fwrite保存数据

fwrite(DT,"DT.csv")

3. pandas操作数据框

读取数据

import pandas as pd
df = pd.read_csv("DT.csv")
df

3.1 行列选择


选择第一行, 需要给出区间, df[0]报错, 要用df[0:1]

df[0:1] # 如果直接使用, 需要给出区间


也可以根据loc进行提取

# loc 根据行名
df.loc[1] # 注意, python从0开始

也可以根据iloc进行提取

# iloc 根据行号
df.iloc[1]

注意, iloc是根据行号, loc是根据行名

选择多行

df[3:6] # 3包括, 6不包括

同上:

df.loc[3:5]

3.2 pandas选择列

df["V2"]

也可以使用列数, 使用iloc

df.iloc[:,1:2]

如果使用多个列名, 要用[]

df[["V1","V2"]] # 用两个[][]


效果同上。

df.iloc[:,0:2]

3.3 pandas行列筛选

df[df['V2']=="A"]

或者:

df[df['V2']=="A"]

多条件筛选

# 麻烦style: (df['V2']=='A')|(df['V2']=='B')
df[(df['V2']=='A')|(df['V2']=='B')]

也可以使用isin进行操作:

# 使用.V2.isin()进行多条件筛选
df[df.V2.isin(["A","B"])]
# 使用[].isin也可以
df[df['V2'].isin(["A","B"])]

创建新列V5

df.V5 = df.V3*df.V4
df

3.4 pandas保存文件

如果是R的思维:

write.csv(object, "file.csv")

但是pandas的风格是

object.to_csv("file.csv")

正确有效的代码:

df.to_csv("df.csv",index=0) # 对象.to_csv, 不是pd.write(df,"df.csv")!!!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多