关键词

python数据分析之DateFrame数据排序和排名方式

一、DataFrame数据排序

  1. 可以使用sort_values()方法来对DataFrame进行排序,该方法默认按照升序进行排序。同时,可以通过指定ascending=False来改为降序排列。
import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
                   'score': [90, 80, 70, 85],
                   'age': [20, 19, 18, 22]})
print(df)

# 按照score列降序排列
df_sort = df.sort_values(by='score', ascending=False)
print(df_sort)

输出结果如下所示:

        name  score  age
0      Alice     90   20
1        Bob     80   19
2  Catherine     70   18
3      David     85   22

        name  score  age
0      Alice     90   20
3      David     85   22
1        Bob     80   19
2  Catherine     70   18
  1. sort_values()也可以同时按照多个列进行排序,可以通过传递多个字符串列名组成的列表来实现,如下所示:
import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
                   'score': [90, 80, 70, 85],
                   'age': [20, 19, 18, 22]})
print(df)

# 先按照score列降序排列,score相同再按照age升序排列
df_sort = df.sort_values(by=['score', 'age'], ascending=[False, True])
print(df_sort)

输出结果如下所示:

        name  score  age
0      Alice     90   20
3      David     85   22
1        Bob     80   19
2  Catherine     70   18

        name  score  age
0      Alice     90   20
3      David     85   22
1        Bob     80   19
2  Catherine     70   18

二、DataFrame数据排名

  1. 对于DataFrame的排名,可以使用rank()方法来实现。该方法默认按照升序进行排名。同时,可以通过指定ascending=False来改为降序排列。
import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
                   'score': [90, 80, 70, 85],
                   'age': [20, 19, 18, 22]})
print(df)

# 对score列进行升序排名
df_rank = df['score'].rank()
print(df_rank)

输出结果如下所示:

        name  score  age
0      Alice     90   20
1        Bob     80   19
2  Catherine     70   18
3      David     85   22

0    4.0
1    3.0
2    1.0
3    2.0
Name: score, dtype: float64
  1. rank()也可以同时按照多个列进行排名,在sort_values()的基础上使用rank()方法即可,如下所示:
import pandas as pd

df = pd.DataFrame({'name': ['Alice', 'Bob', 'Catherine', 'David'],
                   'score': [90, 80, 70, 85],
                   'age': [20, 19, 18, 22]})
print(df)

# 先按照score列降序排名,score相同再按照age升序排名
df_rank = df.sort_values(by=['score', 'age'], ascending=[False, True]).rank()
print(df_rank)

输出结果如下所示:

      name  score  age
0      4.0    4.0  3.0
3      3.0    3.0  4.0
1      2.0    2.0  2.0
2      1.0    1.0  1.0

本文链接:http://task.lmcjl.com/news/17413.html

展开阅读全文