前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给数据科学家的10个提示和技巧Vol.4

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

作者头像
庄闪闪
发布2021-07-23 10:37:37
4310
发布2021-07-23 10:37:37
举报

原文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/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 引言
  • 2 R
    • 2.1 对不同元素进行累积计数
      • 2.2 利用样本信息补齐缺失值
        • 2.3 tidyverse:用select_if筛选列
          • 2.4 tidyverse:用where筛选列
            • 2.5 tidyverse:用relocate指定列的位置
              • 参考资料
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档