반응형
groupby
는 Pandas 라이브러리에서 제공하는 강력한 함수로, 데이터를 특정 기준에 따라 그룹으로 나누고 그룹별로 연산을 수행할 수 있게 해줍니다. 다음은 groupby
함수의 기본적인 사용법과 예제입니다.
기본 사용법
groupby
를 사용하려면 Pandas 데이터프레임을 특정 열을 기준으로 그룹화하고, 그룹화된 각 그룹에 대해 연산을 수행할 수 있습니다.
import pandas as pd
# 예제 데이터프레임 생성
data = {
'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
'Value': [10, 20, 30, 40, 50, 60]
}
df = pd.DataFrame(data)
# 'Category' 열을 기준으로 그룹화
grouped = df.groupby('Category')
# 그룹별 합계 계산
sum_df = grouped.sum()
print(sum_df)
위의 코드에서는 'Category' 열을 기준으로 데이터프레임을 그룹화한 뒤, 각 그룹의 'Value' 열 값의 합계를 계산합니다.
주요 기능
- 그룹별 집계 (Aggregation)
mean_df = grouped.mean() # 그룹별 평균 계산
- 그룹별로 다양한 집계 함수(
sum
,mean
,max
,min
등)를 적용할 수 있습니다. - 그룹별 변환 (Transformation)
def custom_transform(x): return x * 2 transformed_df = grouped.transform(custom_transform)
- 그룹별로 데이터를 변환할 수 있습니다.
- 그룹별 필터링 (Filtering)
filtered_df = grouped.filter(lambda x: x['Value'].mean() > 30)
- 특정 조건을 만족하는 그룹만 선택할 수 있습니다.
- 그룹별 적용 (Apply)
def custom_apply(x): return x['Value'].sum() applied_df = grouped.apply(custom_apply)
- 그룹별로 임의의 함수를 적용할 수 있습니다.
예제
다양한 예제를 통해 groupby
의 사용법을 살펴보겠습니다.
# 예제 데이터프레임
data = {
'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
'Value': [10, 20, 30, 40, 50, 60],
'Score': [100, 200, 150, 300, 250, 400]
}
df = pd.DataFrame(data)
# 그룹화
grouped = df.groupby('Category')
# 1. 그룹별 합계 계산
sum_df = grouped.sum()
print("그룹별 합계:\n", sum_df)
# 2. 그룹별 평균 계산
mean_df = grouped.mean()
print("그룹별 평균:\n", mean_df)
# 3. 그룹별 사용자 정의 함수 적용 (변환)
def scale(x):
return x / x.max()
scaled_df = grouped.transform(scale)
print("그룹별 변환 (스케일링):\n", scaled_df)
# 4. 그룹별 필터링 (평균 값이 35보다 큰 그룹 선택)
filtered_df = grouped.filter(lambda x: x['Value'].mean() > 35)
print("그룹별 필터링 (평균 값 > 35):\n", filtered_df)
# 5. 그룹별 사용자 정의 함수 적용 (적용)
def custom_apply(x):
x['Value'] = x['Value'] * 2
return x
applied_df = grouped.apply(custom_apply)
print("그룹별 사용자 정의 함수 적용:\n", applied_df)
이 예제에서는 다양한 groupby
연산을 통해 데이터를 그룹화하고, 그룹별로 다양한 연산을 수행하는 방법을 보여줍니다. 각 연산의 결과를 출력하여 groupby
의 사용법을 쉽게 이해할 수 있습니다.
반응형
'🖥️ IT, 컴퓨터 > 🐍 Python' 카테고리의 다른 글
[Python] 판다스의 unstack() 메소드란? :: 멀티 인덱스에서 하나를 열로 만들어줌 (0) | 2024.06.11 |
---|---|
[Python] 판다스 groupby에 쓰이는 집계함수 모음 (sum, mean, min, max / agg...) (0) | 2024.06.11 |
[Python] Pandas DataFrame 열에 접근하는 두 가지 방법: 속성 접근과 딕셔너리 접근 (0) | 2024.06.11 |
[Python] 파이썬 loc, iloc 차이 (0) | 2024.06.11 |
[Python] 브이월드 API 이용해 지오코딩하기 ★★★★ (0) | 2024.05.26 |
댓글