차밍이

[Pandas] 판다스 기초 #2 - 데이터 구간별 범주화 pd.cut 본문

파이썬/기본 문법 정리

[Pandas] 판다스 기초 #2 - 데이터 구간별 범주화 pd.cut

2021. 5. 30. 08:01
반응형

데이터 구간별 범주화

  • pd.cut
  • 데이터 값들을 특정 구간에 따라서 범주화할 때, 사용
  • 범주를 나누고 라벨을 붙여서 범주형 데이터로 변환 가능
  • 연속 데이터를 구간별로 범주화하는 함수

pd.cut 사용 방법

import pandas as pd
ages = [0, 10, 15, 13, 21, 23, 37, 31, 43, 80, 61, 20, 41, 32, 100]
bins = [0, 15, 25, 35, 60, 100]
labels = ['어린이', '청년', '장년', '중년', '노년']
cuts = pd.cut(ages, bins, right=False, labels=labels)
cuts

>>>
[어린이, 어린이, 청년, 어린이, 청년, ..., 노년, 청년, 중년, 장년, NaN]
Length: 15
Categories (5, object): [어린이 < 청년 < 장년 < 중년 < 노년]

범주화할 데이터 : ages

범주를 구분하는 기준 : bins

구분한 범주의 라벨 : labels

범주화에 사용하는 함수 : pd.cut

cuts에는 pd.cut을 사용해서 데이터 agesbins의 요소들을 기준으로 범주화한 데이터가 들어있습니다.

각각의 ages의 값들은 범주화된 후 labels에 맞춰서 해당 값으로 바뀌어 들어갑니다.

cuts에 있는 데이터는 총 15개의 데이터가 있으며, 카테고리화 되어있습니다.

 

cut 범주 등호 방향

마지막 범주 데이터가 100입니다. right=False라는 옵션을 통해서 범주를 정하는 부등호를 바꾸어주는 것입니다. 노년에 해당되는 범주는 현재 60 <= 노년 < 100으로 설정된 것입니다.

import pandas as pd
ages = [0, 10, 15, 13, 21, 23, 37, 31, 43, 80, 61, 20, 41, 32, 100]
bins = [0, 15, 25, 35, 60, 100]
labels = ['어린이', '청년', '장년', '중년', '노년']
cuts = pd.cut(ages, bins, right=True, labels=labels)
cuts

>>>
[NaN, 어린이, 어린이, 어린이, 청년, ..., 노년, 청년, 중년, 장년, 노년]
Length: 15
Categories (5, object): [어린이 < 청년 < 장년 < 중년 < 노년]

right=True로 설정하면 60 < 노년 <= 100으로 설정될 것이며, NaN이 마지막에 발생되지 않고 100은 노년으로 구분될 것입니다.

하지만, 첫 번째 0 값이 왼쪽 등호가 사라지면서 어린이범주에 들어가지 못하게 됩니다. 따라서 NaN으로 출력됩니다.

여기서 0 또한 범위에 포함하고 싶다면 include_lowest=True 옵션을 사용하면 됩니다.

해당 옵션을 사용하면 가장 작은 값인 0을 범위 안으로 포함되도록 설정합니다.

반응형

관련된 글 보기

Comments