본문 바로가기
5-3. Pandas 제공 자료구조/DataFrame

[파이썬 판다스] 값을 구간별로 나누기 (연속형데이터를 범주형으로)

by 만다린망고 2022. 2. 8.
반응형

점수를 학점으로 바꿔보는 예제입니다. 변환 기준은 아래와 같습니다. 

#학점 기준
#[0~70) : D
#[70~80) : C
#[80~90) : C
#[90~100) : D


먼저 데이터를 생성하겠습니다. 학생의 번호와 점수입니다. 

#데이터 생성
num=list(range(1,11))
score=[78,62,65,94,71,97,57,83,71,96]
md=pd.DataFrame({'num':num,'score':score})

>>> md
   num  score
0    1     78
1    2     62
2    3     65
3    4     94
4    5     71
5    6     97
6    7     57
7    8     83
8    9     71
9   10     96


점수를 학점으로 변환해봅시다. 판다스의 cut 함수를 사용합니다. 

#점수를 학점으로 변환
md['score2']=pd.cut(score,bins=[0,70,80,90,110],right=True) #right 옵션 True
md['score3']=pd.cut(score,bins=[0,70,80,90,110],right=False) #righth 옵션 False
md['score4']=pd.cut(score,bins=[0,70,80,90,110],labels=["D","C","B","A"],right=False) #라벨 설정


아래는 결과입니다. 옵션별로 비교할 수 있습니다. 

>>> md
   num  score     score2     score3 score4
0    1     78   (70, 80]   [70, 80)      C
1    2     62    (0, 70]    [0, 70)      D
2    3     65    (0, 70]    [0, 70)      D
3    4     94  (90, 110]  [90, 110)      A
4    5     71   (70, 80]   [70, 80)      C
5    6     97  (90, 110]  [90, 110)      A
6    7     57    (0, 70]    [0, 70)      D
7    8     83   (80, 90]   [80, 90)      B
8    9     71   (70, 80]   [70, 80)      C
9   10     96  (90, 110]  [90, 110)      A
반응형

댓글