안녕하세요! 오늘은 Pandas를 사용해 DataFrame의 특정 열 값(카테고리)을 기준으로 상위 30% 데이터를 추출하는 방법을 소개하려고 합니다. 데이터 분석 작업에서 그룹화된 데이터를 처리하거나 중요한 데이터를 선별하는 경우, 이 방법을 활용하면 유용합니다. 이번 포스팅에서는 groupby()와 nlargest()를 조합하여 각 카테고리에서 상위 30% 데이터를 효율적으로 추출하는 방법을 살펴보겠습니다.
데이터 샘플 준비
import pandas as pd
# 예시 데이터 (여기서는 score_1과 category가 이미 있는 DataFrame을 가정)
data = {
'score_1': [1.3, 22.2, 3.2, 43.4, 2.7, 35.5, 4.1, 2.3, 11.8, 3.7, 10.3, 21.2, 3.2, 43.4, 26.7, 36.5, 4.1, 2.3, 71.8, 3.7],
'category': ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b','a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b']
}
df = pd.DataFrame(data)
display(df)
각 카테고리별 상위 30% 데이터 추출
주요 사용 메서드:
- groupby('category'): 데이터를 카테고리(category) 값에 따라 그룹화합니다.
- apply(): 그룹별로 특정 함수를 적용하여 원하는 데이터를 추출합니다.
- nlargest(): 각 그룹에서 상위 N개의 항목을 반환합니다.
코드 예제
# 각 카테고리별 상위 30% 점수 선택
def top_30_percent(df):
return df.nlargest(int(len(df) * 0.3), 'score_1')
top_scores_by_category = df.groupby('category').apply(top_30_percent)
display(top_scores_by_category)
이번 포스팅에서는 Pandas의 groupby()와 nlargest() 메서드를 활용해 DataFrame의 카테고리별 상위 30% 데이터를 추출하는 방법을 알아보았습니다. 이 방법은 대규모 데이터 분석이나 그룹별 중요한 데이터를 선별하는 데 매우 유용합니다. 데이터를 효율적으로 처리해야 할 때 꼭 활용해 보세요! 오늘도 읽어주셔서 감사합니다!