Pandas 그룹 및 합계를 집계하는 방법

Asad Riaz 2023년1월30일
  1. groupby 와 누적 합계
  2. 멋진 테이블에서 데이터를 재정렬하기위한 pivot()
  3. Groupby Pandas에 ‘기능’적용
  4. agg()는 열의 총합을 구합니다
Pandas 그룹 및 합계를 집계하는 방법

우리는 Pandas groupbysum 의 집합을 얻는 것을 보여줄 것이다. 멋진 테이블에 데이터를 정렬하는 피벗 기능과 사용자 정의 함수를 정의하고이를 데이터 프레임에 적용하는 방법도 살펴 보겠습니다. 또한 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()메소드는 테이블의 row 및 column 속성을 설정할 수 있습니다. 위의 코드를 변경하고 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

Groupby Pandas에 ‘기능’적용

우리는 series 또는 1d array 에서 값의 개수를 얻는 간단한 방법을 만들고 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