欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Python培訓(xùn)之pandas的排序和排名的具體使用

2019-07-31 16:32:48 3779瀏覽

今天千鋒扣丁學(xué)堂Python培訓(xùn)老師給大家分享一篇關(guān)于pandas的排序和排名的具體使用詳解,首先有的時(shí)候我們可以要根據(jù)索引的大小或者值的大小對(duì)Series和DataFrame進(jìn)行排名和排序,下面我們一起來看一下吧。



一、排序

pandas提供了sort_index方法可以根據(jù)行或列的索引按照字典的順序進(jìn)行排序

a、Series排序

1、按索引進(jìn)行排序

#定義一個(gè)Series
s = Series([1,2,3],index=["a","c","b"])
#對(duì)Series的索引進(jìn)行排序,默認(rèn)是升序
print(s.sort_index())
'''
a  1
b  3
c  2
'''
#對(duì)索引進(jìn)行降序排序
print(s.sort_index(ascending=False))
'''
c  2
b  3
a  1
'''

2、按值進(jìn)行排序

s = Series([np.nan,1,7,2,0],index=["a","c","e","b","d"])
#對(duì)Series的值進(jìn)行排序,默認(rèn)是按值的升序進(jìn)行排序的
print(s.sort_values())
'''
d  0.0
c  1.0
b  2.0
e  7.0
a  NaN
'''
#對(duì)Seires的值進(jìn)行降序排序
print(s.sort_values(ascending=False))
'''
e  7.0
b  2.0
c  1.0
d  0.0
a  NaN
'''

對(duì)值進(jìn)行排序的時(shí)候,無論是升序還是降序,缺失值(NaN)都會(huì)排在最后面。

b、DataFrame排序

1、按索引進(jìn)行排序

a = np.arange(9).reshape(3,3)
data = DataFrame(a,index=["0","2","1"],columns=["c","a","b"])
#按行的索引升序進(jìn)行排序,默認(rèn)按行,升序
print(data.sort_index())
'''
  c a b
0 0 1 2
1 6 7 8
2 3 4 5
'''
#按行的索引按降序進(jìn)行排序
print(data.sort_index(ascending=False))
'''
  c a b
2 3 4 5
1 6 7 8
0 0 1 2
'''
#按列升序的索引進(jìn)行排序
print(data.sort_index(axis=1))
'''
  a b c
0 1 2 0
2 4 5 3
1 7 8 6
'''
#按列降序的索引進(jìn)行排序
print(data.sort_index(ascending=False))
'''
  c a b
2 3 4 5
1 6 7 8
0 0 1 2
'''

2、按值進(jìn)行排序

a = [[9,3,1],[1,2,8],[1,0,5]]
data = DataFrame(a, index=["0", "2", "1"], columns=["c", "a", "b"])
#按指定列的值大小順序進(jìn)行排序
print(data.sort_values(by="c"))
'''
  c a b
2 1 2 8
1 1 0 5
0 9 3 1
'''
print(data.sort_values(by=["c","a"]))
'''
  c a b
1 1 0 5
2 1 2 8
0 9 3 1
'''
#按指定行值進(jìn)行排序
print(data.sort_values(by="0",axis=1))
'''
  b a c
0 1 3 9
2 8 2 1
1 5 0 1


注意:對(duì)DataFrame的值進(jìn)行排序的時(shí)候,我們必須要使用by指定某一行(列)或者某幾行(列),如果不使用by參數(shù)進(jìn)行指定的時(shí)候,就會(huì)報(bào)TypeError:sort_values()missing1requiredpositionalargument:'by'。使用by參數(shù)進(jìn)行某幾列(行)排序的時(shí)候,以列表中的第一個(gè)為準(zhǔn),可能后面的不會(huì)生效,因?yàn)橛械臅r(shí)候無法做到既對(duì)第一行(列)進(jìn)行升序排序又對(duì)第二行(列)進(jìn)行排序。在指定行值進(jìn)行排序的時(shí)候,必須設(shè)置axis=1,不然會(huì)報(bào)錯(cuò),因?yàn)槟J(rèn)指定的是列索引,找不到這個(gè)索引所以報(bào)錯(cuò),axis=1的意思是指定行索引。

二、排名

排名和排序有點(diǎn)類似,排名會(huì)有一個(gè)排名值(從1開始,一直到數(shù)組中有效數(shù)據(jù)的數(shù)量),它與numpy.argsort的間接排序索引差不多,只不過它可以根據(jù)某種規(guī)則破壞平級(jí)關(guān)系。

a、Series的排名

s = Series([1,3,2,1,6],index=["a","c","d","b","e"])
#默認(rèn)是根據(jù)值的大小進(jìn)行平均排名
'''
1是最小的,所以第一個(gè)1排在第一,第二個(gè)1排在第二
因?yàn)槿〉氖瞧骄琶?,所?的排名為1.5
'''
print(s.rank())
'''
a  1.5
c  4.0
d  3.0
b  1.5
e  5.0
'''
#根據(jù)值在數(shù)組中出現(xiàn)的順序進(jìn)行排名
print(s.rank(method="first"))
'''
a  1.0
c  4.0
d  3.0
b  2.0
e  5.0
'''

method參數(shù)除了,first按值在原始數(shù)據(jù)中的出現(xiàn)順序分配排名,還有min使用整個(gè)分組的最小排名,max是用整個(gè)分組的最大排名,average使用平均排名,也是默認(rèn)的排名方式。還可以設(shè)置ascending參數(shù),設(shè)置降序還是升序排序。

b、DataFrame的排名

a = [[9, 3, 1], [1, 2, 8], [1, 0, 5]]
data = DataFrame(a, index=["0", "2", "1"], columns=["c", "a", "b"])
print(data)
'''
  c a b
0 9 3 1
2 1 2 8
1 1 0 5
'''
#默認(rèn)按列進(jìn)行排名
print(data.rank())
'''
   c  a  b
0 3.0 3.0 1.0
2 1.5 2.0 3.0
1 1.5 1.0 2.0
'''
#按行進(jìn)行排名
print(data.rank(axis=1))
'''
   c  a  b
0 3.0 2.0 1.0
2 1.0 2.0 3.0
1 2.0 1.0 3.0
'''

method參數(shù)和ascending參數(shù)的設(shè)置與Series一樣。

以上就是關(guān)于千鋒扣丁學(xué)堂Python培訓(xùn)之pandas的排序和排名的具體使用的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,最后想要了解更多關(guān)于Python和人工智能方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供權(quán)威的Python開發(fā)環(huán)境搭建視頻,Python培訓(xùn)后的前景無限,行業(yè)薪資和未來的發(fā)展會(huì)越來越好的,扣丁學(xué)堂老師精心推出的Python視頻教程定能讓你快速掌握Python從入門到精通開發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Python技術(shù)交流群:279521237。


扣丁學(xué)堂微信公眾號(hào)                          Python全棧開發(fā)爬蟲人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)分析免費(fèi)公開課直播間


      【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】         【掃碼進(jìn)入Python全棧開發(fā)免費(fèi)公開課】



查看更多關(guān)于"Python開發(fā)資訊"的相關(guān)文章>

標(biāo)簽: Python培訓(xùn) Python視頻教程 Python在線視頻 Python學(xué)習(xí)視頻 Python培訓(xùn)班

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部