-
[2월 3주차-2/20(3)]대한민국 행복 지도 데이터 분석Why Not SW CAMP 5기/수업 기록 2025. 2. 20. 17:59
대한민국의 행복 수준을 시각적으로 분석하기 위해 다양한 데이터를 활용하여 행복 지수를 분석하고, 요소별 시각화를 수행하였습니다. 이번 포스팅에서는 건강, 경제, 사회 참여, 교육, 삶의 만족도, 안전, 여가, 환경 등 다양한 요소를 분석하고 시각화한 결과를 공유합니다.
1. 데이터 불러오기 및 전처리
우선, 대한민국 행복 지도 데이터셋을 불러오고 전처리를 진행합니다.
import pandas as pd health = pd.read_excel('data/대한민국행복지도_건강.xlsx') economy = pd.read_excel('data/대한민국행복지도_경제.xlsx') society = pd.read_excel('data/대한민국행복지도_관계및사회참여.xlsx') education = pd.read_excel('data/대한민국행복지도_교육.xlsx') satisfaction = pd.read_excel('data/대한민국행복지도_삶의만족도.xlsx') safety = pd.read_excel('data/대한민국행복지도_안전.xlsx') leisure = pd.read_excel('data/대한민국행복지도_여가.xlsx') environment = pd.read_excel('data/대한민국행복지도_환경.xlsx')
각 데이터셋의 결측치를 확인하고, 필요한 열만 선택하여 하나의 데이터프레임으로 병합합니다.
health= health.iloc[:,0:4].rename(columns={'평균': '건강_평균'}) economy= economy[['No', '평균']].rename(columns={'평균': '경제_평균'}) society= society[['No', '평균']].rename(columns={'평균': '사회_평균'}) education= education[['No', '평균']].rename(columns={'평균': '교육_평균'}) satisfaction= satisfaction[['No', '삶의 만족도']].rename(columns={'삶의 만족도': '만족도_평균'}) safety= safety[['No', '평균']].rename(columns={'평균': '안전_평균'}) leisure= leisure[['No', '평균']].rename(columns={'평균': '여가_평균'}) environment= environment[['No', '평균']].rename(columns={'평균': '환경_평균'}) mg = pd.merge(health, economy, on='No', how='left') mg = pd.merge(mg, society, on='No', how='left') mg = pd.merge(mg, education, on='No', how='left') mg = pd.merge(mg, satisfaction, on='No', how='left') mg = pd.merge(mg, safety, on='No', how='left') mg = pd.merge(mg, leisure, on='No', how='left') mg = pd.merge(mg, environment, on='No', how='left')
2. 시도별 행복 지수 요소별 시각화 (선 그래프)
import matplotlib.pyplot as plt import seaborn as sns sido_avg = mg.groupby('시도')[['건강_평균', '경제_평균', '사회_평균', '교육_평균', '만족도_평균', '안전_평균', '여가_평균', '환경_평균']].mean().reset_index() plt.figure(figsize=(10, 5)) sns.lineplot(x='시도', y='건강_평균', data=sido_avg, marker='o', color='b') sns.lineplot(x='시도', y='경제_평균', data=sido_avg, marker='o', color='r') sns.lineplot(x='시도', y='사회_평균', data=sido_avg, marker='o', color='pink') sns.lineplot(x='시도', y='교육_평균', data=sido_avg, marker='o', color='yellow') sns.lineplot(x='시도', y='만족도_평균', data=sido_avg, marker='o', color='green') sns.lineplot(x='시도', y='안전_평균', data=sido_avg, marker='o', color='black') sns.lineplot(x='시도', y='여가_평균', data=sido_avg, marker='o', color='skyblue') sns.lineplot(x='시도', y='환경_평균', data=sido_avg, marker='o', color='darkblue') plt.title('시도별 평균 행복지수 변화', fontsize=14) plt.xlabel('시도', fontsize=12) plt.ylabel('행복지수', fontsize=12) plt.xticks(rotation=45) plt.grid(True) plt.show()
3. 행복 지수 요소별 각각 시각화 (막대 그래프)
plt.style.use("ggplot") factors = ['건강_평균', '경제_평균', '사회_평균', '교육_평균', '만족도_평균', '안전_평균', '여가_평균', '환경_평균'] fig, axes = plt.subplots(2, 4, figsize=(20, 10)) axes = axes.flatten() for i, factor in enumerate(factors): sns.barplot(x=mg["시도"], y=mg[factor], ax=axes[i], palette="Blues") axes[i].set_title(factor) axes[i].set_xticklabels(mg["시도"], rotation=45) plt.tight_layout() plt.show()
4. 행복 지수 요소 간 상관관계 (히트맵)
correlation_matrix = mg[['건강_평균', '경제_평균', '사회_평균', '교육_평균', '만족도_평균', '안전_평균', '여가_평균', '환경_평균']].corr() plt.figure(figsize=(10, 8)) sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=".2f", linewidths=0.5) plt.title("행복 지수 요소 간 상관관계", fontsize=15) plt.show()
결론
- 행복지수는 단일 요소가 아닌, 다양한 요인의 복합적인 영향을 받는다.
- 수도권 및 대도시 지역의 행복지수가 전반적으로 높은 경향을 보이지만, 특정 요소에서 다른 지역이 우위를 점할 수도 있다.
- 경제적 요인이 중요하지만, 만족도나 사회참여, 여가와 같은 요소들도 행복에 중요한 영향을 미친다.
- 정책적 관점에서는 지역별 강점과 약점을 분석하여 맞춤형 개선 전략이 필요하며, 단순히 경제 발전만이 아니라, 사회적 요소(교육, 관계, 안전, 환경 등)도 고려해야 한다.
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[2월 4주차-2/24(1)]MySQL 8.2 버전 함수 사전 📖 (0) 2025.02.24 [2월 3주차-2/21]😊 병원 노쇼 환자 분석 🏥 (2) 2025.02.24 [2월 3주차-2/20(2)]미세먼지와 날씨 데이터 분석 및 시각화 (0) 2025.02.20 [2월 3주차-2/20(1)]다나와 무선청소기 데이터 분석 및 시각화 🧹📊 (0) 2025.02.20 [2월 3주차-2/19]왜 우리 동네에는 스타벅스가 없을까? (0) 2025.02.20