博客
关于我
R&Python Data Science 系列:数据处理(2)
阅读量:795 次
发布时间:2023-03-02

本文共 2810 字,大约阅读时间需要 9 分钟。

数据处理函数入门(dfply与dplyr)

在数据处理领域,dfply和dplyr提供了丰富的函数来帮助数据分析和转换。以下将从几个核心函数入手,帮助大家更好地理解和使用这些工具。

1. 衍生字段函数

主要有两个函数,mutate()transmute(),两者在Python和R上使用方法相同,但有细微差别。

Python实现

from dfply import *
import pandas as pd
# 使用mutate()新增列
diamonds >> mutate(x_plus_y = X.x + X.y, xyz = X.x * X.y * X.z) >> head(5)
# 使用transmute()新增列
diamonds >> transmute(x_plus_y = X.x + X.y, xyz = X.x * X.y * X.z) >> head(5)

R语言实现

library(dplyr)
# 使用mutate()新增列
diamonds %>% mutate(x_plus_y = x + y, xyz = x * y * z) %>% head(5)
# 使用transmute()新增列
diamonds %>% transmute(x_plus_y = x + y, xyz = x * y * z) %>% head(5)

2. 条件函数

在处理条件数据时,if_else()case_when()between()函数是日常工作中的重要工具,尤其在评分卡WOE(Weight of Evidence)赋值时非常实用。

2.1 if_else函数

if_else()用于非A即B的逻辑判断。

Python实现

diamonds >> mutate(price_class = if_else(X.price > 2000, 'A', 'A-')) >> distinct(X.price_class)

R语言实现

diamonds %>% mutate(price_class = if_else(price > 2000, 'A', 'A-')) %>% distinct(price_class)

2.2 case_when函数

case_when()用于多条件赋值,适合WOE评分卡。

Python实现

diamonds >> mutate(price_class = case_when([X.price > 2000, 'A'], [X.price > 1500, 'B'], [X.price > 1000, 'C'], [True, 'D'])) >> distinct(X.price_class)

R语言实现

diamonds %>% mutate(price_class = case_when(price > 2000 ~ 'A', price > 1500 ~ 'B', price > 1000 ~ 'C', TRUE ~ 'D')) %>% distinct(price_class)

2.3 between函数

between()用于区间判断,适用于特定范围内的条件。

Python实现

diamonds >> mutate(price_class = case_when([X.price > 2000, 'A'], [between(X.price, 1500, 2000), 'B'], [between(X.price, 1000, 1500), 'C'], [True, 'D'])) >> distinct(X.price_class)

R语言实现

diamonds %>% mutate(price_class = case_when(price > 2000 ~ 'A', between(price, 1500, 2000) ~ 'B', between(price, 1000, 1500) ~ 'C', TRUE ~ 'D')) %>% distinct(price_class)

3. 绑定函数

bind_rows()bind_cols()用于数据的行或列拼接。

Python实现

diamonds2 = diamonds >> head(2)
diamonds3 = diamonds >> tail(3)
diamonds2 >> bind_rows(diamonds3)
diamonds4 = diamonds >> select(1, X.carat, 'cut', -1)
diamonds5 = diamonds >> select('x', 'y')
diamonds4 >> bind_cols(diamonds5) >> head(5)

R语言实现

diamonds2 = diamonds %>% head(2)
diamonds3 = diamonds %>% tail(3)
diamonds2 %>% bind_rows(diamonds3)
diamonds4 = diamonds %>% select(1, carat, cut, dim(diamonds)[2])
diamonds5 = diamonds %>% select(x, y)
diamonds4 %>% bind_cols(diamonds5) %>% head(5)

4. 连接函数

inner_join()left_join()right_join()用于数据的内连接、左连接和右连接。

Python实现

a = pd.DataFrame({
'x1': ['A', 'B', 'C'],
'x2': [1, 2, 3]
})
b = pd.DataFrame({
'x1': ['A', 'B', 'D'],
'x3': [True, False, True]
})
a >> inner_join(b, by='x1')
a >> left_join(b, by='x1')
a >> right_join(b, by='x1')

R语言实现

a = data.frame(x1 = c('A', 'B', 'C'), B = c(1, 2, 3))
b = data.frame(x1 = c('A', 'B', 'D'), D = c(TRUE, FALSE, TRUE))
a %>% inner_join(b, by = 'x1')
a %>% left_join(b, by = 'x1')
a %>% right_join(b, by = 'x1')

注意:在R语言中,可以使用XXX_join(a, b, by)形式,而Python中不支持这种写法。

转载地址:http://umtfk.baihongyu.com/

你可能感兴趣的文章
RabbitMQ + JMeter组合,优化你的中间件处理方式!
查看>>
PHP水仙花问题解法之一
查看>>
php没有解析是怎么回事,linux下php文件没有被剖析怎么办?_后端开发
查看>>
php注册页面实现注册后跳转页面
查看>>
PHP消息队列的实现方式与详解,值得一看
查看>>
PHP混合Go协程并发
查看>>
php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
查看>>
PHP源码安装后如何新增模块
查看>>
php源码详细安装步骤,linux下php源码安装步骤
查看>>
php漏洞tips
查看>>
php版Zencoding之 phpstorm
查看>>
PHP版本升级5.4手记
查看>>
php版本升级总结
查看>>
php版本微信公众号开发
查看>>
php版的微信公众号开发演示
查看>>
php生成html文件的多种方法介绍
查看>>
php生成二维码到图片上
查看>>
php生成二维码并下载图片(适应于框架)
查看>>
PHP生成及获取JSON文件的方法
查看>>
PHP生成唯一不重复的编号
查看>>