지역별 평균연봉 - 연봉이 가장 높은 지역은?
by Edward Park
개요
- 직장가입자는 급여의 총 9%(근로자 4.5% + 회사 4.5%)를 국민연금으로 납부
- 국민연금공단 국민연금 가입 사업자 내역 에서 각 기업이 납부하는 국민연금 총액과 가입자 수, 지역 등을 제공
이를 통해 각 기업에 근로하는 근로자의 평균 연봉을 추정할 수 있고, 지역별 평균연봉을 구할 수 있다
데이터 전처리
import pandas as pd
import numpy as np
import cufflinks as cf # 시각화 관련 library
# cufflinks 관련 옵션
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
salary = pd.read_csv('./large_data/국민연금공단_국민연금 가입 사업장 내역_20220331.csv',
encoding='cp949', low_memory=False)
pay = salary['당월고지금액']/salary['가입자수']
pay = pay * 12 * 100 / 9 # 국민연금 납부액을 통한 연봉추정액
salary['pay'] = pay
가산디지털단지 vs 판교테크노밸리
수도권 it산업단지 중 대표적인 2곳의 평균 연봉을 살펴보자.
개인적인 생각에 판교가 가산에 비해 기업문화, 회사의 성장가능성 등의 측면에서 우위에 있기 때문에 평균연봉또한 판교가 높을 것이라고 생각되었다.
gasan = salary[salary['사업장도로명상세주소'].str.contains('서울특별시 금천구 가산')]
pangyo = salary[salary['사업장도로명상세주소'].str.contains('경기도 성남시 분당구 판교')]
print(gasan['pay'].mean()) # 35476823.07607453
print(pangyo['pay'].mean()) # 39328922.509835914
단순 기업기준 평균 연봉은 크게 차이가 나지않았다. 하지만 실제 개인별 연봉을 계산하기 위해서는 각 기업의 사원수로 가중치를 부여해 계산해야한다.
예를들어 A라는 지역에 2개의 회사가 있고, 사원수는 각각 1000명, 10명 / 평균 연봉은 각각 5천만원 / 3천만원 일 때, 단순 기업 평균 연봉은 4천만원으로 왜곡된 수치가 도출된다.
def get_mean_salary(df):
mean_salary = (df['pay']*df['가입자수']).sum() / df['가입자수'].sum()
return mean_salary
print(get_mean_salary(gasan)) # 37541855.80898015
print(get_mean_salary(pangyo)) # 46036217.2489639
이 결과, 두 지역의 평균연봉 차이는 900만원 정도로 적지않은 차이가 남을 알 수 있다.
지역별 평균연봉
전국 법정동 데이터를 이용해 위 데이터의 지역코드와 결합해 지역별 평균연봉을 계산한다.
상위 10개 지역
##
address_code = pd.read_csv('data/국토교통부_전국 법정동_20211217.csv', encoding='cp949')
address_code = address_code.fillna('')
address_code['주소'] = address_code[['시도명', '시군구명', '읍면동명', '리명']].agg(' '.join, axis=1)
address_code['주소길이'] = address_code['주소'].str.len()
address_code = address_code.sort_values('주소길이')
address_code['code'] = (address_code['법정동코드'] // 100000).astype(str)
address_code = address_code.drop_duplicates('code', keep='first')[['code', '주소']].reset_index(drop=True)
salary['code'] = salary['고객법정동주소코드'].astype(str).str[:5]
salary['pay_sum'] = salary['pay'] * salary['가입자수']
salary_region = salary.groupby('code').mean()
salary_region['pay_mean'] = salary_region['pay_sum'] / salary_region['가입자수']
salary_top10 = salary_region.sort_values('pay_mean').tail(10)
salary_top10 = salary_top10.reset_index()
salary_top10 = salary_top10.merge(address_code, on='code')
# plotting
salary_top10.iplot(kind='bar', x='주소', y='pay_mean')
평균연봉 상위 10개 지역은 위와 같다. 1,2,3위인 영통구, 동구, 이천시에는 각각 삼성전자, 현대차, SK하이닉스가 있고, 이 때문에 위와같은 결과가 나왔을 것이라고 생각한다.
4위인 나주시와 7위인 당진시 등은 위와같은 대기업이 없는것으로 알고있어, 연봉 상위지역에 위치한 이유를 살펴봤다.
salary[salary['code'] == '46170'].sort_values('가입자수', ascending=False)[['사업장명', 'pay', '가입자수']] # 나주시
salary[salary['code'] == '44270'].sort_values('가입자수', ascending=False)[['사업장명', 'pay', '가입자수']] # 당진시
살펴본 결과 나주에는 한전, 농어촌공사 등의 공기업이, 당진에는 현대제철 등 현대 계열사 기업이 위치해있음을 알 수 있었다.
결론
평균 연봉이 높은 지역은 예상대로 대기업이 위치한 곳들이었고, 대기업중에서도 제조기반 대기업이 위치한 경우가 많았다.
데이터를 살펴보기전에 사실 퍈교, 여의도 등 IT, 금융 기업들이 많이 분포한 곳의 평균연봉이 높을것이라고 생각되었는데 실제로는 그렇지 않았다.
그래서 좀더 정확한 분석을 위해서는 단순 국민연금액이 아닌 좀더 정확하게 급여액을 추정할 수 있는 데이터가 요구되며 블라인드, 잡코리아 등 관련 정보를 제공하는 사이트에서 데이터를 추출해 활용하는 방법 등으로 분석에 대한 보완이 가능할 것이다.