Pandas的排序和排名(Series, DataFrame) + groupby


根據條件對數據集排序(sorting)也是一種重要的內置運算。要對行或列索引進行排序(按字典順序), 

可使用sort_index 方法, 它將返回一個已排序的新對象:

 

而DataFrame, 則可以根據任意一個軸上的索引進行排序:

降序

數據默認是按照升序排序的, 但也可以安裝降序排序

 

 

 按值排序

 

如果有缺失值呢

 求唯一值排序和頻率排序

 

 Dataframe指定某列的值進行排序,by選項

 

 

那么如果多個呢?

 

排名

排名(ranking ) 跟排序關系密切, 且它會增設一個排名值(從1開始, 一直到數組中有效數據的數量)。

它跟numpy.argsort產生的間接拍下索引差不多, 只不過它可以根據某種規則破壞平級關系。接下來介紹Series和Dataframe 的rank方法。

默認情況下, rank是通過”為各組分配一個平均排名“的方式破壞平級關系的。

 降序

 

 

 

 

 

 

 groupby方法

import pandas as pd
df = pd.DataFrame({'性別' : ['', '', '', '',
                              '', '', '', ''],
                       '成績' : ['優秀', '優秀', '及格', '',
                              '及格', '及格', '優秀', ''],
                       '年齡' : [15,14,15,12,13,14,15,16]})
GroupBy=df.groupby("性別")

 

GroupBy.iter() 


GroupBy對象是一個迭代對象,每次迭代結果是一個元組,元組的第一個元素是該組的名稱(就是groupby的列的元素名稱),第二個元素是該組的具體信息,是一個數據框,索引是以前的數據框的總索引

for name,group in GroupBy:
    print(name)
    print(group)
女
   年齡 性別  成績
1  14  女  優秀
3  12  女   差
5  14  女  及格
男
   年齡 性別  成績
0  15  男  優秀
2  15  男  及格
4  13  男  及格
6  15  男  優秀
7  16  男   差

groupby還有其他子方法,需要的話自己在百度吧 

 

來個例子, groupby + apply + sortValues的例子

data.groupby('customer_id')['repayment_date'].apply(lambda x:x.sort_values(ascending=False)).reset_index()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM