Как получить совокупность Pandas по группам и Сумма

Asad Riaz 30 Январь 2023 18 Апрель 2020
  1. Совокупная сумма с помощью groupby
  2. pivot() для перестановки данных в красивую таблицу
  3. Применим function к Pandas Groupby
  4. agg() для получения суммарной суммы столбца
Как получить совокупность Pandas по группам и Сумма

Мы покажем, как получить совокупность Панд 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