Эффективные методы суммирования нескольких столбцов с использованием Pandas GroupBy

В задачах анализа и манипулирования данными обычно требуется вычислить сумму нескольких столбцов на основе определенных групп. Pandas, популярная библиотека манипулирования данными на Python, предоставляет несколько эффективных методов достижения этой цели с помощью функциональности groupby. В этой статье мы рассмотрим различные подходы, а также примеры кода для суммирования нескольких столбцов с помощью Pandas GroupBy.

Метод 1: использование функции agg()

import pandas as pd
# Create a DataFrame
data = {'Group': ['A', 'A', 'B', 'B'],
        'Column1': [1, 2, 3, 4],
        'Column2': [5, 6, 7, 8]}
df = pd.DataFrame(data)
# Sum multiple columns using groupby and agg
sum_df = df.groupby('Group').agg({'Column1': 'sum', 'Column2': 'sum'})

Метод 2: использование функции sum()

# Sum multiple columns using groupby and sum
sum_df = df.groupby('Group')['Column1', 'Column2'].sum()

Метод 3: использование функции apply()

# Define a custom function to sum multiple columns
def sum_columns(group):
    return group[['Column1', 'Column2']].sum()
# Apply the custom function using groupby
sum_df = df.groupby('Group').apply(sum_columns)

Метод 4. Использование лямбда-функции

# Sum multiple columns using a lambda function
sum_df = df.groupby('Group').apply(lambda x: x[['Column1', 'Column2']].sum())

Метод 5: использование pivot_table()

# Create a pivot table to sum multiple columns
sum_df = pd.pivot_table(df, index='Group', values=['Column1', 'Column2'], aggfunc='sum')

В этой статье мы рассмотрели несколько методов эффективного суммирования нескольких столбцов с помощью Pandas GroupBy. Функция agg(), функция sum(), функция apply(), лямбда-функции и pivot_table()— это мощные инструменты, которые позволяют нам для выполнения этой задачи. В зависимости от конкретных требований вашего анализа вы можете выбрать наиболее подходящий метод. Используя эти методы, вы можете легко выполнять сложные вычисления с сгруппированными данными с помощью Pandas.