R&Python Data Science 系列:数据处理(3)

2022-12-18 0 487

承揽下面文本,本部份将余下表达式如是说完备。

R&Python Data Science 系列产品:信息处理(1)

R&Python Data Science 系列产品:信息处理(2)

1 重构表达式这儿只如是说arrange()和rename()三个表达式。

1.1 arrange表达式

次序表达式,依照某(几)个选定的列依照升(降)序次序重新次序统计数据集,模块ascending = False,倒序次序,ascending = True,或边次序;

Python同时实现

from dfply import * import numpy as np import pandas as pd ###依照price或边次序 diamonds >> arrange(X.price, ascending = True) >> head(4)
R&Python Data Science 系列:数据处理(3)
###依照price倒序次序 diamonds >> arrange(X.price, ascending = False) >> head(4)
R&Python Data Science 系列:数据处理(3)

R同时实现

library(tidyverse) library(ggplot2) library(dplyr) ##依照price或边次序 diamonds %>% arrange(price) %>% head(4) ​##依照price倒序次序 diamonds %>% arrange(desc(price)) %>% head(4)
R&Python Data Science 系列:数据处理(3)

注意:Python次序顺序使用模块ascending控制;R语言中使用desc表达式;

1.2 rename表达式重命名表达式,Python和R语言中使用方法相同,new_name = old_name:

Python同时实现

###将cut重命名为 CUTdiamonds >> rename(CUT = X.cut) >> head(5)
R&Python Data Science 系列:数据处理(3)

R同时实现

###将cut重命名为CUT diamonds %>% rename(CUT = cut) %>% head(5)
R&Python Data Science 系列:数据处理(3)

2 汇总表达式

Python中汇总表达式主要有summarize()和summarize_each()表达式,这儿的”汇总”翻译成概括更加合适,summarize()和summarize_each()区别在于:对某(几)列作用三个表达式,summarize()需要三个表达式依次作用于对应的列,而summarize_each()将三个表达式以列表形式作为第一个模块,作用于后面的列:

Python同时实现

###计算钻石价格price的最大值、最小值 diamonds >> summarize(price_max = X.price.max(), price_min = X.price.min()) >> head(4)
R&Python Data Science 系列:数据处理(3)
###计算x、y、z的最大值和最小值 diamonds >> summarize_each([np.max, np.min], X.x, X.y, X.z) >> head(4)
R&Python Data Science 系列:数据处理(3)

R同时实现

##计算钻石价格price的最大值、最小值 diamonds %>% summarise(price_max = max(price), price_min=min(price)) ​###计算钻石x、y、z的最大值、最小值 diamonds %>% select(x, y, z) %>% summarise_all(list(min, max))
R&Python Data Science 系列:数据处理(3)

注意:R语言中没有summarise_each(),但是summarise_all()有相同的处理方式。

3 窗口表达式窗口表达式,是对某列操作,返回长度相同的一列,主要包括排名表达式、偏移表达式、累计聚合表达式。

3.1 排名表达式Python中排名表达式主要有row_number()、min_rank()、dense_rank(),R语言也是这个3个表达式,表达式名都是相同的,用法也完全相同。在某种分组次序规则之后,row_number()生成一个连续不重复的编码,min_rank()生成一个不连续的编码,但是对相同的记录编码相同,而dense_rank()生成一个连续的编码,相同记录有相同的编码:

Python同时实现

##新增一列次序,row_number diamonds >> select(X.price) >> mutate(price_rn = row_number(X.price)) >> head(6)
R&Python Data Science 系列:数据处理(3)
#新增一列次序,min_rank diamonds >> select(X.price) >> mutate(price_mrank = min_rank(X.price)) >> head(6)
R&Python Data Science 系列:数据处理(3)
#新增一列次序,dense_rank diamonds >> select(X.price) >> mutate(price_drank = dense_rank(X.price)) >> head(6)
R&Python Data Science 系列:数据处理(3)

R同时实现

#新增一列次序,row_number diamonds %>% select(price) %>% mutate(price_rn = row_number(price)) %>% head(6)​#新增一列次序,min_rankdiamonds %>% select(price) %>% mutate(price_mrank = min_rank(price)) %>% head(6)​#新增一列次序,dense_rankdiamonds %>% select(price) %>% mutate(price_drank = dense_rank(price)) %>% head(6)
R&Python Data Science 系列:数据处理(3)

3.2 偏移表达式

三个偏移表达式lead()和lag():

lead(column,n):依照某种分组次序规则之后,向下取某列统计数据的第n行记录

lag(column,n):依照某种分组次序规则之后,向上取某列统计数据的第n行记录

Python同时实现

(diamonds >> arrange(X.price) >> select(X.price) >> mutate(price_lead1 = lead(X.price,1), price_lead2 = lead(X.price,2), price_lag1 = lag(X.price,1), price_lag2 = lag(X.price,2)) >> head(5))
R&Python Data Science 系列:数据处理(3)

R同时实现

diamonds %>% arrange(price) %>% select(price) %>% mutate(price_lead1 = lead(price,1), price_lead2 = lead(price,2), price_lag1 = lag(price,1), price_lag2 = lag(price,2)) %>% head(5)
R&Python Data Science 系列:数据处理(3)

3.3 累计聚合表达式累计聚合表达式主要包括cumsum()、cummean()、cummax()、cummin()以及cumprod(),都是在某种次序规则下,表达式作用于第一行记录,结果记在第一行,表达式作用于前两行记录,结果记录在第二行,表达式作用于前三行记录,结果记录在第三行…

Python同时实现

(diamonds >> select(X.price) >> head(6) >>mutate(price_cumsum = cumsum(X.price), price_cummean = cummean(X.price), price_cummax = cummax(X.price), price_cummin = cummin(X.price), price_cumprod = cumprod(X.price)))
R&Python Data Science 系列:数据处理(3)

R同时实现

diamonds %>% select(price) %>% head(6) %>% mutate(price_cumsum = cumsum(price), price_cummean = cummean(price), price_cummax = cummax(price), price_cummin = cummin(price), price_cumprod = cumprod(price))
R&Python Data Science 系列:数据处理(3)

4 聚合表达式

聚合表达式是对某一列统计数据,使用分组表达式和次序表达式进行处理之后(可以省略),使用聚合表达式,返回一个值。主要有first()、last()、nth()、n()以及n_distinct():

first(column):依照某种规则分组次序后(可选),取第一行统计数据记录

last(column):依照某种规则分组次序后(可选),取最后一行统计数据记录

nth(column,n):依照某种规则分组次序后(可选),取第n行的记录

n():依照某种规则分组次序后(可选),count计数,不去重

n_distinct():依照某种规则分组次序后(可选),count计数,去重

R&Python Data Science 系列:数据处理(3)

Python同时实现

##聚合表达式 (diamonds >> head(6) >> select(X.price) >> summarise(price_first = first(X.price), price_last = last(X.price),price_nthprice = nth(X.price,3), price_n = n(X.price), price_disn = n_distinct(X.price)))
R&Python Data Science 系列:数据处理(3)

R同时实现

#聚合表达式 diamonds %>% head(6) %>% select(price) %>% summarise(price_first = first(price), price_last = last(price), price_nthprice = nth(price,3), price_n = n(), price_disn = n_distinct(price))​
R&Python Data Science 系列:数据处理(3)

注意:Python中n()表达式需要传入模块,R中不需要传入模块;Python中输出列依照字段名称升序次序,R中输出的列依照书写顺序输出。

5 总结

信息处理1-3,主要如是说了Python中dfply和R中dplyr包中的信息处理表达式,几乎满足统计数据预处理中筛选变量、衍生变量以及计算一些统计量的需求。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务