数据排序

作者:管理员 发布时间:2021-02-01 14:13

排序是数据分析的一种手段,Pandas 支持三种排序方式:按索引排序,按列值排序以及两者结合进行排序。

索引排序

sort_index() 可将索引重新排序,意味着每行数据的位置跟着索引而变化。

s.sort_index() # 升序排列
df.sort_index() # df 也是按索引进行排序
df.team.sort_index()
s.sort_index(ascending=False) # 降序排列
s.sort_index(inplace=True) # 排序后生效,改变原数据
# 索引重新0-(n-1) 排, 很有用,可以得到它的排序号
s.sort_index(ignore_index=True)
s.sort_index(na_position='first') # 空值在前,另 ‘last’
s.sort_index(level=1) # 如果多层,排一级
s.sort_index(level=1, sort_remaining=False) # 这层不排

# 行索引排序,表头排序
df.sort_index(axis=1) # 会把列按列名顺序排列

df.reindex()指定自己定义顺序的索引,实现行和列的顺序重新定义:

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

# 按要求重新指定索引顺序
df.reindex(['c', 'b', 'a'])
'''
   A  B
c  4  6
b  2  5
a  1  3
'''

# 指定列顺序
df.reindex(['B', 'A'], axis=1)
'''
   B  A
a  3  1
b  5  2
c  6  4
'''


列值排序

数据值的排序主要使用 sort_values(),数值按大小顺序,字符按字母顺序 

s.sort_values() # 升序
s.sort_values(ascending=False) # 降序
s.sort_values(inplace=True) # 修改生效
s.sort_values(na_position='first') # 空值在前
# df 按指定字段顺序
df.sort_values(by=['team'])
df.sort_values('Q1')
# 按多个字段,先排 team, 在同 team 内再看 Q1
df.sort_values(by=['team', 'Q1'])
# 全降序
df.sort_values(by=['team', 'Q1'], ascending=False)
# 对应指定team升Q1降 
df.sort_values(by=['team', 'Q1'], ascending=[True, False])
# 索引重新0-(n-1) 排
df.sort_values('team', ignore_index=True)


结合排序

有些时间就需要索引和值混合排序,比如先按名字排序同序的再按团队排:

df.set_index('name', inplace=True)
df.index.names = ['s_name']
df.sort_values(by=['s_name', 'team'])
# 以下方法也可以实现上述需求,不过要注意顺序
df.set_index('name').sort_values('team').sort_index()
# 以下多层索引示例,a 为一级 a1 为 a 下边的二级索引
df1.sort_values(by=('a', 'a1'))


其它排序:

也可以用 nsmallest() 和 nlargest() 来实现排序(只支持数字):  

s.nsmallest(3) # 最小的三个
s.nlargest(3) # 最大的三个
# 指定列
df.nlargest(3, 'Q1')
df.nlargest(5, ['Q1', 'Q2'])
df.nsmallest(5, ['Q1', 'Q2'])



标签:
Copyright © 2020 万物律动 旗下 AI算法狮 京ICP备20010037号-1
本站内容来源于网络开放内容的收集整理,并且仅供学习交流使用;
如有侵权,请联系删除相关内容;