本篇內(nèi)容主要講解“R語言和Python中常見的排序函數(shù)應(yīng)用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“R語言和Python中常見的排序函數(shù)應(yīng)用”吧!
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站設(shè)計、寧洱網(wǎng)絡(luò)推廣、微信小程序定制開發(fā)、寧洱網(wǎng)絡(luò)營銷、寧洱企業(yè)策劃、寧洱品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供寧洱建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
排序可能是日常數(shù)據(jù)清洗過程中比較高頻的應(yīng)用了,今天這一篇給大家介紹R語言和Python中最為常見的排序函數(shù)應(yīng)用。
R語言:
sort
order
rank
arrange
排序根據(jù)對向量排序和數(shù)據(jù)框的排序要使用不同的函數(shù),以上四個函數(shù)中,前三個是針對向量的,最后一個是針對數(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) #降序排列
order
order(x,decreasing=F) #變量由小到大在原始數(shù)據(jù)中的位次(默認(rèn)升序可無需邏輯參數(shù))
order(x,decreasing=T) #按照由大到小的順序?qū)?yīng)元素在原始向量中的微詞。
rank:
#rank函數(shù)返回向量的秩,即對應(yīng)元素在原始向量中排名。
rank(x)
基于數(shù)據(jù)框自身的排序:
當(dāng)針對數(shù)據(jù)框進(jìn)行排序時,如同對數(shù)據(jù)框進(jìn)行條件索引一樣,也可以基于數(shù)據(jù)框自身的方法來實(shí)現(xiàn)。
(mydata<-data.frame(name=LETTERS[1:10],class=sample(letters[1:4],10,replace=TRUE),value=runif(10,0,5)))
mydata[order(mydata$value),] #默認(rèn)生序排列
mydata[order(mydata$value,decreasing=T),] #根據(jù)value降序排列
以上這種方式通過基于數(shù)據(jù)框自身的規(guī)則,完成了排序工作(實(shí)際上是一種布爾索引),但是不夠優(yōu)雅,寫了繁瑣的變量名,而且只能根據(jù)一個字段來排序。
數(shù)據(jù)框排序-arrange
arrange函數(shù)的存在實(shí)在是R語言排序大殺器。
library(dplyr)
mydata%>%plyr::arrange(class,value)
mydata%>%plyr::arrange(class,-value)
arrange函數(shù)不僅可以實(shí)現(xiàn)多變量規(guī)則排序,而且可以僅以負(fù)號指定降序,語法簡潔,功能強(qiáng)大,其中多變量時,一般是分類變量在前,連續(xù)變量在后,粒度粗的維度排在最前面,分類變量排序粒度依次遞減。最后是連續(xù)變量。
-------------
Python:
-------------
sort
sorted
.sort_index
.sort_value
列表排序方法:
x=[97,93,85,74,32,100,99,67]
針對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) #指定降序
字典排序方法:
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ù)字典的鍵逆排序
排序時按照鍵值對:
sorted(mydata.items(),key=lambda item:item[1]) #根據(jù)值字段生序排列
sorted(mydata.items(),key=lambda item:item[1],reverse=True) #根據(jù)值字段逆序排列
數(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"]) #排序多個字段
索引排序:
df1=df1.set_index('id') #設(shè)置索引列
df1.sort_index() #使用索引進(jìn)行排序
df1.sort_index(ascending=False) #使用索引列降序排列
--------------
本節(jié)小結(jié):
-----------
排序函數(shù):
R語言:
向量:
sort
order
rank
數(shù)據(jù)框:
arrange
Python:
列表與字典:
sort
sorted
數(shù)據(jù)框:
.sort_index
.sort_value
到此,相信大家對“R語言和Python中常見的排序函數(shù)應(yīng)用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!