Language/Python

[Python] 수치형 변수의 구간화 - pd.cut() & pd.qcut()

나는 정은 2022. 10. 6. 09:05

 

Pandas로 수치형 변수 범주화하기

pandas의 cut과 qcut은 간단히 예를 들어보자면 절대평가와 상대평가의 의미와 비슷하다.

특정 점수 이상일 경우에 성적을 부여하는 것과 인원수에 따라 상위 몇 %인지에 따라 성적이 부여되는 원리와 같다.


cut()

같은 길이로 구간을 나눈다.
float 형식일 때 모든 값이 포함할 수 있도록 최소값-extra, 최대값+extra로 구간화한다.
[데이터, 구간의 길이, 레이블명] 에 해당하는 인자값을 지정할 수 있고
labels를 지정하지 않을 경우, 구간의 나눈 기준이 레이블명으로 지정된다.

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, 
             include_lowest=False, duplicates='raise', ordered=True)
 

타이타닉 Dataset 활용 예제

titanic['age_group'] = pd.cut(titanic['age'], 3, labels=['child', 'young', 'old'])
titanic[['age', 'age_group']].head()

qcut()

같은 개수로 구간을 나눈다.
표본 변위치를 기반으로 데이터를 나눠 적당히 같은 크기로 그룹을 나눈다.
[데이터, 구간의 개수, 레이블명] 에 해당하는 인자값을 지정할 수 있다.

pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')
 

타이타닉 활용 예제

titanic = sns.load_dataset('titanic')
titanic['age_class'] = pd.qcut(titanic['age'], 3, labels=['child', 'young', 'old'])

 

 

  • 동일한 개수로 나누어서 분포가 조금 달라진 것을 볼 수 있다.