Normalize DataFrame by group
Nehmen wir an, ich habe einige Daten wie folgt generiert:
N = 20
m = 3
data = np.random.normal(size=(N,m)) + np.random.normal(size=(N,m))**3
und dann erstelle ich eine Kategorisierungsvariable:
indx = np.random.randint(0,3,size=N).astype(np.int32)
und generiere einen DataFrame:
import pandas as pd
df = pd.DataFrame(np.hstack((data, indx[:,None])),
columns=['a%s' % k for k in range(m)] + [ 'indx'])
Ich kann den Mittelwert pro Gruppe erhalten als:
df.groubpy('indx').mean()
Ich bin mir nicht sicher, wie ich vorgehen soll, indem ich dann den Mittelwert jeder Gruppe pro Spalte in den ursprünglichen Daten subtrahiere, sodass die Daten in jeder Spalte durch den Mittelwert innerhalb der Gruppe normalisiert werden. Anregungen wäre dankbar.