pandas panda pivot_表百分位数/分位数

zsbz8rwp  于 2022-12-25  发布在  其他
关注(0)|答案(2)|浏览(167)

在pandas数据透视表中,是否可以使用percentage或quantile作为aggfunc?我已经尝试了numpy. percentage和pandas quantile,但都没有成功。

uqxowvwt

uqxowvwt1#

虚拟数据:

In [135]: df = pd.DataFrame([['a',2,3],
                             ['a',5,6],
                             ['a',7,8], 
                             ['b',9,10], 
                             ['b',11,12], 
                             ['b',13,14]], columns=list('abc'))

np.percentile似乎工作得刚刚好?

In [140]: df.pivot_table(columns='a', aggfunc=lambda x: np.percentile(x, 50))
Out[140]: 
a  a   b
b  5  11
c  6  12
w8f9ii69

w8f9ii692#

The lambda function solutions works, but produces column names of "<lambda_0>" , etc. which need to be renamed later.
除了使用lambda(即未命名函数),我们还可以定义自己的函数,它们应该对一系列值进行操作。

df = pd.DataFrame([['a',2,3],
                   ['a',5,6],
                   ['a',7,8], 
                   ['b',9,10], 
                   ['b',11,12], 
                   ['b',13,14]], columns=list('abc'))
def quantile_25(growth_vals:pd.Series):
    return growth_vals.quantile(.25)

def quantile_75(growth_vals:pd.Series):
    return growth_vals.quantile(.75)

df.pivot_table(columns='a', aggfunc=[quantile_25, np.median, quantile_75])

生成的列名将与函数名相对应。

相关问题