Я успешно использую функцию groupby () для вычисления статистики по сгруппированным данным, однако теперь я хотел бы сделать то же самое для подмножеств каждой группы.
Я не могу понять, как создать подмножество для каждой группы (как объект groupby), которое затем можно применить к функции groupby, такой как mean (). Следующая строка работает по назначению:
d.groupby(['X','Y'])['Value'].mean()
Как я могу подгруппировать значения отдельных групп, чтобы затем передать их функции среднего? Я подозреваю, что transform () или filter () могут быть полезны, хотя я не могу понять, как это сделать.
ИЗМЕНИТЬ, чтобы добавить воспроизводимый пример:
random.seed(881)
value = np.random.randn(15)
letter = np.random.choice(['a','b','c'],15)
date = np.repeat(pd.date_range(start = '1/1/2001', periods=3), 5)
data = {'date':date,'letter':letter,'value':value}
df = pd.DataFrame(data)
df.groupby(['date','letter'])['value'].mean()
date letter
2001-01-01 a -0.039407
b -0.350787
c 1.221200
2001-01-02 a -0.688744
b 0.346961
c -0.702222
2001-01-03 a 1.320947
b -0.915636
c -0.419655
Name: value, dtype: float64
Вот пример расчета среднего для многоуровневой группы. Теперь я хотел бы найти среднее значение подмножество каждой группы. Например, среднее значение данных каждой группы меньше 10-го процентиля группы. Ключевым выводом является то, что подмножества должны выполняться сначала для групп, а не для всего df.
Итак, для каждой записи X и каждой Y у вас есть список / массив, среднее значение которого вы хотите получить?