<Python>/[DataFrame]

파이썬 Pandas DataFrame .digitze vs .cut

9566 2023. 3. 8. 17:14
728x90

연속형 변수를 범주화하는 방법 중에는 여러 개의 구간으로 나누어 각 구간을 하나의 범주로 만드는 방법이 있습니다. 이번에는 np.digitize()와 pd.cut() 두 가지 함수를 이용하여 연속형 변수를 여러 개의 구간별로 범주화하는 방법에 대해 알아보겠습니다.

  1. np.digitize()를 이용한 연속형 변수의 여러개 구간별 범주화 np.digitize() 함수는 연속형 변수를 구간별로 범주화하는 데에 유용한 함수입니다. 이 함수는 입력값인 X와 구간을 정의한 bins를 받아 X의 각 값이 몇 번째 구간에 속하는지 반환합니다.

예를 들어, 아래와 같은 데이터프레임이 있다고 가정해봅시다.

import numpy as np
import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7, 8, 9]})

이제, 위 데이터프레임의 변수 A를 3개의 구간으로 나누어 범주화해보겠습니다. 이때, np.digitize() 함수를 이용하여 A의 각 값을 3개의 구간 중 어디에 속하는지 구해보면 아래와 같습니다.

bins = [0, 3, 6, 9]  # 3개의 구간으로 나눔
df['A_binned'] = np.digitize(df['A'], bins)

위 코드에서 bins는 3개의 구간 [0, 3), [3, 6), [6, 9]을 나타내며, df['A_binned']는 A의 각 값을 3개의 구간 중 어디에 속하는지를 나타내는 새로운 변수입니다.

  1. pd.cut()을 이용한 연속형 변수의 여러개 구간별 범주화 pd.cut() 함수는 연속형 변수를 구간별로 범주화하는 데에 유용한 함수입니다. 이 함수는 입력값인 X와 구간을 정의한 bins를 받아 각 구간에 대해 labels로 지정한 이름을 가진 범주로 나누어줍니다.

예를 들어, 아래와 같은 데이터프레임이 있다고 가정해봅시다.

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7, 8, 9]})

이때, pd.cut() 함수를 이용하여 A의 값을 3개의 구간으로 나누고 각 구간에 대해 labels로 지정한 범주 이름을 지정할 수 있습니다. 아래는 예시 코드입니다.

bins = [0, 3, 6, 9] # 3개의 구간으로 나눔 labels = ['Low', 'Medium', 'High'] # 구간별 범주 이름 지정

df['A_binned'] = pd.cut(df['A'], bins=bins, labels=labels)

위 코드에서 bins는 3개의 구간 [0, 3), [3, 6), [6, 9]을 나타내며, labels는 각 구간에 대해 지정한 범주 이름입니다. df['A_binned']는 A의 값을 3개의 구간으로 나누고, 각 구간에 대해 labels로 지정한 범주 이름을 가진 새로운 변수입니다.

결과적으로, np.digitize()와 pd.cut() 함수는 연속형 변수를 여러 개의 구간별로 범주화하는 데에 유용한 함수입니다. 두 함수는 각각 다른 방법으로 구간을 정의하고 범주 이름을 지정할 수 있습니다. 따라서 데이터 분석에서 연속형 변수를 범주화할 때, 적절한 함수를 선택하여 사용하면 됩니다.

 

 

728x90