728x90
[Pandas] Group by
Pandas 라이브러리를 사용해서 Dataframe에서 Group by를 통해 데이터를 집계하는 방법에 대해 알아보자
문법
기본 문법은 다음과 같다.
데이터프레임.groupby(그룹이되는 컬럼)[계산을 하고싶은 컬럼].집계함수()
사용 예제
먼저 랜덤 라이브러리를 사용해 샘플 데이터 프레임을 생성해준다.
import names
from random import *
age = [randint(16, 19) for i in range(0, 101)]
gender = [choice(["male", "female"]) for i in range(0, 101)]
name = [names.get_first_name(gender=g) for g in gender]
cl = [choice(['A','B','C','D']) for i in range(0, 101)]
math = [randint(50, 100) for i in range(0, 101)]
english = [randint(50, 100) for i in range(0, 101)]
dic = {"age":age, "gender":gender, "name":name, "class":cl, "math":math, "english":english}
df = pd.DataFrame(dic)
1. Groupby
집계함수 mean을 사용해서 반 별 평균 수학 점수를 구할 수 있다.
df.groupby("class")["math"].mean()
mean 뿐만 아니라 다른 집계함수들과도 사용이 가능하다. (sum, count, min, max, median, std, var, qiantile 등)
또한 describe를 사용해 전반적인 지표도 확인이 가능하다.
df.groupby("class")["math"].describe()
✔ 만약 Group by한 df를 새로운 데이터프레임으로 정의하고 싶을 땐, reset_index()를 사용해주면 된다.
df_mean = df.groupby("class")["math"].mean().reset_index()
2. Multiple Groupby
만약 그룹 조건을 여러개를 두고싶거나, 한번에 여러 컬럼을 다르게 연산하고 싶을 땐 아래와 같은 방식을 사용한다.
데이터프레임.groupby([컬럼1, 컬럼2]).agg({컬럼3:집계함수, 컬럼4:집계함수})
예를 들어, 반의 나이 별 수학 평균과 가장 높은 영어 점수를 구하라고 했을 때, 다음과 같이 조건을 줄 수 있다.
df.groupby(['class','age']).agg({"math":"mean","english":"max"})
만약 하나의 컬럼에 여러개의 집계함수를 사용하고 싶을 땐 다음과 같이 사용이 가능하다.
df.groupby(['class','age']).agg({"math":["max","min"],"english":["max", "min"]})
참고
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] 파이썬에서 다른 py 파일의 변수/함수 호출 (1) | 2023.11.22 |
---|---|
[Python] plotly 사용하기 (1) Line 그래프 (0) | 2023.11.17 |
[Pandas] 데이터 프레임 특정 조건에 맞는 값 추출 (1) | 2023.11.14 |
[Python] Plotly 설치 (0) | 2023.11.10 |
[Python] 클래스(class) (0) | 2023.11.02 |