Skip to content

数据排序

Pandas 提供了强大的数据排序功能。

按列排序

python
import pandas as pd

df = pd.DataFrame({
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 25, 35],
    '分数': [85, 90, 78, 92]
})

# 按单列升序排序
df_sorted = df.sort_values('年龄')
print(df_sorted)

# 按单列降序排序
df_sorted = df.sort_values('年龄', ascending=False)
print(df_sorted)

# 按多列排序
df_sorted = df.sort_values(['年龄', '分数'], ascending=[True, False])
print(df_sorted)

按索引排序

python
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}, index=['c', 'a', 'b'])

# 按索引升序排序
df_sorted = df.sort_index()
print(df_sorted)

# 按索引降序排序
df_sorted = df.sort_index(ascending=False)
print(df_sorted)

Series 排序

python
s = pd.Series([3, 1, 4, 1, 5], index=['c', 'a', 'd', 'b', 'e'])

# 按值排序
s_sorted = s.sort_values()
print(s_sorted)

# 按索引排序
s_sorted = s.sort_index()
print(s_sorted)

排序选项

python
df = pd.DataFrame({
    'A': [3, 1, None, 2],
    'B': ['c', 'a', 'b', 'd']
})

# 空值放在最后
df_sorted = df.sort_values('A', na_position='last')
print(df_sorted)

# 空值放在最前
df_sorted = df.sort_values('A', na_position='first')
print(df_sorted)

# 原地排序
df.sort_values('A', inplace=True)
print(df)

多级索引排序

python
df = pd.DataFrame(
    {'值': [1, 2, 3, 4]},
    index=pd.MultiIndex.from_tuples([
        ('B', 2), ('A', 1), ('B', 1), ('A', 2)
    ], names=['类别', '编号'])
)

# 按级别排序
df_sorted = df.sort_index(level='类别')
print(df_sorted)

# 按多个级别排序
df_sorted = df.sort_index(level=['类别', '编号'])
print(df_sorted)

排名

python
df = pd.DataFrame({
    '分数': [85, 92, 78, 92, 85]
})

# 默认排名(相同值取平均排名)
df['排名'] = df['分数'].rank()
print(df)

# 最小排名
df['排名_最小'] = df['分数'].rank(method='min')
print(df)

# 最大排名
df['排名_最大'] = df['分数'].rank(method='max')
print(df)

# 密集排名
df['排名_密集'] = df['分数'].rank(method='dense')
print(df)

排序是数据分析中常用的操作,合理使用排序可以更好地理解数据分布。