Метод sum
Метод sum применяется к объекту GroupBy,
полученному после группировки таблицы DataFrame
или серии Series. Он вычисляет сумму значений
в каждой группе для числовых столбцов. По умолчанию
метод суммирует все числовые столбцы. Дополнительные
параметры позволяют исключать пропущенные значения
и управлять типом возвращаемого объекта.
Синтаксис
groupby_obj.sum(numeric_only=True, min_count=0)
Параметры
-
numeric_only- логический параметр, указывающий, вычислять ли сумму только для числовых столбцов. По умолчанию равенTrue. -
min_count- целое число, минимальное количество непустых значений для вычисления суммы. Если значений меньше указанного числа, результатом будетNaN. По умолчанию равен0.
Пример
Создадим таблицу с данными о продажах в разных городах и вычислим общую сумму продаж в каждом городе:
import pandas as pd
df = pd.DataFrame({
'city': ['Москва', 'СПб', 'Москва', 'СПб', 'Казань'],
'sales': [100, 200, 150, 300, 250],
'profit': [10, 20, 15, 30, 25]
})
grouped = df.groupby('city')
res = grouped.sum()
print(res)
Результат выполнения кода:
sales profit
city
Казань 250 25
Москва 250 25
СПб 500 50
Пример
Теперь выполним группировку по нескольким столбцам и вычислим сумму для каждой группы:
import pandas as pd
df = pd.DataFrame({
'city': ['Москва', 'Москва', 'СПб', 'СПб', 'Казань'],
'product': ['A', 'B', 'A', 'B', 'A'],
'sales': [100, 150, 200, 300, 250],
'profit': [10, 15, 20, 30, 25]
})
grouped = df.groupby(['city', 'product'])
res = grouped.sum()
print(res)
Результат выполнения кода:
sales profit
city product
Казань A 250 25
Москва A 100 10
B 150 15
СПб A 200 20
B 300 30
Пример
Рассмотрим работу параметра min_count.
Установим минимальное количество значений
равным 2:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'city': ['Москва', 'СПб', 'Москва', 'СПб', 'Москва'],
'sales': [100, np.nan, 150, 300, 200]
})
grouped = df.groupby('city')
res = grouped.sum(min_count=2)
print(res)
Результат выполнения кода:
sales
city
Москва 450.0
СПб NaN
Пример
Применим метод sum к серии, сгруппировав
её по другому столбцу:
import pandas as pd
df = pd.DataFrame({
'city': ['Москва', 'СПб', 'Москва', 'СПб', 'Казань'],
'sales': [100, 200, 150, 300, 250]
})
grouped = df.groupby('city')['sales']
res = grouped.sum()
print(res)
Результат выполнения кода:
city
Казань 250
Москва 250
СПб 500
Name: sales, dtype: int64
Пример
Пример с использованием параметра numeric_only,
который позволяет включить в расчёт только числовые столбцы:
import pandas as pd
df = pd.DataFrame({
'city': ['Москва', 'СПб', 'Москва'],
'sales': [100, 200, 150],
'profit': [10, 20, 15],
'product': ['A', 'B', 'A']
})
grouped = df.groupby('city')
res = grouped.sum(numeric_only=True)
print(res)
Результат выполнения кода:
sales profit
city
Москва 250 25
СПб 200 20