pandas python 中多个键的 groupby 中的四分位数和其他参数
Quartiles and other parameters in groupby on multiple keys in pandas python
df列如下:
Key1 Key2 Val1
需要输出
我想要 groupby 输出,其中 Val1 列的值与键 Key1 和 Key2.
上的 python 中的 groupby 组合在一起
预期输出:df2 [groupby on key1 and 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_
现在您可以使用下面提到的命名聚合来根据需要获取计数、总和和 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 和 Key2 的分组要求包含以下列。
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))])
df列如下:
Key1 Key2 Val1
需要输出 我想要 groupby 输出,其中 Val1 列的值与键 Key1 和 Key2.
上的 python 中的 groupby 组合在一起预期输出:df2 [groupby on key1 and 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_
现在您可以使用下面提到的命名聚合来根据需要获取计数、总和和 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 和 Key2 的分组要求包含以下列。
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))])