Рассмотрим основных агрегирующие функции в Pandas. В качестве демонстрационного датафрейма используем следующий:
Сходство некоторых функций порождает непонимание и неверное их использование, например, часто для подсчета доли пустых
ячеек используется такая форма - df['revenue'].isna().sum()/df['revenue'].count(). Однако это является неправильным, так как count подсчитывает количество ненулевых значений, а не их общее число. В то же время долю можно получить функцией mean:
Вот список самых распространенных функций:
count - количество заполненных значений
len - общее количество значений (включая пустые)
size - общее количество значений (применяется странно)
nunique - количество уникальных значений
min - минимум
max - максимум
std - стандартное отклонение
sum - сумма
mean - среднее
median - медиана
var - дисперсия
quantile - квантиль
О том, как использовать собственные функции, писал ранее.
Применение той или иной функции зависит от типа столбца, так как среднее между строками не понятно как считать, а количество уникальных значений - без проблем.
Распространенным "костылем" является попытка подсчитать количество значений в группе по некому дополнительному столбцу с помощью count, хотя это приведет к неправильному результату, если в нем есть пропуски. Правильным решением является группировка и вывод метода size без использования лишних столбцов, сравните:
Остановимся на особенностях size. В методе groupby size и len (обратите внимание, что len вызываем по ссылке) выводят одинаковый результат для выделенного или нескольких столбцов:
В методе pivot_table, чтобы size заработала, надо в values передавать список:
Эта особенность проявляется и в форме мультииндекса по столбцам, когда мы в aggfunc передаем еще несколько агрегирующих функций: