前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R&Python Data Science 系列:数据处理(3)

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

作者头像
1480
发布2019-11-09 23:32:00
1.3K0
发布2019-11-09 23:32:00
举报
文章被收录于专栏:数据分析1480

承接上面内容,本部分将剩余函数介绍完整。

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

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

1 重塑函数

这里只介绍arrange()和rename()两个函数。

1.1 arrange函数

排序函数,按照某(几)个指定的列按照升(降)序排列重新排列数据集,参数ascending = False,降序排列,ascending = True,升序排列;

Python实现

代码语言:javascript
复制
from dfply import *
import numpy as np
import pandas as pd
###按照price升序排列
diamonds >> arrange(X.price, ascending = True) >> head(4)
代码语言:javascript
复制
###按照price降序排列
diamonds >> arrange(X.price, ascending = False) >> head(4)

R实现

代码语言:javascript
复制
library(tidyverse)
library(ggplot2)
library(dplyr)
##按照price升序排列
diamonds %>% arrange(price) %>% head(4)

##按照price降序排列
diamonds %>% arrange(desc(price)) %>% head(4)

注意:Python排列顺序使用参数ascending控制;R语言中使用desc函数;

1.2 rename函数

重命名函数,Python和R语言中使用方法相同,new_name = old_name:

Python实现

代码语言:javascript
复制
###将cut重命名为CUT
diamonds >> rename(CUT = X.cut) >> head(5)

R实现

代码语言:javascript
复制
###将cut重命名为CUT
diamonds %>% rename(CUT = cut) %>% head(5)

2 汇总函数

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

Python实现

代码语言:javascript
复制
###计算钻石价格price的最大值、最小值
diamonds >> summarize(price_max = X.price.max(), price_min = X.price.min()) >> head(4)
代码语言:javascript
复制
###计算x、y、z的最大值和最小值
diamonds >> summarize_each([np.max, np.min], X.x, X.y, X.z) >> head(4)

R实现

代码语言:javascript
复制
##计算钻石价格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语言中没有summarise_each(),但是summarise_all()有相同的处理方式。

3 窗口函数

窗口函数,是对某列操作,返回长度相同的一列,主要包括排名函数、偏移函数、累计聚合函数。R语言中窗口函数可以查看:

【R语言】窗口函数系列一:排名窗口函数

【R语言】窗口函数系列二:偏移窗口函数

【R语言】窗口函数系列三:聚合窗口函数

【R语言】窗口函数系列四:分布窗口函数

3.1 排名函数

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

Python实现

代码语言:javascript
复制
##新增一列排序,row_number
diamonds >> select(X.price) >> mutate(price_rn = row_number(X.price)) >> head(6)
代码语言:javascript
复制
#新增一列排序,min_rank
diamonds >> select(X.price) >> mutate(price_mrank = min_rank(X.price)) >> head(6)
代码语言:javascript
复制
#新增一列排序,dense_rank
diamonds >> select(X.price) >> mutate(price_drank = dense_rank(X.price)) >> head(6)

R实现

代码语言:javascript
复制
#新增一列排序,row_number
diamonds %>% select(price) %>% mutate(price_rn = row_number(price)) %>% head(6)

#新增一列排序,min_rank
diamonds %>% select(price) %>% mutate(price_mrank = min_rank(price)) %>% head(6)

#新增一列排序,dense_rank
diamonds %>% select(price) %>% mutate(price_drank = dense_rank(price)) %>% head(6)

3.2 偏移函数

两个偏移函数lead()和lag():

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

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

Python实现

代码语言:javascript
复制
(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实现

代码语言:javascript
复制
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)

3.3 累计聚合函数

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

Python实现

代码语言:javascript
复制
(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实现

代码语言:javascript
复制
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))

4 聚合函数

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

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

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

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

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

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

Python实现

代码语言:javascript
复制
##聚合函数
(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实现

代码语言:javascript
复制
#聚合函数
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))

注意:Python中n()函数需要传入参数,R中不需要传入参数;Python中输出列按照字段名称升序排列,R中输出的列按照书写顺序输出。

5 总结

数据处理1-3,主要介绍了Python中dfply和R中dplyr包中的数据处理函数,几乎满足数据预处理中筛选变量、衍生变量以及计算一些统计量的需求。

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

本文分享自 数据分析1480 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档