社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

数据分析1480 • 6 年前 • 522 次点击  

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

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

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


1 重塑函数

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


1.1 arrange函数

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


Python实现

from dfply import *import numpy as npimport pandas as pd###按照price升序排列diamonds >> arrange(X.price, ascending = True) >> head(4)



###按照price降序排列diamonds >> arrange(X.price, ascending = False) >> head(4)


R实现

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实现

###将cut重命名为CUTdiamonds >> rename(CUT = X.cut) >> head(5)


R实现

###将cut重命名为CUTdiamonds %>% rename(CUT = cut) %>% head(5)



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)



###计算xyz的最大值和最小值diamonds >> summarize_each([np.max, np.min]X.xX.yX.z) >> head(4)



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语言中没有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实现


##新增一列排序,row_numberdiamonds >> select(X.price) >> mutate(price_rn = row_number(X.price)) >> head(6)


#新增一列排序,min_rankdiamonds >> select(X.price) >> mutate(price_mrank = min_rank(X.price)) >> head(6)



#新增一列排序,dense_rankdiamonds >> select(X.price) >> mutate(price_drank = dense_rank(X.price)) >> head(6)



R实现

#新增一列排序,row_numberdiamonds %>% 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)



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实现

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实现

(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实现

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实现

##聚合函数(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实现

#聚合函数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包中的数据处理函数,几乎满足数据预处理中筛选变量、衍生变量以及计算一些统计量的需求。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49252