[Pandas] 판다스 Cut 함수로 데이터 구간 나누기(설명 및 예시)
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 함수 공식 문서 바로가기
댓글