Pandas数据分析08——数据排序

 参考书目:《深入浅出Pandas:利用Python进行数据处理与分析》


pandas的数据排序类似excel的rank函数,但是用法更多。

先读取案例数据

import numpy as np
import pandas as pd 
import datetime
data = 'https://www.gairuo.com/file/data/dataset/team.xlsx'
df = pd.read_excel(data) 

数据排序 

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'''

数据值排序

df.Q1.sort_values()
df.sort_values('Q2') #df要传入排序列名
df.sort_values(by=['team','name'],ascending=[True,False])  #team升序,相同的name降序

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()

按照大小值排序

s.nsmallest(3) # 最小的三个
s.nlargest(3) # 最大的三个
# 指定列
df.nlargest(3, 'Q1')
df.nlargest(5, ['Q1', 'Q2'])
df.nsmallest(len(df), ['Q1', 'Q2'])#Q1小在前,如果一样看Q2,返回指定个数

rank排序

df.rank()#返回每列排序位置
df.rank(axis=1)#返回每行排序位置
df.rank(pct=True)#相对位置

猜你喜欢

转载自blog.csdn.net/weixin_46277779/article/details/126105417
今日推荐