개발로그필름

네 번째 질문, 직업군별 수면시간과 수면의 질 본문

데이터분석가

네 번째 질문, 직업군별 수면시간과 수면의 질

yuullog 2024. 12. 25. 22:29
728x90
반응형
SMALL
반응형

이번에는 직업군별 수면시간, 수면의 질을 보면서 데이터분석을 하고 시각화를 해보았다

먼저 어떤 직업군이 있고 몇 명이 분포하고 있는지 알아보았다

직업군별 데이터 표
# 직업군별 데이터 분포를 표로 나타내기
occupation_table = sleep_data['Occupation'].value_counts().reset_index()
occupation_table.columns = ['Occupation', 'Count']

occupation_table

sleep_data의 'Occupation' 열을 선택해

value_counts()로 고유한 값의 개수를 계산했다. Series 형태로 결과를 반환해 고유 값이 인덱스에 저장된다

reset_index()로 인덱스를 일반 열로 변환하고 기존 인덱스를 재설정한다

.columns로 열의 이름을 재정의하면 끝!

occupation_table

 

직업군별 데이터 그래프
import matplotlib.pyplot as plt

# 직업군별 분포도 시각화
plt.figure(figsize=(12, 6))
sleep_data['Occupation'].value_counts().plot(kind='bar', title='Distribution of Occupations', color='skyblue')
plt.xlabel('Occupation')  # x축 레이블
plt.ylabel('Number of Individuals')  # y축 레이블
plt.show()

직업군별 데이터 그래프

 

해당 데이터에 직업군별 몇 명이 있는지 알아보니 특정 직업군에 집중되어있음을 알 수 있었다

적은 수의 직업군은 분석에서 유의미한 결과를 얻기 어렵겠다는 생각이 들었다

그래서 비슷한 직업군끼리 그룹화하여 분석하기 위해 직업군 그룹화를 하였다

 

SMALL

 

직업군 그룹화 코드
# 직업군 그룹화
occupation_mapping = {
    'Nurse': 'Healthcare',
    'Doctor': 'Healthcare',
    'Engineer': 'Technical',
    'Scientist': 'Technical',
    'Lawyer': 'Business',
    'Teacher': 'Education',
    'Accountant': 'Business',
    'Salesperson': 'Sales',
    'Sales Representative': 'Sales',
    'Software Engineer': 'Technical',
    'Manager': 'Business'
}

sleep_data['Occupation Group'] = sleep_data['Occupation'].map(occupation_mapping)
grouped_distribution = sleep_data['Occupation Group'].value_counts()
grouped_distribution

직업군 그룹화

비슷한 직업군끼리 묶으니까 크게 5가지로 나뉘었다

이제 다시 그룹화된 데이터를 기반으로 데이터분석 시이작!

 

그룹별 평균 수면 시간 및 수면의 질 계산
grouped_sleep_analysis = sleep_data.groupby('Occupation Group')[['Sleep Duration', 'Quality of Sleep']].mean()
grouped_sleep_analysis

직업별 평균 수면 시간 및 수면의 질

 

그룹별 평균 수면 시간 시각화
plt.figure(figsize=(10, 5))
grouped_sleep_analysis['Sleep Duration'].sort_values(ascending=False).plot(kind='bar', title='Average Sleep Duration by Occupation Group', color='skyblue')
plt.ylabel('Average Sleep Duration (hours)')
plt.xlabel('Occupation Group')
plt.show()

Sleep Duration 열로 데이터 분석

sort_values(ascending=False) : 수면 시간 열을 내림차순으로 정렬. 가장 높은 수면 시간이 가장 먼저 표시

plot() 막대그래프로 그리는데 안에 속성들을 선택해주었다

kind='bar' 막대그래프 유형 지정

title 그래프의 제목

color 막대 색상

 

그룹별 평균 수면의 질 시각화
plt.figure(figsize=(10, 5))
grouped_sleep_analysis['Quality of Sleep'].sort_values(ascending=False).plot(kind='bar', color='orange', title='Average Quality of Sleep by Occupation Group')
plt.ylabel('Average Quality of Sleep (1-10)')
plt.xlabel('Occupation Group')
plt.show()

 

직업군별 수면시간과 수면의 질을 각각의 막대그래프로 나타내보았는데

수면시간과 수면의 질 데이터 비교를 한눈에 하기 위해 한 그래프에 표시해보았다

 

직업군별 수면 시간과 수면의 질 비교 막대 그래프
import matplotlib.pyplot as plt
import numpy as np

# 데이터 준비
categories = grouped_sleep_analysis.index
sleep_duration = grouped_sleep_analysis['Sleep Duration']
quality_of_sleep = grouped_sleep_analysis['Quality of Sleep']

# 막대 위치 설정
x = np.arange(len(categories))  # 카테고리의 개수만큼 위치 설정
width = 0.35  # 막대의 폭

# 그래프 그리기
plt.figure(figsize=(10, 6))
plt.bar(x - width/2, sleep_duration, width, label='Sleep Duration', color='skyblue')  # 수면 시간
plt.bar(x + width/2, quality_of_sleep, width, label='Quality of Sleep', color='orange')  # 수면의 질

# 그래프 속성 설정
plt.xlabel('Occupation Group')
plt.ylabel('Average Values')
plt.title('Comparison of Sleep Duration and Quality by Occupation Group')
plt.xticks(x, categories, rotation=45)  # x축 눈금 설정
plt.legend()  # 범례 추가

plt.tight_layout()  # 레이아웃 조정
plt.show()

categories = grouped_sleep_analysis.index : grouped_sleep_analysis의 인덱스(직업군 그룹 이름)를 가져온다. 막대를 각 그룹에 할당하기 위해 필요하다

sleep_duration : 수면 시간 데이터를 가져온다. 각 직업군의 평균 수면 시간을 막대로 표현

quality_of_sleep : 수면의 질 데이터를 가져온다. 각 직업군의 평균 수면의 질을 막대로 표현

np.arange(len(categories)) : 0부터 직업군 그룹 수만큼 정수 생성

width : 막대의 폭 설정

x-width/2 : 수면 시간 막대의 위치를 x에서 왼쪽으로 width/2만큼 이동

plt.xticks() : x 눈금 위치, 각 눈금에 표시할 텍스트, 텍스트 45도 회전

 

최종 결론

Technical 그룹이 가장 긍정적인 결과가 나왔고 Sales 그룹은 수면시간, 수면의 질 모두 저조했다

데이터 분석을 하기 전에는 막연히 Education 그룹이 가장 긍정적이고 Healthcare 그룹이 가장 저조할 것으로 생각했는데 예상했던 것과는 완전 다르게 결과가 나와서 신기했다

지금까지 데이터분석을 했던건 예상 가능한 결과가 많이 나왔는데 이번엔 완전 달라서 재미있고 신기한 분석이었다~

반응형
LIST
Comments