Supposons que j'ai une série de données que je veux agréger par CatAgrégation de données en Python en utilisant plus d'une mesure d'une formule
Cat Volume Result
A 45 4
A 57 3
B 56 3
C 45 1
C 55 2
Je voudrais agréger la variance, Asymétrie et Kurtosis du volume et maximum de Résultat par cat. Je sais comment le faire un par un en calculant la variance, et Kurtosis de dissymétrie volume, mais je voudrais d'une manière ordonnée avec quelque chose comme ça
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)
Mais cela ne fonctionne pas. Quelqu'un peut-il offrir des suggestions comment je peux corriger mon code? Merci
Merci. Je sais que cela fonctionnerait mais j'espérais utiliser cette fonction scipy.stats.moment (row ['Volume'], moment = [2,3,4])) afin que je puisse capturer tous les moments sans avoir à clé dans un par un comme je dois le faire pour beaucoup de variables – user44137
@ user44137 Bon, j'ai modifié le code pour regarder utiliser stats.moment. Vous étiez vraiment proche de votre code original. –
Merci, mais les données sont en forme longue quand je le veux en forme large. J'ai essayé ceci mais cela ne fonctionne pas def f (x): df = pd.DataFrame (np.transpose (scipy.stats.moment (x.Volume, moment = [2,3,4])), columns = ['var', 'skew', 'kurtosis']) #df ['Result'] = x.Result.max() return df – user44137