Pandas DataFrame中列的百分位秩


查找百分位秩是一种常见的操作,用于比较单个数据集中的数据。此操作的最终结果显示某个百分比大于或等于指定的百分位数。例如,假设一名学生的分数大于或等于所有其他分数的80%。那么,该学生的百分位秩就是第80位。

要查找Pandas DataFrame中列的百分位秩,我们可以使用Python提供的名为“rank()”和“percentile()”的内置方法。

Python程序:查找Pandas中列的百分位秩

在继续之前,让我们熟悉一下Pandas DataFrame。它是一个开源的Python库,主要用于数据分析和处理。它可以通过对指定数据执行各种操作(例如清理、过滤、分组、聚合和合并)来处理关系数据和标签数据。

现在,是时候深入研究示例程序了。

示例1

在下面的示例中,我们将使用内置方法“percentile()”来计算百分位秩。

方法

  • 第一步是导入pandas和numpy包。

  • 创建一个名为“df”的DataFrame,其中包含两列“Name”和“Score”。

  • 接下来,使用“percentile()”方法计算百分位秩。我们将直接将此方法应用于“Score”列,并将列本身作为数据数组和所需的百分位数传递。它还带有一个可选参数“method”,用于指定当所需的百分位数落在两个数据点之间时要使用的插值方法。在本例中,它设置为“nearest”,这意味着将返回最近的秩。

  • 最后,将生成的百分位数分配给一个名为“Per_Rank”的新列,并使用“print()”方法显示结果。

# importing packages
import pandas as pd
import numpy as np
# defining a sample DataFrame using pandas
data = {'Name': ['Ram', 'Shyam', 'Shrey', 'Mohan', 'Navya'],
      'Score': [75, 82, 68, 90, 88] }
df = pd.DataFrame(data)
# Calculating the percentile rank using numpy
df['Per_Rank'] = np.percentile(df['Score'], df['Score'], method = 'nearest')
# to show the result
print(df)

输出

    Name  Score  Per_Rank
0    Ram     75        88
1  Shyam     82        88
2  Shrey     68        88
3  Mohan     90        90
4  Navya     88        90

示例2

以下示例说明了使用“rank()”方法查找百分位秩。

方法

  • 首先,使用引用名称“pd”导入pandas包。

  • 创建一个包含两列“Name”和“Score”的Pandas DataFrame。

  • 接下来,创建一个用户定义的方法“percentile_rank()”,并带有一个名为“column”的参数。在此方法内部,通过将“pct”参数设置为True来使用内置方法“rank()”,以便它可以返回该列的百分位秩。

  • 现在,通过将df['Score']作为参数传递,将“percentile_rank()”方法应用于“Score”列,然后将结果存储到一个名为“Per_Rank”的新列中。

  • 最后,使用“print()”方法显示结果并退出。

# importing the required package
import pandas as pd
# defining a sample DataFrame using pandas
data = {'Name': ['Ram', 'Shyam', 'Shrey', 'Mohan', 'Navya'],
      'Score': [55, 92, 68, 70, 88] }
df = pd.DataFrame(data)
# user-defined method Calculating the percentile rank
def percentile_rank(column):
   return column.rank(pct = True)
# calling the user-defined method
df['Per_Rank'] = percentile_rank(df['Score'])
# to show the result
print(df)

输出

    Name  Score  Per_Rank
0    Ram     55       0.2
1  Shyam     92       1.0
2  Shrey     68       0.4
3  Mohan     70       0.6
4  Navya     88       0.8

示例3

在这个例子中,我们将修改前面示例中的代码,定义一个名为“Balance”的新列,并将rank()方法应用于它,而不是“Score”列。

# importing the required package
import pandas as pd
# defining a sample DataFrame using pandas
data = {'Name': ['Ram', 'Shyam', 'Shrey', 'Mohan', 'Navya'],
      'Balance': [5500, 9200, 6800, 7000, 8800]}
df = pd.DataFrame(data)
# user-defined method Calculating the percentile rank
def percentile_rank(column):
   return column.rank(pct = True)
# calling the user-defined method
df['Per_Rank'] = percentile_rank(df['Balance'])
# to show the result
print(df)

输出

    Name  Balance  Per_Rank
0    Ram     5500       0.2
1  Shyam     9200       1.0
2  Shrey     6800       0.4
3  Mohan     7000       0.6
4  Navya     8800       0.8

结论

在本文中,我们讨论了几种计算百分位秩的方法,包括“rank()”和“percentile()”。我们通过指定pct = True使用了“rank()”方法,并通过传递列名作为参数使用了percentile()方法。

更新于:2023年7月25日

2K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告