pandas的資料排序可以幫助我們更好地理解和分析資料,
通過對資料進行排序,我們可以提取出特定的資訊,例如最大值、最小值、中位數、眾數等等,從而更準確地識別資料的特征和特點,
此外,資料排序還可以幫助我們更好地進行資料可視化,例如繪制直方圖、箱線圖等等,進一步幫助我們對資料進行解讀和分析,
總之,資料排序在資料處理和分析中起著非常重要的作用,
1. 索引排序
pandas的資料集DataFrame默認的索引是從0開始的數字,默認升序排列,
import pandas as pd
df = pd.DataFrame(
{
"name": ["小華", "小紅", "小明"],
"gender": ["男", "女", "男"],
"score": [98, 100, 90],
}
)
df

當然,除了默認索引,也可以手動設定索引,手動設定索引的話,索引的順序不會自動排列,
比如:
df = pd.DataFrame(
{
"name": ["小華", "小紅", "小明"],
"gender": ["男", "女", "男"],
"score": [98, 100, 90],
},
index=[2, 1, 3],
)
df

1.1 索引升序
此時,就可以通過sort_index函式對資料集進行排序,默認是升序:
df.sort_index() # 升序

1.2 索引降序
設定ascending=False,則按照索引降序排列,
df.sort_index(ascending=False) # 降序

2. 值排序
除了索引排序,使用更多的是值排序,也就是按照各個列的值來排序,
2.1 單列的值排序
按照單個列的值排序:(英語成績由高到低排序)
df = pd.DataFrame(
{
"name": ["小華", "小紅", "小明"],
"math": [78, 98, 90],
"english": [80, 100, 80],
},
)
df.sort_values(by="english", ascending=False)

2.2 多列的值排序
從上面可以看出,小華和小明的英語成績一樣,這時,可以用多列排序,先按照英語排序,然后再按照數學成績排序,得到更合理的排序結果,
df.sort_values(by=["english", "math"], ascending=False)

3. 最大最小值
通過排序也雖然也可以得到資料集中最大和最小的幾個值,但是pandas還給我們提供了兩個更加簡單的函式,
專門用來獲取最大值和最小值,
也就是:nlargest 和 nsmallest,
3.1 nlargest
同樣使用上面的資料,獲取數學成績前兩名(成績從高到低),
df = pd.DataFrame(
{
"name": ["小華", "小紅", "小明"],
"math": [78, 98, 90],
"english": [80, 100, 80],
},
)
df.nlargest(2, "math")

3.2 nsmallest
獲取數學成績后兩名(成績從低到高),
df.nsmallest(2, "math")

4. 資料排名
排名和排序有些細微的區別,排序只是按照值的大小順序排列,如果兩個值一樣也只是簡單的保持其原來的先后順序,
而排名則和具體情況相關聯,比如,有時候兩個并列第一名后,后續的就是第三名,第二名空缺出來;也有時候并列名次存在時不影響后續的排名,
下面示例演示三種常用的排名方式:
4.1 順序排名
順序排名(method='first')和排序一樣,
df = pd.DataFrame(
{
"name": ["小華", "小紅", "小明", "小張", "小李"],
"score": [78, 98, 90, 98, 78],
},
)
df["成績排名"] = df.score.rank(method='first', ascending=False)
df["成績排名"] = df["成績排名"].astype(int)
df.sort_values("成績排名")

成績相同時,按照原資料集中的順序依次排列,
4.2 跳躍排名
跳躍排名(method='min'),并列名次存在時,后續的名次會跳躍,
df["成績排名"] = df.score.rank(method='min', ascending=False)
df["成績排名"] = df["成績排名"].astype(int)
df.sort_values("成績排名")

平時的考試一般會按照這種排名方式,
4.3 密集排名
密集排名(method='dense'),并列名次存在時,后續的名次仍然依次下去,
df["成績排名"] = df.score.rank(method='dense', ascending=False)
df["成績排名"] = df["成績排名"].astype(int)
df.sort_values("成績排名")

名次存在并列時,不影響后續的排名,
5. 總結回顧
本篇主要介紹了pandas資料排序的各種常用方法,排序之后的資料更容易查看,分析和比較,是分析前了解資料的必要手段,
上面只是介紹了各個排序相關函式最常用的引數,如果有更復雜的排序需求,請參考pandas的檔案,也歡迎留言探討,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/553052.html
標籤:Python
上一篇:關于執行緒的快取重繪
下一篇:返回列表
