본문 바로가기
문송충의 코딩하기/파이썬 데이터 분석

공공데이터 Open API를 통해 국내 주요 은행 현황 분석#1 with Python

by 동장군님 2021. 3. 20.
728x90
반응형

data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15061304

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

공공데이터 Open API에서 위 링크와 같이 국내 은행과 관련된 데이터를 제공하고 있어 오늘 포스팅을 시작으로 해서 국내 메이저 은행에 대해 분석해보고자 한다. 신한지주에 상당한 돈이 들어간 주주 입장으로서 이번 분석이 꽤 재미있을 것 같아서 시작해보았다. 오늘은 간단하게 국내 은행들의 임직원 수를 알아보도록 하겠다.

 

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import pandas as pd
import xmltodict
import json
from datetime import datetime as dt
import requests

key='~~'
url=f'http://apis.data.go.kr/1160100/service/GetDomeBankInfoService/getDomeBankGeneInfo?serviceKey={key}&'
queryParams =urlencode({quote_plus('pageNo') : '1',quote_plus('numOfRows') : '1000',
                        quote_plus('resultType') : 'xml',quote_plus('title') : '은행_일반현황_임직원현황(18.12월이후)',
                        quote_plus('basYm') : '202012'
                       })

url2=url+queryParams
response = urlopen(url2) 
results = response.read().decode("utf-8")
results_to_json = xmltodict.parse(results)
data = json.loads(json.dumps(results_to_json))
df=pd.DataFrame(data['response']['body']['table']['items']['item'])

위 파이썬 쿼리가 문제 없다면 아래와 같은 은행별 임직원 수 데이터를 확인할 수 있을 것이다.

 

 

 

 

 

위에서 추출한 데이터를 가지고 국내 메이저 은행별 임직원 수를 시각화해보도록 하겠다.

 

df['xcsmCnt']=df['xcsmCnt'].astype(int)
count=pd.DataFrame(df.groupby(['fncoNm']).sum()['xcsmCnt']).reset_index()
count.columns=['Bank','Employees']
count=count.sort_values(by='Employees',ascending=False)
count=count[(count['Bank'] != '일반은행') & (count['Bank'] != '특수은행')]
count['Bank']=count['Bank'].str.replace('주식회사','')
count=count.reset_index().drop('index',axis=1)

import seaborn as sns
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = 'Malgun Gothic'

fig, ax1 = plt.subplots(figsize=(25,10))
color = 'tab:green'
ax1.set_xlabel('은행', fontsize=14)
ax1.set_ylabel('총임직원 수', fontsize=12)
ax1 = sns.barplot(x=count.Bank, y='Employees', data = count, palette='summer')
ax1.tick_params(axis='y')
ax1.set_xticklabels(labels=count.Bank,rotation=45,fontsize=10)


for i in range(len(count)):
    ax1.annotate(f"{count['Employees'][i]}", 
                   xy=(i, count['Employees'][i]+1000),
                   va = 'center', ha='center',fontweight='light',fontsize=15,
                   color='#4a4a4a')

 

확인 결과 아래 그래프 처럼 총 19개 은행들에 대한 데이터를 볼 수 있다. 역시나 국민은행, 농협은행, 우리은행, 신한은행, 중소기업은행, 하나은행 메이저 은행에서 임직원 수가 기타 지방은행 대비 압도적으로 많은 점을 확인할 수 있다. 그리고 카카오뱅크나 케이뱅크처럼 오프라인 은행 지점이 없는 인터넷 은행의 경우 임직원 수가 국민은행 대비 약 5% 정도에 불과하다.

 

다음은 주요 재무 지표를 가져와서 한번 분석해도록 하겠다.

 

 

728x90
반응형

댓글