본문 바로가기
ML/ML-함수관련

연속형 변수 -> 범주형 변수로 바꾸기 - df.apply(), pd.cut()

by lucian 2021. 12. 29.

1. df.apply()

def func(x):
    if x < 3:
        return 'lowest'
    elif x < 3.3:
        return 'low'
    elif x < 3.5:
        return 'normal'
    else :
        return'high' 

train['pH'] = train['pH'].apply(lambda x : func(x))

 

2. pd.cut() & pd.qcut()

인자로 데이터, 구간의 갯수, 레이블명

구간의 갯수는 5개로 설정하여 1,2,3,4,5가 된다.

labels=False로 설정할 시 그대로 숫자가 넣어지고 만약 

labels=['a','b','c','d','e'] 일 경우 숫자 대신 리스트의 값이 넣어진다.

 

cut은 레이블의 범위가 같다.

qcut은 갯수가 같다.

만약 0과 99사이의 값을 3개로 나눌때 cut은 0~33, 33~66, 66~99로 되고,

qcut은 데이터의 갯수가 30개라면 10,10,10개로 나눠진다.

 train['alcohol'] = pd.cut(train.alcohol, 5,labels=False)

 

 

댓글