BDA

[BDA] 5주차 단변량 분석 범주형

getfeelingsfrom 2025. 11. 6. 16:23

 

지난 시간에 공부한 숫자형 변수 뿐 아니라 카테고리를 가지고 있는 질적 데이터인 범주형 변수가 존재합니다. 범주형의 기초 통계량은 범주 별 빈도수와 범주 별 비율을 통해 구할 수 있습니다. 

 

범주 별 빈도수는 

시리즈.value_counts()

 

를 통해 구할 수 있습니다. 

범주의 개수와 상관없이 범주 별 개수를 count해주는 메서드입니다. 

 

위와 같이 각 범주로 나누어 count값을 반환합니다.

 

범주별 비율은  

.value_counts(normalize = True)

 

위와 같은 식으로 구할 수 있습니다.

이때 normalize뜻을 비율이라고 생각하면 쉽게 떠올릴 수 있습니다. 

 

 

범주 별로 비율을 구해서 반환하는 것을 확인할 수 있습니다. 

 


범주형 변수 시각화하기 

막대그래프

범주형 변수는 막대그래프 (Bar Plot)으로 표현하면 한 눈에 확인하기 좋습니다. 

 

seaborn의 countplot을 이용하면 알아서 범주별 빈도수가 계산되고, bar plot으로 그려집니다.

plt.bar()을 사용하게 되면 먼저 집계한 후 결과를 가지고 그래프를 그려야하므로 countplot을 사용하는게 편리하겠죠? 

 

sns.countplot(x = 'Pclass', data = titanic)
plt.grid()
plt.show()

 

 

박스 플롯을 보면 히스토그램이 생각날텐데요

히스토그램과 박스플롯은 비슷하게 생겼지만 기능은 달라요

구분 히스토그램 박스플롯
공통점 y축(빈도수, 개수) 동일 y축 기준으로 데이터의 분포 표현
차이점 x축이 연속형 변수라 그래프가 붙어있음 x축이 범주형 변수라 항목이 떨어져있음
순서 변경 연속데이터라 불가능 범주형 데이터라 가능

 

 

따라서 히스토그램은 숫자형 변수의 분포를 보고 싶을 때, 

박스플롯은 여러 그룹 간의 분포 비교를 수행할 때 사용하면 됩니다 ! 

 


파이차트

범주별 비율을 비교할 때는 파이차트를 활용할 수 있습니다. 

 

파이차트를 그리기 전에  데이터를 집계(value_counts) 해야 합니다.

plt.pie( 값, labels=범주이름, autopct = ‘%.2f%%’)

 

여기서
autopct='%.2f%%' 는 그래프에 표시할 비율 값이 소수점 둘째 자리까지의 퍼센트 값이라는 의미예요.
즉, 각 조각이 전체 중 몇 %를 차지하는지 깔끔하게 볼 수 있죠.

 

 

그래프가 시작되는 각도나, 그려지는 방향

plt.pie(temp.values, labels=temp.index, autopct='%.2f%%', startangle=90, counterclock=False) plt.show()

 

 

  • startangle=90 : 그래프를 90도 위치에서 시작
  • counterclock=False : 시계 방향으로 그리기

다음과 같이 그래프가 시작되는 각도나, 그려지는 방향을 설정할 수 있습니다.

 

plt.pie(temp.values, labels=temp.index, autopct='%.2f%%', startangle=90, counterclock=False, explode=[0.05, 0.05, 0.05], shadow=True) plt.show()
  • explode=[0.05, 0.05, 0.05] : 각 조각을 중심에서 살짝 띄우기
  • shadow=True : 그림자 효과 추가

같은 방법으로 조각들을 살짝 띄워주거나, 그림자를 추가할 수도 있습니다. 

 

 

마무리하며...

추석과 시험기간이 있었던 10월에는 잠시 휴회기간을 가졌었는데요.

그 시간동안 지금까지 제가 작성했던 블로그를 보며 내용을 되새길 수 있었습니다! 

이렇게 도움이 되는 걸 느낀만큼 앞으로도 열심히 작성하며 복습을 진행하고,

다음에 봐도 쉽게 이해할 수 있게 꾸준히 작성해보려구 합니다!

 

11월에는 더 열심히 공부해서 성장하는 사람이 되도록 하겠습니당

화이팅 !