3 분 소요

ABC 부트캠프 [한국복지패널 데이터분석]

이번 시간은 지난 인구공공데이터를 활용한 데이터 분석을 이어

한국복지패널 데이터를 활용한 한국인의 삶을 분석하는 시간을 가져본다 ! !

교수님이 이번 데이터 분석은 아주 논란이 될 만한 무서운 주제를 갖고 오셨다

바로 <한국에서의 성별에="" 따른="" 월급="" 차이="">

라는 주제다! !

사실 분석을 하기전에도 이미 결과가 예상이되는 주제이지만

그래도 데이터 분석으로의 결과는 어떨지 배워보는 시간이기에 분석을 시작해보자 !

성별에 따른 월급 차이 - 성별에 따라 월급이 다를까?

1. 성별 데이터 확인하기

print('성별 데이터 타입 확인: ', welfare['sex'].dtypes)
print('성별 데이터 결측치 확인: ', welfare['sex'].isna().sum())      # insa는 결측치 확인 함수
print('성별 빈도 확인')

welfare['sex'].value_counts()

성별 데이터 타입 확인:  float64
성별 데이터 결측치 확인:  0
성별 빈도 확인
2.0    7913
1.0    6505
Name: sex, dtype: int64

2. 성별 데이터 전처리

# 성별데이터(1.0-> male, 2.0-> female)

welfare['sex'] = np.where(welfare['sex'] == 1, 'male', 'female')

print('성별 빈도 확인')
welfare['sex'].value_counts()
성별 빈도 확인
female    7913
male      6505
Name: sex, dtype: int64

2-1. 그래프로 확인

sns.countplot(data=welfare, x='sex')
plt.show()

image

3. 월급 데이터 확인하기

print('월급 데이터 타입 확인: ', welfare['income'].dtypes)
print('월급 데이터 결측치 확인: ', welfare['income'].isna().sum())      # insa는 결측치 확인 함수
print('월급 요약 통계량 확인')
welfare['income'].describe()
월급 데이터 타입 확인:  float64
월급 데이터 결측치 확인:  9884
월급 요약 통계량 확인
count    4534.000000
mean      268.455007
std       198.021206
min         0.000000
25%       150.000000
50%       220.000000
75%       345.750000
max      1892.000000
Name: income, dtype: float64

3-1. 그래프로 월급 분포도 확인

# 그래프로 월급 분포도 확인
sns.histplot(data=welfare, x='income')
plt.show()

image

4. 월급 데이터 전처리 -> 결측치(NaN) 삭제

welfare.dropna(subset=['income'], inplace=True)   # dropna - null 데이터를 지워주는 함수
print('월급 데이터 결측치 확인: ', welfare['income'].isna().sum())

월급 데이터 결측치 확인: 0 ​

5. 성별 월급 평균표 만들기

# 성별 기준으로 월급의 평균표 만들기
sex_income = welfare.groupby('sex', as_index=False).agg(mean_income = ('income', 'mean'))
sex_income
	sex	mean_income
0	female	186.293096
1	male	349.037571

6. 성별에 따른 월급 분석 차이

# 남성의 평균 월급이 여성의 월급의 두 배 가까움
sns.barplot(data=sex_income, x='sex', y='mean_income')
plt.show()

image

이렇게 하여 결과로는 남성의 평균 월급이

여성의 월급의 2배에 가깝다는 것을 알 수 있다.

나이와 월급의 관계 - 몇 살 때 월급을 자아 많이 받을까?

​ 다음은 나이와 월급의 관계를 비교해보는 데이터 분석을 해보자

1. 나이 데이터 확인하기

print('나이 데이터 타입 확인: ', welfare['birth'].dtypes)
print('나이 데이터 결측치 확인: ', welfare['birth'].isna().sum())      # insa는 결측치 확인 함수
print('나이 요약 통계량 확인')
welfare['birth'].describe()     # 결측치가 없으면 dropna 안해도 된다.
나이 데이터 타입 확인:  float64
나이 데이터 결측치 확인:  0
나이 요약 통계량 확인
count    4534.000000
mean     1971.144685
std        15.290056
min      1928.000000
25%      1961.000000
50%      1972.000000
75%      1982.000000
max      2001.000000
Name: birth, dtype: float64

1-1. 그래프로 나이 분포도 확인

# 그래프로 나이 분포도 확인
sns.histplot(data=welfare, x='birth')
plt.show()

image

2. 생년월일 전처리 -> 파생 변수 생성 -> 생년월일을 활용하여 나이 데이터 만들기

welfare = welfare.assign(age = 2019-welfare['birth']+1)
welfare['age']
2        78.0
3        58.0
7        86.0
8        80.0
14       42.0
         ... 
14401    54.0
14402    58.0
14405    73.0
14410    64.0
14416    22.0
Name: age, Length: 4534, dtype: float64

2-1. 그래프로 생년월일 분포도 확인

# 그래프로 생년월일 분포도 확인
sns.histplot(data=welfare, x='age')
plt.show()

image

3. 나이에 따른 월급 평균표 만들기

age_income = welfare.groupby('age').agg(mean_income=('income', 'mean'))
age_income
	mean_income
age	
19.0	162.000000
20.0	121.333333
21.0	136.400000
22.0	123.666667
23.0	179.676471
...	...
88.0	27.000000
89.0	27.000000
90.0	27.000000
91.0	20.000000
92.0	27.000000
74 rows × 1 columns

4. 나이와 월급의 관계 분석

sns.lineplot(data=age_income, x='age', y='mean_income')
plt.show()

image

4-1. 가장 월급을 많이 받는 나이는?

# 가장 월급을 많이 받는 나이는?
age_income['mean_income'].max()

386.1958762886598

age_income.idxmax()
	   mean_income
age	
44.0	386.195876

44세, 386만원이라고 하네요 ​

5. 나이 및 성별 월급 평균표 만들기

sex_age_income = welfare.groupby(['age', 'sex'], as_index=False).agg(mean_income=('income', 'mean'))
sex_age_income
     age	sex	    mean_income
0	19.0	male	162.000000
1	20.0	female	87.666667
2	20.0	male	155.000000
3	21.0	female	124.000000
4	21.0	male	186.000000
...	...	...	...
140	89.0	male	27.000000
141	90.0	female	27.000000
142	91.0	female	27.000000
143	91.0	male	13.000000
144	92.0	female	27.000000
145 rows × 3 columns

6. 나이 및 성별 월급 차이 분석

sns.lineplot(data=sex_age_income, x='age', y='mean_income', hue='sex')
plt.show()

image

이렇게 lineplot으로

X축은 나이,

Y축은 월급의 분포로,

남성과 여성의 월급차이를 분석해봤다

이 분석된 결과를 보고 마냥 기분이 썩 좋지는 않았는데 그때 교수님이

노력하고 성공해서 돈 많이 벌면된다고, 성별과는 무관하다는 아주 멋진 말씀을 하셨다👍

나는 능력이 있든 없든 성공의 근본적인 요인은

자신감이라고 생각한다

자신이 언젠가 성공할 수 있다는 자신있고 긍정적인 사람이 된다면

꼭 그렇게 될 수 있을 것이라고 말해주고 싶다.

댓글남기기