ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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()
    

    결론

    • 행복지수는 단일 요소가 아닌, 다양한 요인의 복합적인 영향을 받는다.
    • 수도권 및 대도시 지역의 행복지수가 전반적으로 높은 경향을 보이지만, 특정 요소에서 다른 지역이 우위를 점할 수도 있다.
    • 경제적 요인이 중요하지만, 만족도나 사회참여, 여가와 같은 요소들도 행복에 중요한 영향을 미친다.
    • 정책적 관점에서는 지역별 강점과 약점을 분석하여 맞춤형 개선 전략이 필요하며, 단순히 경제 발전만이 아니라, 사회적 요소(교육, 관계, 안전, 환경 등)도 고려해야 한다.
Designed by Tistory.