溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

發(fā)布時(shí)間:2021-08-10 16:36:23 來(lái)源:億速云 閱讀:232 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用”吧!

排序可能是日常數(shù)據(jù)清洗過(guò)程中比較高頻的應(yīng)用了,今天這一篇給大家介紹R語(yǔ)言和Python中最為常見(jiàn)的排序函數(shù)應(yīng)用。

R語(yǔ)言:

  • sort

  • order

  • rank

  • arrange

排序根據(jù)對(duì)向量排序和數(shù)據(jù)框的排序要使用不同的函數(shù),以上四個(gè)函數(shù)中,前三個(gè)是針對(duì)向量的,最后一個(gè)是針對(duì)數(shù)據(jù)框的。

sort

x<-c(97,93,85,74,32,100,99,67)

sort(x,decreasing=F) #默認(rèn)是生序排列,其中decreasing參數(shù)默認(rèn)為FALSE。

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

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

order  

order(x,decreasing=F)  #變量由小到大在原始數(shù)據(jù)中的位次(默認(rèn)升序可無(wú)需邏輯參數(shù))

order(x,decreasing=T)  #按照由大到小的順序?qū)?yīng)元素在原始向量中的微詞。

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

rank:

#rank函數(shù)返回向量的秩,即對(duì)應(yīng)元素在原始向量中排名。

rank(x)

基于數(shù)據(jù)框自身的排序:

當(dāng)針對(duì)數(shù)據(jù)框進(jìn)行排序時(shí),如同對(duì)數(shù)據(jù)框進(jìn)行條件索引一樣,也可以基于數(shù)據(jù)框自身的方法來(lái)實(shí)現(xiàn)。

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

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

mydata[order(mydata$value),] #默認(rèn)生序排列

mydata[order(mydata$value,decreasing=T),] #根據(jù)value降序排列

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

以上這種方式通過(guò)基于數(shù)據(jù)框自身的規(guī)則,完成了排序工作(實(shí)際上是一種布爾索引),但是不夠優(yōu)雅,寫了繁瑣的變量名,而且只能根據(jù)一個(gè)字段來(lái)排序。

數(shù)據(jù)框排序-arrange

arrange函數(shù)的存在實(shí)在是R語(yǔ)言排序大殺器。

library(dplyr)

mydata%>%plyr::arrange(class,value)

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

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

arrange函數(shù)不僅可以實(shí)現(xiàn)多變量規(guī)則排序,而且可以僅以負(fù)號(hào)指定降序,語(yǔ)法簡(jiǎn)潔,功能強(qiáng)大,其中多變量時(shí),一般是分類變量在前,連續(xù)變量在后,粒度粗的維度排在最前面,分類變量排序粒度依次遞減。最后是連續(xù)變量。

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

Python:

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

  • sort

  • sorted

  • .sort_index

  • .sort_value

列表排序方法:

x=[97,93,85,74,32,100,99,67]

針對(duì)list的排序,Python提供有全局的sorted函數(shù)以及l(fā)ist自身的sort函數(shù)可以完成排序功能。

sorted(x)                           #默認(rèn)生序

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

x.sort()                      #默認(rèn)生序

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

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

字典排序方法:

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

sorted(mydata.keys())               #根據(jù)字典的鍵排序

sorted(mydata.keys(),reverse=True)  #根據(jù)字典的鍵逆排序

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

排序時(shí)按照鍵值對(duì):

sorted(mydata.items(),key=lambda item:item[1])     #根據(jù)值字段生序排列

sorted(mydata.items(),key=lambda item:item[1],reverse=True) #根據(jù)值字段逆序排列

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

數(shù)據(jù)框排序:

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所生成的數(shù)據(jù)框同樣有sort方法。

根據(jù)值排序:

df1.sort_values(["id"])                  #使用值進(jìn)行排序

df1.sort_values(["id"],ascending=False)  #降序排列

df1.sort_values(["pay","m-point"])       #排序多個(gè)字段

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

索引排序:

df1=df1.set_index('id')            #設(shè)置索引列

df1.sort_index()                   #使用索引進(jìn)行排序

df1.sort_index(ascending=False)    #使用索引列降序排列

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用

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

本節(jié)小結(jié):

-----------

排序函數(shù):

R語(yǔ)言:

向量:

  • sort

  • order

  • rank

數(shù)據(jù)框:

  • arrange

Python:

列表與字典:

  • sort

  • sorted

數(shù)據(jù)框:

  • .sort_index

  • .sort_value

到此,相信大家對(duì)“R語(yǔ)言和Python中常見(jiàn)的排序函數(shù)應(yīng)用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI