R&Python Data Science 系列:数据处理(2)
发布日期:2025-05-05 04:00:36
浏览次数:3
分类:精选文章
本文共 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中不支持这种写法。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2026年06月01日 07时46分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php预定义常量&变量
2023-03-02
R 集成算法③ 随机森林
2023-03-02
php验证码背景色设置无效
2023-03-02
php验证邮箱是否有效
2023-03-02
PHP高性能分布式应用服务器框架-SwooleDistributed
2023-03-02
PHP高效、轻量级表格数据处理库 OpenSpout
2023-03-02
R 数据缺失的处理
2023-03-02
php,nginx重启
2023-03-02
php:$_ENV 和 getenv区别
2023-03-02
PHP:PDOStatement::bindValue参数类型php5和php7问题
2023-03-02
Q媒体播放器.如何播放具有多个音频的视频?
2023-03-02
pickle
2023-03-02
Pickle thread.lock(Pymongo)
2023-03-02
pickle模块
2023-03-02
qYKVEtqdDg
2023-03-02
pid控制
2023-03-02
PID控制介绍-ChatGPT4o作答
2023-03-02
PID控制器数字化
2023-03-02
Qwen-VL项目使用指南
2023-03-02