안녕하세요! 오늘은 Pandas를 사용하여 DataFrame의 숫자 데이터를 구간별로 나누고 카테고리화하는 방법을 소개하려고 합니다. 데이터 분석에서 숫자 데이터를 특정 구간별로 나누어 의미를 부여하거나 범주형 데이터로 변환하는 경우가 많습니다. 이번 글에서는 0.5 단위 구간을 설정하고, 각 숫자를 해당 구간에 맞게 분류하는 방법을 알아보겠습니다.
숫자 구간 카테고리화 방법
- 최소값과 최대값 구하기: 데이터를 분석하기 위해 숫자 데이터의 범위를 확인합니다.
- 구간 설정: np.arange를 사용하여 원하는 간격(예: 0.5)으로 구간을 만듭니다.
- 카테고리화: pd.cut 함수를 활용해 숫자를 각 구간에 맞게 분류하고, 레이블을 추가합니다.
예제 코드
import pandas as pd
import numpy as np
# 데이터 생성
data = {'score_1': [1.3, 2.2, 3.2, 4.4, 2.7]}
df = pd.DataFrame(data)
# 구간 설정
min_value = df['score_1'].min() # 최소값
max_value = df['score_1'].max() # 최대값
# 0.5 단위로 구간 생성
bins = np.arange(min_value - 0.5, max_value + 0.5, 0.5)
# 카테고리화
labels = [' ~ '.join([str(bins[i]),str(bins[i+1])]) for i in range(len(bins[:-1]))]
df['category'] = pd.cut(df['score_1'], bins=bins, labels=labels, right=False)
print(df)
코드 설명
- np.arange(min_value - 0.5, max_value + 0.5, 0.5):
- 0.5 단위의 구간을 생성합니다. min_value - 0.5와 max_value + 0.5는 구간의 시작과 끝을 약간 확장하여 포함 범위를 넓힙니다.
- 예: [0.5, 1.0, 1.5, ... 4.5]
- pd.cut():
- 데이터를 지정된 bins 구간에 맞게 분류합니다.
- labels: 각 구간의 레이블을 지정합니다.
- right=False: 구간의 오른쪽 끝값은 포함하지 않도록 설정합니다.
- 결과: 각 점수는 0.5 단위 구간에 따라 카테고리화된 값(category)을 갖습니다.
주의사항
- 구간 선택:
- 구간 간격은 분석 목적에 맞게 조정해야 합니다. 예를 들어, 더 세밀한 구간이 필요하면 간격을 줄이고, 범위를 크게 보고 싶다면 간격을 늘리세요.
- 빈 구간 처리:
- 특정 구간에 데이터가 없을 경우, 해당 구간은 출력 결과에서 보이지 않을 수 있습니다. 필요하면 value_counts()를 사용해 빈도수를 확인하세요.
- 중복 범위 처리:
- right=False와 같은 옵션으로 구간의 경계를 명확히 설정하세요. 그렇지 않으면 동일 값이 두 구간에 속할 수 있습니다.
Pandas의 pd.cut 함수는 숫자 데이터를 특정 구간으로 나누고 카테고리화하는 데 매우 유용합니다. 이 방법은 데이터를 그룹화하거나 범주형 데이터를 생성할 때 효과적으로 활용할 수 있습니다. 분석 대상에 맞는 구간과 레이블을 설정하여 더 직관적인 데이터 분석을 진행해 보세요. 오늘도 읽어주셔서 감사합니다!