pandas-python中多个键上groupby中的四分位数和其他参数



df列如下:

Key1   Key2   Val1  

需要输出我想要groupby输出,其中Val1列的值与python中键Key1和Key2上的groupby组合在一起

预期输出:df2[key1和key2]

Key1 Key2 Val1  Count Sum Q1  Q2  Q3

创建一个函数来计算Q1、Q2和Q3:25、50和75个百分位数,如下所示:

def percentile(n):
def percentile_(x):
return np.percentile(x, n)
percentile_.__name__ = 'percentile_%s' % n
return percentile_

现在,您可以使用下面提到的命名聚合来获得所需的count、sum和3个四分位数列。

df2 = (df.groupby(["Key1", "Key2"])
.agg(Count=(" Val1", 'count'),    
Sum=('Val1','sum'),        
Q1= (' Val1',percentile(25), #This is for first quartile
Q2= (' Val1',percentile(50), #2nd Quartile
Q3= (' Val1',percentile(75)) #This is for Quartile 3

随机,例如

df说是

Key1   Key2  Val1
a       a     1
a       a     2
a       a     3
a       a     4
b       b     5
b       b     6
b       b     7
b       b     8

df2将在键Key1和键2上按groupby的要求具有以下列。

Key1 Key2  Count  Sum   Q1  Q2  Q3
a    a     4     10    1   2.5 3
b    b     4     6.5   5   6.5 7
df2 = df.groupby(['Key1','Key2'])['Val1']
.agg([('Count','count'), 
('Sum','sum'), 
('Q1', lambda x: x.quantile(0.25)),
('Q2', lambda x: x.quantile(0.5)),
('Q3', lambda x: x.quantile(0.75))])

相关内容

  • 没有找到相关文章

最新更新