오늘 분석할 자료는 CIS 데이터는 캐나다에 거주하는 다양한 사람들의 인구 통계, 고용, 소득, 복지에 대한 정보를 담고 있는 방대한 데이터셋입니다 처음 데이터를 열어봤을 때는 변수도 많고(무려 36개!), 숫자와 범주형 값들이 섞여 있어서 좀 복잡하게 느껴졌어요. 근데 자세히 들여다보니, 이 데이터 안에는 캐나다 사람들의 나이, 성별, 결혼 여부부터 시작해서, 얼마나 일했는지, 얼마를 벌었는지, 어떤 복지 혜택을 받았는지 같은 정보들이 다 담겨있어 분석할것이 많아보이네요
같이 첨부된 데이터 사전 파일에 숫자가 뭘 의미하는지에 대한 설명이 없었다 1살 15살 이럴일은 없을테고 의미가 있을텐데 외부에서 조사해봤는데 의미파악하는데 시간을 너무 빼앗겼다 알아보는데도 실패
5. 예측으로 진행 (Chat GPT)
6.학력별 소득 분포 확인하기
edu_map_predicted = {
1: "교육 없음 또는 초등 중퇴",
2: "초등학교 또는 중학교 졸업",
3: "고등학교 졸업",
4: "대학 일부 수료 또는 중퇴",
6: "대학 졸업 (전문대 포함)",
9: "학사 학위 이상"
}
df['Highest_edu_label_predicted'] = df['Highest_edu'].map(edu_map_predicted)
income_by_edu = df.groupby('Highest_edu_label_predicted')['Total_income'].mean().sort_values(ascending=False)
income_by_edu
7.청년층 장년층 노년층 소득평균 확인하기
import pandas as pd
import matplotlib.pyplot as plt
# 연령대 그룹 매핑
def map_age_group(age_code):
if 4 <= age_code <= 7:
return "Youth (15–34)"
elif 8 <= age_code <= 12:
return "Adult (35–59)"
elif 13 <= age_code <= 15:
return "Senior (60+)"
else:
return "Excluded"
# Age group 컬럼 추가
df['Age_group'] = df['Age_gap'].apply(map_age_group)
# 제외할 연령대 (예: 1~3세, 어린이)
df_age_filtered = df[df['Age_group'] != "Excluded"]
# 그룹별 평균 총소득 계산
income_by_age_group = df_age_filtered.groupby('Age_group')['Total_income'].mean().sort_values(ascending=False)
# 시각화
plt.figure(figsize=(8, 5))
income_by_age_group.plot(kind='bar', color='mediumseagreen')
plt.title("Average Total Income by Age Group", fontsize=14)
plt.xlabel("Age Group", fontsize=12)
plt.ylabel("Average Total Income (CAD)", fontsize=12)
plt.xticks(rotation=0)
plt.grid(axis='y', linestyle='--', alpha=0.6)
plt.tight_layout()
plt.show()
장년층(35–59세)이 평균적으로 가장 높은 소득을 보이며, 약 12만 5천 CAD(1억 2천만 원대)
청년층(15–34세)도 상대적으로 높은 편이며, 약 11만 7천CAD 약 117,542,000 원
노년층(60세 이상)은 은퇴자의 비중이 많기 때문에 소득이 가장 낮은 경향 약 83,389,000 원
마무리
이번 포스팅에서는 실제 데이터를 바탕으로 데이터 분석책에 나와있는 기본적인 분석방법을 참고해 작성되었습니다
분석하다 느낀것은 chat gpt 가 내가 머리 싸매서 하는것보다 빠르고 낫다 시간적 가치에서도 더 앞서는 모습을보며 내가 어떻게 공부를 해야하는건가 ? 데이터분석 문법같은걸 외워야 한다는 생각이 있었는데 질문하는 사고력을 길러야 하는걸까 생각이 들었네요 글 읽어주셔서 감사합니다