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

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

数据处理函数入门:Python与R的实用技巧

数据处理是数据科学家日常工作中的重头戏。无论是从数据清洗、变量衍生,还是统计量计算,现代数据处理框架都为我们提供了强大的工具。在Python与R这两大生态中,dfply和dplyr包提供了强大的数据处理能力,能够满足大部分数据预处理需求。本文将分别介绍Python和R中常用函数的使用方法,帮助你快速上手数据处理。

1. 重塑函数

重塑函数是数据处理的核心工具。常用的函数包括arrangerename

1.1 arrange函数

arrange 是一个排序函数,可以根据指定的列对数据集进行升序或降序排列。参数ascending控制排序方向,True表示升序,False表示降序。

Python实现

diamonds >> arrange(X.price, ascending=True) >> head(4)

以上代码会按price列升序排列前4行数据。

R实现

diamonds %>% arrange(price) %>% head(4)

同样是按price列升序排列前4行数据。

注意

  • Python中使用ascending参数控制排序方向;
  • R语言中使用desc函数来指定降序排列。

1.2 rename函数

rename 用于将数据集中的列名重命名。新名通过new_name参数指定,旧名通过old_name参数指定。

Python实现

diamonds >> rename(CUT=X.cut) >> head(5)

cut列重命名为CUT,并显示前5行数据。

R实现

diamonds %>% rename(CUT=cut) %>% head(5)

同样是将cut列重命名为CUT,并显示前5行数据。

2. 汇总函数

汇总函数用于对数据进行统计计算。在Python中,summarizesummarize_each 是常用的工具;在R中,summarise 是主要函数。

Python实现

diamonds >> summarize(price_max = X.price.max(), price_min = X.price.min()) >> head(4)

计算price列的最大值和最小值,并显示前4行数据。

diamonds >> summarize_each([np.max, np.min], X.x, X.y, X.z) >> head(4)

X.xX.yX.z三列分别计算最大值和最小值,并显示前4行数据。

R实现

diamonds %>% summarise(price_max = max(price), price_min=min(price)) %>% head(4)

计算price列的最大值和最小值,并显示前4行数据。

diamonds %>% select(x, y, z) %>% summarise_all(list(min, max)) %>% head(4)

xyz三列分别计算最小值和最大值,并显示前4行数据。

注意

  • R语言中没有summarise_each,但可以通过summarise_all实现类似功能。

3. 窗口函数

窗口函数用于对数据集进行相邻数据的操作,包括排名、偏移和累计聚合。

3.1 排名函数

排名函数包括row_numbermin_rankdense_rankrow_number生成连续编码;min_rank生成不连续编码;dense_rank生成连续编码。

Python实现

diamonds >> select(X.price) >> mutate(price_rn = row_number(X.price)) >> head(6)

新增一列price_rn,表示行号编码。

diamonds >> select(X.price) >> mutate(price_mrank = min_rank(X.price)) >> head(6)

新增一列price_mrank,表示最小编码。

diamonds >> select(X.price) >> mutate(price_drank = dense_rank(X.price)) >> head(6)

新增一列price_drank,表示密集编码。

R实现

diamonds %>% select(price) %>% mutate(price_rn = row_number(price)) %>% head(6)

新增一列price_rn,表示行号编码。

diamonds %>% select(price) %>% mutate(price_mrank = min_rank(price)) %>% head(6)

新增一列price_mrank,表示最小编码。

diamonds %>% select(price) %>% mutate(price_drank = dense_rank(price)) %>% head(6)

新增一列price_drank,表示密集编码。

3.2 偏移函数

偏移函数包括leadlaglead获取下一行的值;lag获取上一行的值。

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 累计聚合函数

累计聚合函数包括cumsumcummeancummaxcummincumprod。这些函数会在排序后的数据上进行逐步计算。

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)
) >> head(6)

新增五列,分别表示价格列的累计和、均值、最大值、最小值和积累乘积。

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)
) >> head(6)

新增五列,分别表示价格列的累计和、均值、最大值、最小值和积累乘积。

4. 聚合函数

聚合函数用于对数据进行统计汇总。在Python中常用的函数包括firstlastnthnn_distinct;在R中对应的函数也是类似的名称。

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)
) >> head(6)

计算price列的前值、后值、第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)
) >> head(6)

计算price列的前值、后值、第3值、计数(不去重)和去重计数,并显示结果。

注意

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

5. 总结

数据处理函数是数据科学家日常工作的重要工具。从arrangesummarize,从windowaggregate,这些函数能够满足大部分数据预处理需求。在选择工具时,应该根据项目需求和个人偏好决定Python还是R。希望本文能为你提供实用的数据处理技巧!

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

你可能感兴趣的文章
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生成唯一不重复的编号
查看>>
PHP生成器-动态生成内容的数组
查看>>