在Python中使用公式中的多个度量值聚合数据
假设我有一系列的数据,我想通过Cat聚合在Python中使用公式中的多个度量值聚合数据,python,aggregation,Python,Aggregation,假设我有一系列的数据,我想通过Cat聚合 Cat Volume Result A 45 4 A 57 3 B 56 3 C 45 1 C 55 2 我想通过cat聚合体积的方差、偏度和峰度以及结果的最大值。我知道如何通过计算体积的方差、偏度和峰度来一个接一个地计算,但我想用这样的方法来巧妙地计算 def f(row): row['ResultM']=row['Result'].
Cat Volume Result
A 45 4
A 57 3
B 56 3
C 45 1
C 55 2
我想通过cat聚合体积的方差、偏度和峰度以及结果的最大值。我知道如何通过计算体积的方差、偏度和峰度来一个接一个地计算,但我想用这样的方法来巧妙地计算
def f(row):
row['ResultM']=row['Result'].max()
row['Variance'] = pd.DataFrame(scipy.stats.moment(row['Volume'], moment=[2,3,4]))
return
TestData=OrgData.groupby('Id').apply(f)
但它不起作用。有人能为我提供如何更正代码的建议吗?谢谢编辑
让我们试试这个:
from scipy import stats
OrgData.groupby('Cat').agg({'Result':'max','Volume':[stats.skew,np.var,stats.kurtosis]})
输出:
Result Volume
max skew var kurtosis
Cat
A 4 0 72.0 -2
B 3 0 NaN -3
C 2 0 50.0 -2
编辑
让我们试试这个:
from scipy import stats
OrgData.groupby('Cat').agg({'Result':'max','Volume':[stats.skew,np.var,stats.kurtosis]})
输出:
Result Volume
max skew var kurtosis
Cat
A 4 0 72.0 -2
B 3 0 NaN -3
C 2 0 50.0 -2
谢谢我知道这会起作用,但我希望使用这个函数scipy.stats.moment(row['Volume',moment=[2,3,4]),这样我就可以捕捉到所有的瞬间,而不必一个接一个地输入,因为我需要花费很多时间variables@user44137好的,我修改了代码,看起来像是使用stats.moment。您对原始代码的理解非常接近。谢谢,但是当我需要宽幅格式的数据时,它是长格式的。我尝试过这个方法,但它不起作用def(x):df=pd.DataFrame(np.transpose(scipy.stats.moment(x.Volume,moment=[2,3,4])),columns=['var','skew','kurtosis'])df['Result']=x.Result.max()返回df您能在问题中粘贴一份预期输出吗?谢谢。我知道这会起作用,但我希望使用这个函数scipy.stats.moment(row['Volume',moment=[2,3,4]),这样我就可以捕捉到所有的瞬间,而不必一个接一个地输入,因为我需要花费很多时间variables@user44137好的,我修改了代码,看起来像是使用stats.moment。您对原始代码的理解非常接近。谢谢,但是当我需要宽幅格式的数据时,它是长格式的。我尝试过这个方法,但它不起作用def(x):df=pd.DataFrame(np.transpose(scipy.stats.moment(x.Volume,moment=[2,3,4])),columns=['var','skew','kurtosis'])#df['Result']=x.Result.max()返回df您能在问题中粘贴预期输出的副本吗?