如何在 pandas 中按组计算分位数


您可以使用以下基本语法在 Pandas 中按组计算分位数:

 df. groupby (' grouping_variable '). quantile ( .5 )

以下示例展示了如何在实践中使用此语法。

示例1:按组计算分位数

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame 
df = pd. DataFrame ({' team ': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
                   ' score ': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]})

#view first five rows
df. head ()

team score
0 1 3
1 1 4
2 1 4
3 1 5
4 1 5 

以下代码显示了如何计算“points”列中值的第 90 个百分位数,并按“team”列分组:

 df. groupby (' team '). quantile ( .90 )

	score
team	
1 6.5
2 4.0

以下是如何解释结果:

  • 第 1 队的第 90 个百分位数是6.5
  • 第 2 队的第 90 个百分位数是4.0

示例 2:计算每组的多个分位数

以下代码显示了如何一次计算每组的多个分位数:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2],
                   ' score ': [3, 4, 4, 5, 5, 8, 1, 2, 2, 3, 3, 5]})

#create functions to calculate 1st and 3rd quartiles
def q1(x):
    return x. quantile ( 0.25 )

def q3(x):
    return x. quantile ( 0.75 )

#calculate 1st and 3rd quartiles by group
vals = {' score ': [q1, q3]}

df. groupby (' team '). agg (vals)

	score
        q1 q3
team		
1 4.0 5.0
2 2.0 3.0

以下是如何解释结果:

  • 第 1 队得分的第一和第三四分位数分别为4.05.0
  • 第 2 队得分的第一和第三四分位数分别是2.03.0

其他资源

以下教程解释了如何在 pandas 中执行其他常见功能:

如何找到 Pandas 中每组的最大值
如何统计大熊猫的群体目击事件
如何计算 Pandas 中列的平均值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注