Python: Pandas
Теория: Сводные таблицы
Во многих случаях аналитики должны предоставить агрегированные или сгруппированные данные. Эта информация помогает понять общие характеристики в определенных разрезах данных. Часто этого достаточно, чтобы достичь бизнес-цели или принимать решения.
В этом уроке мы продемонстрируем методы работы с инструментами библиотеки Pandas, чтобы делать такие операции.
Агрегация данных с использованием метода agg()
Функции агрегирования вычисляют интегральные параметры наборов данных. Обычно возвращаемые значения — это несколько чисел. Чаще всего это одно значение для одного столбца данных.
Подгрузим данные:
В датасете столбец Advertising со значениями 'small', 'medium', 'large'. Они указывают на объем рекламы в этот день по магазинам, например, 'small' — были низкие объемы рекламы. А также столбец Size со значениями 'small' и 'big', которые указывают на величину магазина.
Примеры агрегаций
С помощью метода agg() и встроенных функций можно вычислять агрегированные значения. Например, вычислим среднее число кликов каждого магазина:
Мы исключили столбцы 'Advertising', 'Size' в примере выше. Это категории, а не численные показатели. Вычисление функции mean() вызвало бы ошибку на категориальных столбцах.
Посчитаем несколько агрегаций одновременно для одного столбца. Для этого в аргументы метода agg() подадим список с перечислением функций:
Продвинутые примеры агрегаций
С помощью метода agg() можно строить и более сложные примеры. Применим к столбцами различные агрегирующие функции:
Соответствующие функции применились к указанным столбцам. Для этого использовали словари для определения множества функций, при этом допустимо использование кортежей:
Подход со словарями более популярен, так как в подходе с кортежами есть ограничения по применению только одного агрегирования за раз к определенному столбцу.
Агрегация данных с использованием метода groupby()
Рассмотрим агрегацию данных через следующие функции:
- Числовые агрегирующие функции
- Функции подсчета
- Функции порядка
Числовые агрегирующие функции
С помощью метода groupby() можно находить значения агрегированных данных по определенным категориям. Вычислим агрегированные значения для дней, когда значение столбца Advertising было 'small', 'medium' и 'large':
Значение агрегирующих функций вычислились для каждого столбца, причем для всех категорий из столбца 'Advertising'.
Можно для каждого столбца находить свои агрегации:
Метод round() округляет дробную часть до двух знаков после запятой. Форматирование упрощает чтение данных.
Функции подсчета
В предыдущем разделе приведены примеры агрегаций для числовых столбцов. В этом разделе покажем примеры агрегаций на категориальных столбцах:
Функция count подсчитывает количество значений соответствующей категории, функция nunique находит количество уникальных значений в категории. Функция nunique не учитывает пропуски при подсчете.
Функции порядка
В этом разделе покажем, как получать максимальное и минимальное количество кликов магазина по категориям рекламы. Будем использовать функции first() и last():
Чтобы использовать функции порядка датасет, их нужно предварительно упорядочить. Для этого можно использовать метод sort_values().
Выводы
В этом уроке мы познакомились с возможностями библиотеки Pandas по агрегации данных. Разобрали примеры агрегации с помощью метода agg(), а также более сложные примеры с использованием метода groupby(). На практике данные методы применяются довольно часто в силу того, что агрегация данных позволяет выявлять закономерности, тренды и другие информативные показатели.

