专栏首页数据小魔方左手用R右手Python系列7——排序

左手用R右手Python系列7——排序

排序可能是日常数据清洗过程中比较高频的应用了,今天这一篇给大家介绍R语言和Python中最为常见的排序函数应用。

R语言:

  • sort
  • order
  • rank
  • arrange

排序根据对向量排序和数据框的排序要使用不同的函数,以上四个函数中,前三个是针对向量的,最后一个是针对数据框的。

sort

x<-c(97,93,85,74,32,100,99,67) sort(x,decreasing=F) #默认是生序排列,其中decreasing参数默认为FALSE。 sort(x,decreasing=T) #降序排列

order

order(x,decreasing=F) #变量由小到大在原始数据中的位次(默认升序可无需逻辑参数) order(x,decreasing=T) #按照由大到小的顺序对应元素在原始向量中的微词。

rank:

#rank函数返回向量的秩,即对应元素在原始向量中排名。 rank(x)

基于数据框自身的排序:

当针对数据框进行排序时,如同对数据框进行条件索引一样,也可以基于数据框自身的方法来实现。

(mydata<-data.frame(name=LETTERS[1:10],class=sample(letters[1:4],10,replace=TRUE),value=runif(10,0,5)))

mydata[order(mydata$value),] #默认生序排列 mydata[order(mydata$value,decreasing=T),] #根据value降序排列

以上这种方式通过基于数据框自身的规则,完成了排序工作(实际上是一种布尔索引),但是不够优雅,写了繁琐的变量名,而且只能根据一个字段来排序。

数据框排序-arrange

arrange函数的存在实在是R语言排序大杀器。

library(dplyr) mydata%>%plyr::arrange(class,value) mydata%>%plyr::arrange(class,-value)

arrange函数不仅可以实现多变量规则排序,而且可以仅以负号指定降序,语法简洁,功能强大,其中多变量时,一般是分类变量在前,连续变量在后,粒度粗的维度排在最前面,分类变量排序粒度依次递减。最后是连续变量。

-------------

Python:

-------------

  • sort
  • sorted
  • .sort_index
  • .sort_value

列表排序方法:

x=[97,93,85,74,32,100,99,67] 针对list的排序,Python提供有全局的sorted函数以及list自身的sort函数可以完成排序功能。

sorted(x) #默认生序 sorted(x,reverse=True) #指定降序

x.sort() #默认生序 x.sort(reverse=True) #指定降序

字典排序方法:

mydata={"A":97,"B":93,"C":85,"D":74,"E":32,"F":100,"G":99,"H":67}

sorted(mydata.keys()) #根据字典的键排序 sorted(mydata.keys(),reverse=True) #根据字典的键逆排序

排序时按照键值对: sorted(mydata.items(),key=lambda item:item[1]) #根据值字段生序排列 sorted(mydata.items(),key=lambda item:item[1],reverse=True) #根据值字段逆序排列

数据框排序:

import pandas as pd import numpy as np df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008], "gender":['male','female','male','female','male','female','male','female'], "pay":['Y','N','Y','Y','N','Y','N','Y'], "m-point":[10,12,20,40,40,40,30,20]})

pandas所生成的数据框同样有sort方法。

根据值排序:

df1.sort_values(["id"]) #使用值进行排序 df1.sort_values(["id"],ascending=False) #降序排列 df1.sort_values(["pay","m-point"]) #排序多个字段

索引排序:

df1=df1.set_index('id') #设置索引列 df1.sort_index() #使用索引进行排序 df1.sort_index(ascending=False) #使用索引列降序排列

--------------

本节小结:

-----------

排序函数:

R语言:

向量:

  • sort
  • order
  • rank

数据框:

  • arrange

Python:

列表与字典:

  • sort
  • sorted

数据框:

  • .sort_index
  • .sort_value

本文分享自微信公众号 - 数据小魔方(datamofang),作者:杜雨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 多条件排序

    今天跟大家分享多条件排序的技巧! 之前分享过关于excel中的排序菜单及所有的排序函数,但是这些菜单和函数的排序功能仅限于单列排序,无法完成多列的多条件排序功...

    数据小磨坊
  • excel数据排序的常用方式

    今天跟大家分享几种常用的数据排序方式! ▼ 在excel中整理数据、作图或者其他数据汇总操作,常会遇到对某一列数据排序的需求。当然用肉眼观察手动排序肯定是不现实...

    数据小磨坊
  • 文字云,没你想的那么高大上!!!

    今天给大家聊聊文字云 文字云是手机新品发布会PPT御用技巧 无论是卖产品的 还是卖情怀的 都是段子手 一个比一个bigger高 让我们来看看 那些高逼格的人 ...

    数据小磨坊
  • 《Redis设计与实现》读书笔记(三十三) ——Redis排序命令sort的实现

    《Redis设计与实现》读书笔记(三十三) ——Redis排序命令sort的实现 (原创内容,转载请注明来源,谢谢) 一、基本功能 redis的sort命令,可...

    用户1327360
  • Go中的三种排序方法

    排序是很多程序经常使用的操作。尽管一个简短的快排程序只要二三十行代码就可以搞定,但是一个健壮的实现需要更多的代码,并且我们不希望每次我们需要的时候都重写或者拷贝...

    KevinYan
  • Selenium Python使用技巧(一)

    使用Selenium进行测试自动化已使全球的网站测试人员能够轻松执行自动化的网站测试。Webdriver是Selenium框架的核心组件,您可以使用它执行自动跨...

    八音弦
  • Linux应急响应(一):SSH暴力破解

    SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。SSH口令长度太...

    Bypass
  • 每周学点大数据 | No.22 外排序

    No.22期 外排序(一) Mr. 王:接下来我们看一看在磁盘算法中一个比较典型的例子——外排序。 小可:那什么又是外排序呢? Mr. 王:外排序是相...

    灯塔大数据
  • 归并排序

    作者:柳行刚 编辑:徐 松 基本思想 归并排序是建立在二路归并和分治法的基础上的一个高效排序算法,将已有序的子序列合并,得到完全有序的序列;即先使...

    机器学习算法工程师
  • Sorted

    Python内置的sorted()函数就可以对list进行排序 sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数,也就是k...

    py3study

扫码关注云+社区

领取腾讯云代金券