• 범주형 변수는 정해진 몇 개의 값이 여럿 모여있는 변수
  • 범주형 변수안에 포함된 범숫값 각각의 빈도수와 비율이 분석 대상이 된다

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()

 

 

+ Recent posts