Что выведет код Middle groupby и агрегаты обновлено
transform и NaN в ключе
Вопрос
Что выведет код? По строке на каждый print.
import pandas as pd
df = pd.DataFrame({
'k': ['x', 'y', None, 'x'],
'v': [1, 2, 3, 4],
})
print(df.groupby('k')['v'].sum().to_dict())
print(df.groupby('k')['v'].transform('sum').tolist())
print(df.groupby('k', dropna=False)['v'].sum().tolist())
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: {'x': 5, 'y': 2}, [5.0, 2.0, nan, 5.0], [5, 2, 3]. Строка с ключом None выпадает из групп.
Что выведет
{'x': 5, 'y': 2}
[5.0, 2.0, nan, 5.0]
[5, 2, 3]
Разбор
Строка с ключом None выпадает из групп. В sum её нет. В transform результат выровнен по исходным строкам, и для выпавшей строки получается NaN, из-за этого колонка становится float. С dropna=False появляется группа NaN, она идёт последней.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «groupby и агрегаты»
- groupby: agg или transform
- Почему groupby.apply медленный
- as_index=False в groupby
- Отбор клиентов по условиям на группу
- Выручка и число клиентов по городам на pandas
- Доля заказа в выручке города: transform
- Топ-N заказов в каждом городе на pandas
- dropna=False в groupby