- 범주형 변수는 정해진 몇 개의 값이 여럿 모여있는 변수
- 범주형 변수안에 포함된 범숫값 각각의 빈도수와 비율이 분석 대상이 된다
Bar 플롯 = 두 범주의 개수를 확인
Seaborn의 Count Plot = 알아서 집계가 돼서 보여준다
파이차트는 잘 안씀
수치화
- 범주형 변수는 범주별 빈도수와 비율을 기초 통계량을 통해 확인
- value_counts() 메소드는 범주형 변수에 포함된 범줏값 각각의 개수를 카운트 해 줌
- normalize=True 옵션을 지정해 개수가 아닌 비율 확인
print(diabetes['BMIStatus'].value_counts())
print('-' * 25)
print(diabetes['BMIStatus'].value_counts(normalize=True))

🔍 해석
- 비만(Obese)이 전체에서 62.4%를 차지
- 과체중(Overweight)이 23.6%, 정상(Normal)이 13.5%를 차지
- 저체중(Underweight)은 0.5%로 매우 적은 비율
print(diabetes['Outcome'].value_counts())
print('-' * 25)
print(diabetes['Outcome'].value_counts(normalize=True))

🔍 해석
- 당뇨가 아닌 사람이 65.1%
- 당뇨인 사람 34.8%
→ 범주값이 뭐가 있고 그게 몇개야 걔가 몇 퍼센트 차지하고 있어에 관심 있지(빈도)
Outcome의 평균이 뭐야? 이런거에 관심 없음
시각화
Bar Plot
- 범주 이름과 값이 필요하므로 집계 작업이 선행되어야 함
- 판다스의 value_counts() 를 사용하여 집계
- 집계 결과의 index: 범줏값 이름
- 집계 결과의 values: 값
- 집계 결과를 Matplotlib의 bar() 함수로 시각화
첫번째. 집계 과정
temp = diabetes['BMIStatus'].value_counts()
print(temp)
print('-'*25)
print(temp.index) # 바플롯 그릴때 이게 x축으로
print(temp.values) # 이게 y축으로 감

두번째. 시각화
temp = diabetes['BMIStatus'].value_counts()
plt.bar(x=temp.index.astype(str), height=temp.values)
astype(str) 문자면 상관 없는데 그릴게 숫자라면 쓸데 없는 값들도 그려지게 됨
**숫자가 문자화 돼서 중간값이 출력되지 않게 해주는 역할**
plt.show()

Seaborn의 countplot() 함수를 사용하면 집계 과정 없이도 Bar Plot을 그릴 수 있다
sns.countplot(x='BMIStatus', data=diabetes)
plt.show()
이게 좋다… 위에 집계과정 없으니까는(첫번째 과정이 필요없음)
Pie Chart _ 잘 안쓴다. 피하자 우리는 바플롯, 카운트플롯을 쓰자
- 범주별 값의 빈도수가 아닌 비율을 비교할 때는 Pie Chart를 사용
- Pie Chart 역시 집계를 먼저 해야 함
# 집계
temp = diabetes['BMIStatus'].value_counts()
print(temp.index)
print(temp.values)
# 시각화
temp = diabetes['BMIStatus'].value_counts()
plt.pie(x=temp.values, labels=temp.index, autopct='%.2f%%')
plt.show()
'KT 에이블스쿨 8기 > 데이터분석' 카테고리의 다른 글
| 이변량 분석 ③ - 범주형 → 범주형 (0) | 2025.11.25 |
|---|---|
| 이변량 분석 ② - 범주형 → 수치형 (1) | 2025.11.25 |
| 단변량 분석 ① - 수치형 (0) | 2025.11.25 |
| 시각화라이브러리 ② - Seaborn (0) | 2025.11.25 |
| 시각화라이브러리 ① - Matplotlib (0) | 2025.11.25 |