Pandas 그룹 및 합계를 집계하는 방법
Asad Riaz
2023년1월30일
우리는 Pandas groupby
와 sum
의 집합을 얻는 것을 보여줄 것이다. 멋진 테이블에 데이터를 정렬하는 피벗 기능과 사용자 정의 함수를 정의하고이를 데이터 프레임에 적용하는 방법도 살펴 보겠습니다. 또한 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