python数据处理 DataFrame排序与排名
pandas的DataFrame极大地简化了数据分析过程中一些烦琐操作,它是一个表格型的数据结构, 每一列代表一个变量,而每一行则是一条记录。简答地说,DataFrame是共享同一个index 的Series的集合。DataFrame数据的排序分为三类: 对于索引排序,涉及到对行的索引和对列的索引进行升序或者降序排序函数df.sort_index(axis= , ascending= , inp
pandas的DataFrame极大地简化了数据分析过程中一些烦琐操作,它是一个表格型的数据结构, 每一列代表一个变量,而每一行则是一条记录。简答地说,DataFrame是共享同一个index 的Series的集合。
DataFrame数据的排序分为三类:
- 对索引排序sort_index();
- 对值进行排序sort_values();
- 是对值进行排名rank()。
(1)、索引排名
对于索引排序,涉及到对行的索引和对列的索引进行升序或者降序排序函数df.sort_index(axis= , ascending= , inplace=),需要特别注意这三个参数。axis表示对行的索引排序,还是对列的索引进行排序;ascending表示升序,还是降序操作。
dates = ['2022-01-01','2022-09-02','2022-01-03','2022-01-04','2022-01-05','2022-01-06']
dates=pd.to_datetime(dates)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
#默认按照行的索引进行升序排序
df.sort_index()
Out[48]:
A B C D
2022-01-01 0.096360 0.390240 -1.272864 -0.248937
2022-01-03 2.085985 -1.026902 0.089471 0.049253
2022-01-04 0.459439 1.356780 -0.327171 0.735977
2022-01-05 0.625936 -1.434436 0.289198 -1.308614
2022-01-06 0.306561 -0.718824 -1.639355 -0.287135
2022-09-02 0.043364 2.206094 0.853971 2.067719
#按照列的索引进行降序排序
df.sort_index(axis=1,ascending=False)
Out[49]:
D C B A
2022-01-01 -0.248937 -1.272864 0.390240 0.096360
2022-09-02 2.067719 0.853971 2.206094 0.043364
2022-01-03 0.049253 0.089471 -1.026902 2.085985
2022-01-04 0.735977 -0.327171 1.356780 0.459439
2022-01-05 -1.308614 0.289198 -1.434436 0.625936
2022-01-06 -0.287135 -1.639355 -0.718824 0.306561
(2)、对值排序
对于值排名,使用函数df.sort_values(by= , axix=,ascending= , inplace=,na_postion=)。
注意:axis=0表示按照行进行排名,axis=1表示按照列进行排名,默认0;ascending=True表示升序,ascending=False表示降序,默认True.na_position参数用于设定缺失值的显示位置,first表示缺失值显示在最前面;last表示缺失值显示在最后面
df = pd.DataFrame(np.random.randn(6,4),index=['a','b','c','d','e','f'],columns=list('ABCD'))
#对单列的值进行降序排序,其他列不参与排序。
df.sort_values(by='A',axis=0,ascending=False,inplace=True)
#对单行的值进行降序排序,其他行不参与排序
f.sort_values(by='b',axis=1,ascending=False,inplace=True)
#对多列的值进行降序排序
df.sort_values(by='A',axis=0,ascending=False,inplace=True)
df.loc['g','A']=1
df.sort_values(by='A',axis=0,ascending=False,inplace=True,na_position="first")
(3)、对值排名
对于值排名,使用函数rank(axis= , ascending= ,method,na_position=),。
注意:axis=0表示按照行进行排名,axis=1表示按照列进行排名,默认0;ascending=True表示升序,ascending=False表示降序,默认True.method='average'是表示值相等时,都取平均排序作为排名,method='min'表示值相等时,都取最小排序作为排名,method='max'表示值相等时,都取最大排序作为排名,method='first'表示值相等时,自然位置前者排前面,method='dense'表示值相等时,都取最小排序作为排名,且后续排名仅跟+1。
df['A']
Out[74]:
a 0.0
b 1.0
c 1.0
d 1.0
e 1.0
f 1.0
g 3.0
h 3.0
df['A'].rank()
Out[75]:
a 1.0
b 4.0
c 4.0
d 4.0
e 4.0
f 4.0
g 7.5
h 7.5
df['A'].rank(method='first')
Out[76]:
a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
f 6.0
g 7.0
h 8.0
df['A'].rank(method='average')
Out[77]:
a 1.0
b 4.0
c 4.0
d 4.0
e 4.0
f 4.0
g 7.5
h 7.5
df['A'].rank(method='min')
Out[78]:
a 1.0
b 2.0
c 2.0
d 2.0
e 2.0
f 2.0
g 7.0
h 7.0
df['A'].rank(method='max')
Out[79]:
a 1.0
b 6.0
c 6.0
d 6.0
e 6.0
f 6.0
g 8.0
h 8.0
df['A'].rank(method='dense')
Out[80]:
a 1.0
b 2.0
c 2.0
d 2.0
e 2.0
f 2.0
g 3.0
h 3.0
更多推荐
所有评论(0)