Pandas数据排序和排名

数据排序和排名

主要函数

1
2
3
df.sort_values()
df.groupby()
df.rank()

准备工作

1
2
3
4
5
6
import pandas as pd
pd.set_option('display.unicode.east_asian_width',True)

df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/46/mrbook.xlsx')

df.head()

数据排序

1
2
df.sort_values(by, axis=0, ascending=True, inplace=False, 
kind='quicksort', na_position='last', ignore_index=False)

参数解释:

by: 按照哪一列进行排序。单独一列为by='colummn',多列排序为`by = [‘column1’,’column2’];

axis=0: 默认对行进行排序,axis=1代表对列进行排序;

ascending=Ture: 默认升序排列,ascending=False代表降序排列;

inplace=False: 默认排序功能不对原表格进行替代,需要重新赋值到另一个表格参数以保存排序结果。inplace=Ture直接将排序结果保存到原表格之中。

kind=’quicksort’: 默认排序方式为快速排序。'mergesort'混合排序,'heapsort'堆排;

na_position=’last’: 默认空值排在最后,na_position='fisrt'空值在最前;

ignore_index=False: 默认忽略索引,不再重新设置索引。'ignore_index=True'表示重新按照表格顺序排列行索引。

1
2
3
4
5
6
df1 = df.sort_values(by = '销量')
print(df1.head())


df2 = df.sort_values(by='销量',ignore_index=True)
df2.head()

分组汇总

1
2
3
4
5
6
df2 = df.groupby(['column1'])['column2'].sum().reset_index()


df2 = df.groupby(['图书名称'])['销量'].sum().reset_index()
df2.sort_values(by='销量',ascending=False)
df2.head()

数据排名

1
df.rank(axis=0,method='average',numeric_only=None,na_option='keep',ascending=True,pct=False)

参数解析:

axis=0: 默认对行数据。axis=1对列数据排序;

method=’average’: 在有相同值的情况下的排序方式:

                average:默认值,平均排名

                min:最小值排名

                max:最大值排名

                first: 按值在原始数据中出现的顺序分配排名

                dense:密集排名,类似于最小值排名,但是排名每次只增加1,即排名相同的数据只占一个名次。

numeric_only=None: 默认值可以对任意列进行排名,numeric_only=True表示只对数字列进行排名;

na_optin=’keep’: 在存在空值的情况下的空值行排序方式

                keep: 默认值,将空值等级赋值给NaN值

                top:如果按升序排序,则将最小排名赋值给NaN值

                bottom: 如果按升序排序,则将最大值排名赋值给NaN值
                

ascending=True: 默认升序排序。指定多个排序可以使用布尔值列表。

1
2
3
4
5
6
pct=False: 是否以百分比的形式返回排名。
df['平均值排名'] = df['销量'].rank(ascending=True)
df['顺序排序'] = df['销量'].rank(method='first', numeric_only=True)
df['最大值排名'] = df['销量'].rank(method='max', pct=True)

print(df)

按行排序

没有新的函数,还是上面这三个函数,只是需要用到axis参数。

1
2
3
4
5
6
7
cf = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/49/books.xls')

cf.info()
cf.head()

cf1 = cf.sort_values(by = 0,axis=1)
cf1.head()

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!