Pandas数据框架排名的完整指南

269 阅读3分钟

Pandas DataFrame rank()函数返回系列中每个索引的等级,该索引被传递。 排名是根据系列的排序后的位置来返回的。

Pandas DataFrame rank

Pandas DataFrame rank()是一个库方法,用于返回所传递的系列的每个索引的等级。排名是根据排序后的位置返回的。

rank()方法最多接受六个参数,并返回系列中每个索引的等级。

语法

DataFrame.rank(axis=0, method=’average’, numeric_only=None, na_option=’keep’, ascending = True, pct = False)

参数

它有以下参数,这些参数将被简要地定义:

  1. axis(轴):它采用整数值(0或1)。0(index)是指行,1(columns)是指列。
  2. method:它接受字符串输入。它可以有'平均'、'最小'、'最大'、'第一'、'密集'的值。默认情况下,它被设置为'平均'。它意味着给类似的值分配一个平均的等级。
  3. numeric_only:它需要一个布尔值,完全是可选的。对于DataFrame对象,如果设置为True,它只对数字列进行排名。
  4. na_option:它也接受字符串输入。它可以有'保持'、'顶部'、'底部'。这样做是为了设置所传递的系列中的Null值的位置(如果有的话)。
  5. ascending(升序):它接受布尔值,如果为真,则以升序排列。
  6. pct:它接收一个布尔值,如果为真,则按百分比排列。

返回值

rank函数返回在调用者系列中存在的每个索引的等级的系列。

Pandas DataFrame rank()的程序示例

写一个程序来展示rank()方法的工作

import pandas as pd

data_dict = {"Name": ["Rohit", "Karan", "Shivam", "Anubhav"],
             "Age": [21, 23, 31, 23], "City": ["Patna", "Kolkata", "Mumbai", "Kolkata"]}  # Creating a DataFrame with data of few people
data = pd.DataFrame(data_dict)

# Adding a rank column that will be evaluated according to the names.
data["Rank"] = data["Name"].rank()
print(data, "\n")  # Printing the datan

# Sorting the data w.r.t to column == Name
data.sort_values("Name", inplace=True)
print("\n Data after sorting the DataFrame according to the rank")
print(data, "\n")

输出

   Name  Age     City  Rank
0    Rohit   21    Patna   3.0
1    Karan   23  Kolkata   2.0
2   Shivam   31   Mumbai   4.0
3  Anubhav   23  Kolkata   1.0


 Data after sorting the DataFrame according to the rank
      Name  Age     City  Rank
3  Anubhav   23  Kolkata   1.0
1    Karan   23  Kolkata   2.0
0    Rohit   21    Patna   3.0
2   Shivam   31   Mumbai   4.0

在这里我们可以看到,我们已经从一个 包含学生数据 的 字典中创建了一个DataFrame 。我们添加了一个名为rank的列,之后,我们 根据名字对数据进行排序,并将其打印在DataFrame中。

在Pandas中对具有相似值的列进行排序

在下面的例子中,DataFrame首先按照列名进行排序

请看下面的代码:

import pandas as pd

data_dict = {"Name": ["Rohit", "Karan", "Shivam", "Karan"],
             "Age": [21, 23, 31, 23], "City": ["Patna", "Kolkata", "Mumbai", "Kolkata"]}  # Creating a DataFrame with data of few people
data = pd.DataFrame(data_dict)

# Adding a rank column that will be evaluated according to the names.
data["Rank"] = data["Name"].rank()

print(data, "\n")  # Printing the data
# Sorting the data w.r.t to column == Name
data.sort_values("Name", inplace=True)
print("\n Data after sorting the DataFrame according to the rank")
print(data, "\n")

输出

   Name  Age     City  Rank
0   Rohit   21    Patna   3.0
1   Karan   23  Kolkata   1.5
2  Shivam   31   Mumbai   4.0
3   Karan   23  Kolkata   1.5


 Data after sorting the DataFrame according to the rank
     Name  Age     City  Rank
1   Karan   23  Kolkata   1.5
3   Karan   23  Kolkata   1.5
0   Rohit   21    Patna   3.0
2  Shivam   31   Mumbai   4.0

在这里我们可以看到,我们从一个字典中创建了一个DataFrame,它 由具有相同名字的学生数据组成(在这个DataFrame中是Karan)。

我们添加了一个名为rank的列,根据 名字对数据进行排序 ,并将其打印在DataFrame中。

这就是Pandas DataFrame rank()方法的内容。