Я хочу знать, как методы фильтрации, агрегирования и преобразования групповых объектов в пандах перебираются по фрейму данных
С этой целью я попробовал этот набор данных:
df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv")
И теперь я попыталсянапечатайте форму каждого объекта, который повторяют эти три метода.
для фильтра:
df.groupby('day').filter(lambda x: print(x.shape))
out: (19, 7)
(87, 7)
(76, 7)
(62, 7)
Таким образом, x представляет собой фрейм данных для каждой группы.Достаточно справедливо
Для агрегата:
df.groupby('day').agg(lambda x: print(x.shape))
out: (19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
(19,)
(87,)
(76,)
(62,)
Итак, aggreagate выполняет итерации по группам каждого столбца и столбца за столбцом.Я понимаю, что
Я не могу понять функционирование метода преобразования.Напечатав тип аналогично, я получаю это
df.groupby('day').transform(lambda x: print(x.shape))
out:(19,)
(19,)
(19,)
(19,)
(19,)
(19,)
(19, 6)
(87,)
(87,)
(87,)
(87,)
(87,)
(87,)
(76,)
(76,)
(76,)
(76,)
(76,)
(76,)
(62,)
(62,)
(62,)
(62,)
(62,)
(62,)
Как вы можете видеть, он проходит через первую группу для всех столбцов, а затем каким-то образом там появляется фрейм данных (19,6), а затем он больше не появляетсяи итерации, как правило, над группами.Пожалуйста, помогите мне понять, как метод transform делает то, что делает