Pandas Groupот Совокупный

Pandas Groupot Sovokupnyj



Техника groupby важна из-за того, насколько хорошо она агрегирует данные с точки зрения как производительности, так и размера кода. Термин «groupby» обычно описывает процедуру, включающую следующие этапы:

  • Разделение : применяя определенные условия к наборам данных, мы можем разделить данные на группы.
  • Применение : процесс, в котором мы индивидуально применяем метод к каждой группе.
  • Объединение : процедура объединения различных наборов данных для формирования структуры данных после использования метода groupby().

В процессе агрегирования вычисляется сводная статистика по каждой группе. Для каждой группы агрегатный метод возвращает агрегированное значение (одиночное значение). Мы можем выполнить несколько операций агрегирования над сгруппированными данными после разделения данных на группы с помощью функции groupby.







Почему Pandas предоставляют различные методы агрегации данных?

Панды предлагают широкий спектр возможностей и функций, помогающих в анализе и агрегировании данных. Использование методов pivot(), groupby() и pivot_table(), например, предлагает разные взгляды на то, как будут агрегироваться данные. Они обеспечивают практические подходы к выполнению различных задач, а не просто переупаковывают.



Как использовать функцию .agg() в Pandas

Простое среднее или сумма значений — это функция агрегирования, которая используется наиболее часто. Вы можете использовать столбец фрейма данных или несколько столбцов для вызова агрегатной функции. Вы увидите множество способов агрегирования данных с помощью метода groupby Pandas. Чтобы продемонстрировать, насколько проще процедура, давайте рассмотрим несколько примеров, приведенных ниже. Основные математические операции, такие как сумма, минимум, максимум, среднее абсолютное отклонение, стандартное отклонение, среднее значение, медиана, дисперсия и произведение, входят в число наиболее часто используемых встроенных функций агрегирования. Чтобы обобщить данные, мы можем объединить groupby и функцию agg().



Пример # 01: Определение суммы столбцов путем группировки данных с помощью функции groupby.agg()

Сначала мы создадим фрейм данных с помощью функции pd.DataFrame(), чтобы мы могли сгруппировать данные из столбца или столбцов фрейма данных, а затем определить их среднее значение. Мы должны импортировать модули pandas и библиотеку numpy, прежде чем создавать фрейм данных.





Как видите, мы использовали словарь pandas для создания нашего фрейма данных. Наш фрейм данных df имеет четыре столбца: «пациент», «группа», «возраст» и «бутылки с кровью». Значения данных («Али», «Джон», «Майк», «Майк», «Джон», «Али», «Али», «Майк») содержатся в столбце «пациент», тогда как значения данных («А ', 'А', 'В', 'С', 'А', 'С', 'С', 'В'), (21, 22, 24, 21, 20, 24, 22, 22) и ( 2, 3, 1, 1, 2, 3, 2, 1) содержатся в столбцах «группа», «возраст» и «blood_bottles» соответственно. Предположим, нам нужно определить сумму значений в столбце «blood_bottles», сгруппировав значения в столбце «группа».



Для групповых данных «A» сумма значений «blood_bottles» равна 7. Для групповых значений «B» и «C» сумма значений «blood_bottles» равна 2 и 6 соответственно. Мы также можем сгруппировать несколько столбцов, чтобы определить сумму для каждой группы.

Как можно заметить, мы передали список меток столбцов, то есть [‘пациент’, ‘группа’] внутри функции groupby() для создания групп категорий в каждом указанном столбце. Для каждой группы указанных столбцов мы определили сумму значений в «blood_bottles». Например, «Али» находится в столбце «группа» значений A и C. В группе A сумма значений «blood_bottles» для Али равна 2, а в группе «C» — 5.

Пример # 02: Применение нескольких функций к одному столбцу фрейма данных с использованием функции groupby.agg()

Несколько агрегаций можно применить с помощью метода «groupby()» с помощью функции pandas agg(). В метод можно передать вызываемый список. Давайте посмотрим, как мы можем агрегировать наши данные, используя встроенные методы библиотеки numpy. В отличие от предыдущего примера, мы будем применять несколько функций к одному столбцу фрейма данных. Функция pd.DataFrame() будет использоваться для создания фрейма данных для этого, по крайней мере, с одним столбцом, содержащим числовые значения.


Требуемый фрейм данных был создан с одним числовым столбцом, то есть «оценками» со значениями 41, 40, 35, 39, 49, 31, 34 и 42. Есть еще 3 столбца «студент», «предметы» и «степень». в нашем фрейме данных, который можно разделить на группы с помощью функции groupby(). Значения в столбцах «студенты» и «предметы»: («Гарри», «Рон», «Гарри», «Лана», «Сэм», «Рон», «Лана», «Макс») и ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Принимая во внимание, что степень столбца содержит значения данных в виде строк, т. е. («Ms», «Bs», «Bs», «Ms», «Ms», «Ms», «Bs», «Bs»). Предположим, нам нужно сгруппировать данные столбца «субъекты» и определить как среднее значение, так и сумму «оценок» столбца для каждого сгруппированного данных.

Мы указали имя столбца «subjects» в виде строки внутри функции groupby() для преобразования данных в группы категорий. Для столбца оценок мы использовали метод agg(), а внутри функции agg() мы указали функции numpy np.sum и np.mean для нахождения суммы и среднего значения оценок каждой группы данных в темах столбца. Сумма и среднее значение группового значения «AI» составляют 91 и 45,5 соответственно. Сумма баллов за значение «С++» составляет 75, а среднее значение — 37,5. Для группы JAVA сумма баллов составляет 71, а среднее значение — 35,5, тогда как сумма и среднее значение для Python составляют 74 и 37 соответственно.

Пример # 03: Применение нескольких функций к нескольким столбцам фрейма данных с использованием функции groupby.agg()

Вместо того, чтобы применять разные функции к одному столбцу фрейма данных, мы можем применить несколько функций к разным числовым столбцам. Мы можем использовать словарь в функции agg() в качестве входных данных для применения определенного метода агрегирования к различным столбцам фрейма данных. Давайте импортируем библиотеки pandas и numpy перед созданием фрейма данных с несколькими числовыми столбцами.

Во вновь созданном фрейме данных есть четыре столбца с именами «игрок», «наименьший_счет», «самый высокий_счет» и «местоположение». В столбце «игрок» мы сохранили имена нескольких игроков в виде строковых значений данных («Лео», «Алекс», «Лео», «Фин», «Лео», «Алекс», «Фин», « Fin'), в столбце 'least_score' указаны самые низкие баллы игроков за некоторые матчи (12, 34, 2, 21, 9, 1, 0, 34), а в столбце 'highest_score' самые высокие баллы игроков (12, 34, 2, 21, 9, 1, 0, 34), а в столбце «Местоположение» указаны названия мест, где игроки проводили свои матчи («Франция», «Англия», «Дубай», « Дубай», «Англия», «Франция», «Дубай», «Франция»).

Предположим, после группировки данных в столбце «игроков» нам нужно найти среднее значение для значений столбца «наименьший_счет» и сумму значений данных «высокий_счет» для каждой группы.

Внутри функции agg() мы передали словарь Python {‘highest_score’: ‘sum’, ‘least_score’: ‘mean’}, чтобы найти сумму и среднее значение для указанного столбца по каждой группе. Можно видеть, что сгруппированное значение Alex имеет сумму значения «highest_score» 132 и среднего значения «least_score» 17,5. Для «Fin» сумма значений составляет 199, а среднее значение составляет 18,3333333 в столбцах «highest_score» и «least_score» соответственно. Групповое значение Leo имеет суммарное значение 180 в параметре «highest_score» и среднее значение 7,666667 в параметре «least_score».

Вывод

В этом уроке мы обсудили функции groupby() и агрегации в pandas. Мы также обсудили, как использовать функцию groupby.agg(). В этой статье мы реализовали три примера, чтобы научить вас, как использовать одну функцию агрегирования в столбце фрейма данных, группируя данные из одного и нескольких столбцов, как применять несколько функций агрегирования в одном столбце фрейма данных и как применять несколько функции агрегации для нескольких столбцов фрейма данных с использованием функции groupby.agg().