给数据科学家的10个提示和技巧Vol.4

2021-07-23 10:37:37 浏览数 (3)

原文10 Tips And Tricks For Data Scientists Vol.4[1]

译者:赵西西

原博客简介:Predictive Hacks 是与数据科学相关的一切的在线资源中心。该博客由一群数据科学家所运营,专注于讲解在各种领域如何使用大数据技术(从机器学习和人工智能到业务领域)。

1 引言

前面已经介绍了一些数据分析的技巧,主要是用Python和R实现。具体内容可见:翻译|给数据科学家的10个提示和技巧Vol.1;翻译|给数据科学家的10个提示和技巧Vol.2;给数据科学家的10个提示和技巧Vol.3。今天主要是对博客的第4,5篇进行整合,并进行筛选,给出最为常用的一些数据处理的技巧。主要讲解 R,如果你对python感兴趣可以看文末的链接噢!

2 R

2.1 对不同元素进行累积计数

有时,我们会遇到有重复元素的列表(或向量),并需要对其中包含的不同值进行累积计数,这时只需要累加列表(或向量)中新元素出现的次数。

例如,有如下列表:

代码语言:javascript复制
x=c("e", "a","a","b","a","b","c", "d", "e")

统计其中不同的元素个数:

代码语言:javascript复制
data.frame(Vector=x,CumDistinct=cumsum(!duplicated(x)))

输出结果如下:

2.2 利用样本信息补齐缺失值

在处理数据时,常常会遇到有缺失值的情况,常用的解决方法有:(1)删除缺失值;(2)利用样本信息补齐缺失值,如均值、中位数等。

以下面数据为例:

代码语言:javascript复制
df<-data.frame(id=seq(1,10), ColumnA=c(10,9,8,7,NA,NA,20,15,12,NA), 
           ColumnB=factor(c("A","B","A","A","","B","A","B","","A")),
           ColumnC=factor(c("","BB","CC","BB","BB","CC","AA","BB","","AA")),
           ColumnD=c(NA,20,18,22,18,17,19,NA,17,23)
)
  
df

在R中,可以利用na.omit=True删除缺失值,这种方法适用于缺失值较少的情况;若数据缺失值较多,可利用样本信息进行补齐,方法如下:

代码语言:javascript复制
df[sapply(df, is.numeric)] <- lapply(df[sapply(df, is.numeric)], function(x) ifelse(is.na(x), mean(x, na.rm = TRUE), x))
df

2.3 tidyverse:用select_if筛选列

dplyr包中的select_if函数,在按条件筛选列时非常有用,并且还可以添加不同函数来修改列名。

例如:我想选择数值型变量,并修改列名添加前缀“numeric_”。

代码语言:javascript复制
library(tidyverse)
 
iris%>%select_if(is.numeric,  list(~ paste0("numeric_", .)))%>%head()

2.4 tidyverse:用where筛选列

对2.3的例子使用where实现相同操作:

代码语言:javascript复制
library(tidyverse)
 
iris%>%rename_with(~ paste0("numeric_", .), where(is.numeric))%>%
       select(where(is.numeric))%>%head()

2.5 tidyverse:用relocate指定列的位置

relocate()是dplyr1.0.0中的新添加的。可以使用.before.after指定列的确切位置。

例如:我想要Petal.Width放在Sepal.Width后面

代码语言:javascript复制
library(tidyverse)
iris%>%relocate(Petal.Width, .after=Sepal.Width)%>%head()

或者:我想让Petal.Width作为最后一列:

代码语言:javascript复制
iris%>%relocate(Petal.Width, .after=last_col())%>%head()

参考资料

[1]

10 Tips And Tricks For Data Scientists Vol.4: https://predictivehacks.com/10-tips-and-tricks-for-data-scientists-vol-4/

0 人点赞