본문 바로가기

[Pandas] 판다스 Cut 함수로 데이터 구간 나누기(설명 및 예시)

hyunicecream 2024. 3. 25.

Pandas(판다스) Cut 함수 알아보기 

Pandas의 Cut 함수는 연속적인 수치 데이터를 범주형 데이터로 변환하여 분석의 효율성과 정밀도를 높이는 데 중요한 역할을 합니다. 이 기능을 통해 데이터를 구간별로 나누고, 각 구간에 의미 있는 레이블을 부여함으로써 데이터의 분석 및 시각화 과정을 더욱 명확하고 직관적으로 만들 수 있습니다. 😁

Pandas Cut 함수 파라미터 설명

bins 파라미터는 데이터를 나눌 구간의 경계를 정의합니다. 예를 들어, [0, 4, 8, 12, 24]는 0~4, 4~8, 8~12, 12~24의 네 구간으로 데이터를 나누겠다는 의미입니다. 구간의 경계는 왼쪽은 포함하지 않고(단, 첫 구간의 시작점은 포함), 오른쪽은 포함하는 방식으로 정의됩니다.

labels 파라미터는 각 구간에 할당할 레이블을 정의합니다. 시각화 시에도 구간을 쉽게 식별할 수 있도록 도와줍니다. bins에 의해 정의된 구간 수와 labels 리스트의 요소의 개수는 일치해야 합니다.(필수)


df = pd.DataFrame({
    'User': ['Alice', 'Bob', 'Charlie', 'Dana'],
    'Usage Time': [5, 12, 8, 3]
})

bins = [0, 4, 8, 12, 24]  # 구간 경계 정의
labels = ['Very Low', 'Low', 'Medium', 'High']  # 구간별 레이블
df['Usage Category'] = pd.cut(df['Usage Time'], bins=bins, labels=labels)

print(df)

Output


      User  Usage Time Usage Category
0    Alice           5            Low
1      Bob          12         Medium
2  Charlie           8         Medium
3     Dana            3       Very Low

이러한 방식으로 pd.cut 함수를 활용하면, 연속적인 수치 데이터를 의미 있는 범주형 데이터로 변환할 수 있으며, 분석 결과를 보다 직관적으로 이해하고 전달할 수 있습니다.

1.  연령대별 구분 예시

다음 예시에서는 사람들의 연령 데이터를 기반으로 연령대별로 구분하는 방법을 보여줍니다.


import pandas as pd

df = pd.DataFrame({
    'Name': ['John', 'Anna', 'Peter', 'Linda'],
    'Age': [23, 35, 12, 58]
})

bins = [0, 18, 30, 40, 50, 100]
labels = ['Under 18', '18 to 29', '30 to 39', '40 to 49', '50+']
df['Age Group'] = pd.cut(df['Age'], bins=bins, labels=labels)

print(df)

Output


    Name  Age  Age Group
0   John   23    18 to 29
1   Anna   35    30 to 39
2  Peter   12    Under 18
3  Linda   58        50+

2.  성적 구간별 등급 부여

학생들의 성적 데이터를 구간별로 나누어 등급을 부여하는 예시입니다.


df = pd.DataFrame({
    'Name': ['Alex', 'Bobby', 'Charlie', 'Diana'],
    'Score': [82, 91, 78, 85]
})

bins = [0, 60, 70, 80, 90, 100]
labels = ['F', 'D', 'C', 'B', 'A']
df['Grade'] = pd.cut(df['Score'], bins=bins, labels=labels)

print(df)

Output


      Name  Score Grade
0     Alex     82     B
1    Bobby     91     A
2  Charlie     78     C
3    Diana     85     B

3.  소득 구간별 카테고리화

다양한 소득 수준을 갖는 인구 집단을 구간별로 나누어 분석하는 방법을 설명합니다.


df = pd.DataFrame({
    'Person': ['Tom', 'Jerry', 'Mickey', 'Donald'],
    'Income': [55000, 80000, 120000, 45000]
})

bins = [0, 50000, 75000, 100000, 500000]
labels = ['Low', 'Medium', 'High', 'Very High']
df['Income Level'] = pd.cut(df['Income'], bins=bins, labels=labels)

print(df)

Output


   Person  Income Income Level
0     Tom   55000        Medium
1   Jerry   80000          High
2  Mickey  120000     Very High
3  Donald   45000           Low

4. 사용 시간대별 사용자 분류

하루 동안의 앱 사용 시간을 기준으로 사용자를 분류하는 예시를 보여줍니다.


df = pd.DataFrame({
    'User': ['Alice', 'Bob', 'Charlie', 'Dana'],
    'Usage Time': [5, 12, 8, 3]
})

bins = [0, 4, 8, 12, 24]
labels = ['Very Low', 'Low', 'Medium', 'High']
df['Usage Category'] = pd.cut(df['Usage Time'], bins=bins, labels=labels)

print(df)

Output


      User  Usage Time Usage Category
0    Alice           5            Low
1      Bob          12         Medium
2  Charlie           8         Medium
3     Dana            3       Very Low

5.  체중 분류에 따른 건강 등급

체중 지수(BMI)를 기준으로 개인의 건강 등급을 분류하는 방법입니다.


df = pd.DataFrame({
    'Name': ['Eva', 'Luis', 'Omar', 'Isla'],
    'BMI': [22, 29, 31, 18]
})

bins = [0, 18.5, 24.9, 29.9, 100]
labels = ['Underweight', 'Healthy', 'Overweight', 'Obese']
df['Health Status'] = pd.cut(df['BMI'], bins=bins, labels=labels)

print(df)

Output


    Name  BMI Health Status
0    Eva   22       Healthy
1   Luis   29    Overweight
2   Omar   31         Obese
3   Isla   18  Underweight

6. 쓰임새와 활용도

Pandas의 cut 함수는 연속적인 수치 데이터를 범주화하여 분석의 유연성을 높이는 데 큰 도움을 줍니다. 이를 통해 사용자는 데이터를 명확한 구간으로 나누고, 각 구간에 대한 분석을 쉽게 수행할 수 있습니다. 데이터 분석, 보고서 작성, 데이터 시각화 등 다양한 상황에서 유용하게 활용될 수 있으며, 데이터의 이해도를 높이고 보다 실질적인 인사이트를 도출하는 데 기여합니다.

또한, cut 함수는 사용자가 직접 구간을 정의하고, 각 구간에 적합한 레이블을 지정할 수 있어, 분석 결과의 가독성을 높이고 해석을 용이하게 합니다. 이와 같은 접근 방식은 데이터 분석 과정에서 데이터를 보다 세밀하게 조작하고, 분석 결과를 효과적으로 전달하는 데 중요한 역할을 합니다.

더 많은 정보와 자세한 사용법을 원하신다면, Pandas 공식 문서를 참고 해보세요:)  Pandas Cut 함수 공식 문서 바로가기

댓글