pd.cut() 함수데이터 분석에서 연속형 변수를 범주형 변수로 변환해야 할 때 pd.cut()을 사용하면 효과적입니다. pd.cut()은 데이터를 특정 구간으로 나누고 각 구간에 해당하는 값을 할당하는 기능을 합니다. 이 글에서는 pd.cut()의 주요 기능과 사용법을 정리합니다.
pd.cut()의 기본 개념pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3,
include_lowest=False, duplicates='raise', ordered=True)
x : 변환할 데이터 (배열, 시리즈 등)bins : 데이터를 나눌 경계 값 (리스트 또는 정수 값)right : 구간의 오른쪽 경계를 포함할지 여부 (True 기본값)labels : 각 구간에 적용할 레이블 지정include_lowest : 가장 작은 경계를 포함할지 여부 (False 기본값)duplicates : 중복되는 bin 경계값을 허용할지 설정ordered : 레이블이 순서를 유지해야 하는지 여부 (True 기본값)bins 매개변수: 데이터 구간 나누기import pandas as pd
import numpy as np
data = np.array([1, 7, 5, 4, 6, 3, 8, 9, 2])
binned_data = pd.cut(data, bins=3)
print(binned_data)
출력:
[(0.992, 4.0], (4.0, 7.0], (4.0, 7.0], (0.992, 4.0], (4.0, 7.0], ...]
bins=3을 입력하면 최솟값과 최댓값을 기준으로 3개의 구간을 자동 설정합니다.data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
binned_data = pd.cut(data, bins=[1, 5, 10])
print(binned_data)
출력:
[(1, 5], (1, 5], (1, 5], (1, 5], (1, 5], (5, 10], (5, 10], (5, 10], (5, 10]]
[1, 5, 10]을 입력하면 1right 매개변수: 구간 경계 포함 여부data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
binned_data = pd.cut(data, bins=[1, 5, 10], right=False)
print(binned_data)
출력:
[[1, 5), [1, 5), [1, 5), [1, 5), [5, 10), [5, 10), [5, 10), [5, 10), [5, 10)]
right=False를 설정하면 구간이 [1,5), [5,10)처럼 오른쪽 값이 포함되지 않음을 알 수 있습니다.True로 설정되어 있어 (1,5] 형태로 오른쪽 경계를 포함합니다.labels 매개변수: 범주 이름 지정하기data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
binned_data = pd.cut(data, bins=[1, 5, 10], labels=['Low', 'High'])
print(binned_data)
출력:
['Low', 'Low', 'Low', 'Low', 'Low', 'High', 'High', 'High', 'High']
include_lowest 매개변수: 최솟값 포함하기data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
binned_data = pd.cut(data, bins=[1, 5, 10], include_lowest=True)
print(binned_data)
bins의 왼쪽 값은 포함되지 않지만, include_lowest=True를 설정하면 최솟값을 포함합니다.duplicates 매개변수: 중복된 bin 값 허용 여부binned_data = pd.cut([1, 2, 3, 4, 5], bins=[1, 3, 3, 5], duplicates='drop')
print(binned_data)
duplicates='drop'을 설정하면 중복된 구간을 제거하고 실행할 수 있습니다.| 매개변수 | 설명 |
|---|---|
bins | 데이터를 나눌 기준 (정수 또는 리스트) |
right | 오른쪽 끝 값을 포함할지 여부 (True 기본값) |
labels | 각 구간에 대한 범주형 레이블 설정 |
include_lowest | 가장 작은 값 포함 여부 (False 기본값) |
duplicates | 중복된 구간 값 허용 여부 ('raise' 기본값, 오류 발생) |
ordered | 레이블이 순서를 유지해야 하는지 (True 기본값) |
pd.cut()은 연속형 데이터를 범주형 데이터로 변환할 때 유용한 기능입니다. 특히 머신러닝에서 데이터를 특정 구간으로 나누어 분류 모델을 학습할 때 활용할 수 있습니다.