社区所有版块导航
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系列(VII): 排序

EasyCharts • 7 年前 • 837 次点击  

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


R语言:

  • sort

  • order

  • rank

  • arrange


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


sort

x

sort(x,decreasing=F) #默认是生序排列,其中decreasing参数默认为FALSE。

sort(x,decreasing=T) #降序排列



order  

order(x,decreasing=F)  #变量由小到大在原始数据中的位次(默认升序可无需逻辑参数)

order(x,decreasing=T)  #按照由大到小的顺序对应元素在原始向量中的微词。



rank:

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

rank(x)



基于数据框自身的排序:


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


(mydata



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

左手用R右手Python系列(I): 字符串格式化输出

左手用R右手Python系列(II): 数据合并与追加

左手用R右手Python系列(III): 数据塑型与长宽转换

左手用R右手Python系列(IV): 因子变量与分类重编码

左手用R右手Python系列(V): 数据切片与索引

左手用R右手Python系列(VI): 变量计算与数据聚合


如需转载请联系EasyCharts团队!

微信后台回复“转载”即可!



【书籍推荐】《Excel 数据之美--科学图表与商业图表的绘制》

【手册获取】国内首款-数据可视化参考手册:专业绘图必备

【必备插件】  EasyCharts -- Excel图表插件

【网易云课堂】  Excel 商业图表修炼秘笈之基础篇



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/OyhYxwTG72
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3225
 
837 次点击