6. Pandas 数据排序与排名
数据排序与排名
在数据分析中,排序与排名是基础而关键的操作。Pandas 提供了高效方法,包括按列或索引排序 (sort_values
、sort_index
) 以及数值排名 (rank
)。掌握这些操作可以快速提取关键信息、生成报表、判断趋势。本文通过实例演示常用排序与排名技巧。
1. 按列排序(sort_values)
1.1 升序排序
import pandas as pddata = {"姓名": ["张三", "李四", "王五", "赵六"],"年龄": [23, 34, 29, 40],"成绩": [88, 92, 75, 95]
}df = pd.DataFrame(data)
print("原始数据:\n", df)# 按年龄升序排序
df_sorted_age = df.sort_values(by='年龄')
print("\n按年龄升序排序:\n", df_sorted_age)
原始数据:姓名 年龄 成绩
0 张三 23 88
1 李四 34 92
2 王五 29 75
3 赵六 40 95按年龄升序排序:姓名 年龄 成绩
0 张三 23 88
2 王五 29 75
1 李四 34 92
3 赵六 40 95
1.2 降序排序
# 按成绩降序排序
df_sorted_score = df.sort_values(by='成绩', ascending=False)
print("按成绩降序排序:\n", df_sorted_score)
按成绩降序排序:姓名 年龄 成绩
3 赵六 40 95
1 李四 34 92
0 张三 23 88
2 王五 29 75
2. 按多列排序
可同时指定多列及各列的排序顺序:
# 先按年龄升序,再按成绩降序
df_sorted_multi = df.sort_values(by=['年龄', '成绩'], ascending=[True, False])
print("多列排序(年龄升序,成绩降序):\n", df_sorted_multi)
多列排序(年龄升序,成绩降序):姓名 年龄 成绩
0 张三 23 88
2 王五 29 75
1 李四 34 92
3 赵六 40 95
3. 按索引排序(sort_index)
axis=0
(默认)表示按行索引排序axis=1
表示按列索引排序
# 重置索引以演示索引排序
df_reset = df_sorted_age.reset_index(drop=True)
print("重置索引后:\n", df_reset)# 按行索引排序
df_index_sorted = df_reset.sort_index()
print("\n按索引排序:\n", df_index_sorted)
重置索引后:姓名 年龄 成绩
0 张三 23 88
1 王五 29 75
2 李四 34 92
3 赵六 40 95按索引排序:姓名 年龄 成绩
0 张三 23 88
1 王五 29 75
2 李四 34 92
3 赵六 40 95
点击添加单元格。
3. 排名函数(rank)
rank
可对数值列进行排名,支持多种方法处理重复值。
# 按成绩排名(默认平均排名)
df['排名'] = df['成绩'].rank()
print("成绩排名(平均排名法):\n", df)# method='min':相同值取最小排名
df['min'] = df['成绩'].rank(method='min')# method='max':相同值取最大排名
df['max'] = df['成绩'].rank(method='max')# method='first':按出现顺序排名
df['first'] = df['成绩'].rank(method='first')print("\n不同排名方法:\n", df)df['成绩排名_desc'] = df['成绩'].rank(ascending=False)
print("\n成绩降序排名:\n", df)
成绩排名(平均排名法):姓名 年龄 成绩 排名
0 张三 23 88 2.0
1 李四 34 92 3.0
2 王五 29 75 1.0
3 赵六 40 95 4.0不同排名方法:姓名 年龄 成绩 排名 min max first
0 张三 23 88 2.0 2.0 2.0 2.0
1 李四 34 92 3.0 3.0 3.0 3.0
2 王五 29 75 1.0 1.0 1.0 1.0
3 赵六 40 95 4.0 4.0 4.0 4.0成绩降序排名:姓名 年龄 成绩 排名 min max first 成绩排名_desc
0 张三 23 88 2.0 2.0 2.0 2.0 3.0
1 李四 34 92 3.0 3.0 3.0 3.0 2.0
2 王五 29 75 1.0 1.0 1.0 1.0 4.0
3 赵六 40 95 4.0 4.0 4.0 4.0 1.0
4. 小结
sort_values
:按列排序,可升序或降序,支持多列排序。sort_index
:按行或列索引排序,便于数据整理和重排。rank
:生成数值列排名,处理重复值灵活(平均、最小、最大、按顺序)。
排序与排名是数据分析、报表生成和趋势判断的重要工具。熟练掌握这些方法,可帮助快速提取关键信息,提高数据处理效率。