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()方法。