-
파이썬 Pandas DataFrame .digitze vs .cut<Python>/[DataFrame] 2023. 3. 8. 17:14728x90
연속형 변수를 범주화하는 방법 중에는 여러 개의 구간으로 나누어 각 구간을 하나의 범주로 만드는 방법이 있습니다. 이번에는 np.digitize()와 pd.cut() 두 가지 함수를 이용하여 연속형 변수를 여러 개의 구간별로 범주화하는 방법에 대해 알아보겠습니다.
- np.digitize()를 이용한 연속형 변수의 여러개 구간별 범주화 np.digitize() 함수는 연속형 변수를 구간별로 범주화하는 데에 유용한 함수입니다. 이 함수는 입력값인 X와 구간을 정의한 bins를 받아 X의 각 값이 몇 번째 구간에 속하는지 반환합니다.
예를 들어, 아래와 같은 데이터프레임이 있다고 가정해봅시다.
728x90import 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개의 구간 중 어디에 속하는지를 나타내는 새로운 변수입니다.
- 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'<Python> > [DataFrame]' 카테고리의 다른 글
파이썬 Pandas DataFrame .fillna, .interpolate (0) 2023.03.08 파이썬 Pandas DataFrame 칼럼별 결측값 대체 (0) 2023.03.08 파이썬 Pandas DataFrame .iter (0) 2023.03.08 파이썬 Pandas DataFrame .sample (0) 2023.03.08 파이썬 Pandas DataFrame 칼럼 다루기 (0) 2023.03.08