Как получить совокупность Pandas по группам и Сумма
-
Совокупная сумма с помощью
groupby
-
pivot()
для перестановки данных в красивую таблицу -
Применим
function
к Pandas Groupby -
agg()
для получения суммарной суммы столбца

Мы покажем, как получить совокупность Панд groupby
и sum
. Мы также рассмотрим функциональность pivot
, чтобы расположить данные в красивой таблице, а также то, как мы можем определить нашу пользовательскую функцию и запустить ее применение на DataFrame
. Мы также получим суммарную сумму, используя agg()
.
Совокупная сумма с помощью groupby
Мы можем получить кумулятивную сумму, используя метод groupby
. Рассмотрим следующую Датафрейм с датой, названием фрукта и продажей на эту дату:
import pandas as pd
df = pd.DataFrame({'Date': ['08/09/2018', '10/09/2018', '08/09/2018', '10/09/2018'],
'Fruit': ['Apple', 'Apple', 'Banana', 'Banana',],
'Sale': [34, 12, 22, 27]})
Если мы хотим вычислить кумулятивную сумму Продажи по каждому фрукту и для каждой даты мы можем это сделать:
import pandas as pd
df = pd.DataFrame({'Date': ['08/09/2018', '10/09/2018', '08/09/2018', '10/09/2018'],
'Fruit': ['Apple', 'Apple', 'Banana', 'Banana',],
'Sale': [34, 12, 22, 27]})
print (df.groupby(by=['Fruit','Date']).sum().groupby(level=[0]).cumsum())
Выход:
Fruit Date Sale
Apple 08/09/2018 34
10/09/2018 46
Banana 08/09/2018 22
10/09/2018 49
pivot()
для перестановки данных в красивую таблицу
Метод pivot()
может устанавливать атрибут таблицы в виде строки и столбца. Давайте изменим приведенный выше код и применим метод pivot()
для перестановки данных в красивой таблице:
import pandas as pd
df = pd.DataFrame({'Date': ['08/09/2018', '10/09/2018', '08/09/2018', '10/09/2018'],
'Fruit': ['Apple', 'Apple', 'Banana', 'Banana',],
'Sale': [34, 12, 22, 27]})
print (df.groupby(['Fruit','Date'],as_index = False).sum().pivot('Fruit','Date').fillna(0))
Вывод:
Sale
Date 08/09/2018 10/09/2018
Fruit
Apple 34 12
Banana 22 27
Применим function
к Pandas Groupby
Мы создадим простой метод для получения количества значений в series
или 1d массиве
и используем groupby
для получения суммарного количества каждого значения:
from pandas import *
d = {"series": Series(['1','2','1','1','4','4','5'])}
df = DataFrame(d)
def get_count(values):
return len(values)
grouped_count = df.groupby("series").series.agg(get_count)
print(grouped_count)
После выполнения кода мы получим следующий вывод, который обеспечит появление каждого значения в серии.
Вывод:
series
1 3
2 1
4 2
5 1
Name: series, dtype: int64
agg()
для получения суммарной суммы столбца
Мы можем использовать agg()
для применения операции с суммой по столбцу. Рассмотрим следующий код:
import pandas as pd
df = pd.DataFrame({'Date': ['08/09/2018', '10/09/2018', '08/09/2018', '10/09/2018'],
'Fruit': ['Apple', 'Apple', 'Banana', 'Banana',],
'Sale': [34, 12, 22, 27]})
print(df.groupby(['Fruit'])['Sale'].agg('sum'))
Вывод:
Fruit
Apple 46
Banana 49
Name: Sale, dtype: int64
Сопутствующая статья - Pandas DataFrame
- Как получить заголовки столбцов Pandas DataFrame в виде списка
- Как удалить колонку Pandas DataFrame
- Как преобразовать столбец DataFrame в дату в Pandas
- Как преобразовать плавающий диск в целое число в Pandas DataFrame
- Как сортировать панды DataFrame по значениям одной колонки