-
국내 신용카드사 이용 실적 기준 시장 점유율 분석(신한카드, 삼성카드, KB국민카드, 현대카드, 롯데카드, 우리카드)Data Analysis/Investment 2021. 6. 4. 23:36
삼성카드 주식을 보유한 주주로서 국내 신용카드 관련된 여러 연관 데이터를 계속해서 분석해보고자 한다. 첫 번째 포스팅은 카드 이용실적 기준으로 국내 신용카드 기업의 시장 점유율을 확인해보고자 한다. 데이터는 역시나 아래 공공데이터를 가지고 왔다.
https://data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15061308
금융위원회_금융통계신용카드사정보
타이틀 기준년월을 조회하여 신용카드사 일반현황, 재무현황, 주요경영지표, 주요영업활동 등의 정보를 제공하는 금융위원회_금융통계신용카드사정보
data.go.kr
데이터 가져오기
위 공공데이터 API를 통해 지난 15년부터 20년까지의 신용카드별 이용 실적 데이터를 가져오도록 하겠다. 쿼리는 다음과 같다.
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 data=[] key='~~' for i in range(2015,2021): for u in range(3,15,3): if u <10: date=str(i)+'0'+str(u) else: date=str(i)+str(u) url=f'http://apis.data.go.kr/1160100/service/GetCredCardCompInfoService/getCredCardCompMajoBusiActi?serviceKey={key}&' queryParams =urlencode({quote_plus('pageNo') : '1',quote_plus('numOfRows') : '1000', quote_plus('resultType') : 'xml',quote_plus('title') : '신용카드_주요영업활동_신용카드이용실적', quote_plus('basYm') : date }) url2=url+queryParams response = urlopen(url2) results = response.read().decode("utf-8") results_to_json = xmltodict.parse(results) d = json.loads(json.dumps(results_to_json)) data.extend(d['response']['body']['table']['items']['item']) df=pd.DataFrame(data) card_name={'현대카드㈜':'HyundaiCard','롯데카드㈜':'LotteCard','비씨카드㈜':'BCCard','삼성카드㈜':'SamsungCard', '신한카드㈜':'ShinhanCard','㈜케이비국민카드':'KBCard','㈜우리카드':'WooriCard','하나카드㈜':'HanaCard', '신용카드사':'Total' } df['name']=df['fncoNm'].apply(lambda x: card_name[x] if x in card_name else 'x')
위 쿼리가 문제없다면 아래와 같은 데이터를 받을 수 있다.
데이터 처리
위 테이블을 보면 데이터가 우리가 원하는 대로 이용실적 딱 나오지 않고 개인_일시불, 법인_일시불, 개인_현금서비스 등 데이터가 종류가 워낙 많이 분류되어 있다. 어차피 점유율만 볼 것이기 때문에 개인, 법인, 총 이용 실적만 필터링해서 분석하도록 하겠다.
import numpy as np cards=df[df['fncoNm']!='신용카드사'] cards_df=cards[cards['crcdUzAtrsItemCdNm'].str.contains('법인_이용실적|개인_이용실적|총계_이용실적')] cards_df['year']=cards_df['basYm'].apply(lambda x:x[0:4]) cards_df['crcdUzAtrsItemCmtlAmt']=cards_df['crcdUzAtrsItemCmtlAmt'].astype(np.int64) cards_year_df=pd.DataFrame(cards_df.groupby(['name','year','crcdUzAtrsItemCdNm']).sum()['crcdUzAtrsItemCmtlAmt']) cards_year_df=cards_year_df.reset_index() cards_year_df.columns=['card','year','data','amount'] cards_year_df_per=cards_year_df[cards_year_df['data']=='개인_이용실적'] cards_year_df_cor=cards_year_df[cards_year_df['data']=='법인_이용실적'] cards_year_df_tot=cards_year_df[cards_year_df['data']=='총계_이용실적']
위 코드를 돌리면 개인, 법인, 총 이용실적 기준 신용카드의 연도별 데이터를 확인할 수 있을 것이다.
데이터 시각화#1 - 총 이용실적 점유율
신한카드, 삼성카드, KB국민카드, 현대카드, 롯데카드, 하나카드, 우리카드 순으로 점유율을 보이고 있다. 다만 우려스러운 점은 내가 보유한 삼성카드 점유율은 계속해서 감소하고 있는 중이다. 반대로 최근 들어 여러 공격적인 프로모션을 통해서 현대카드가 조금씩 시장을 먹고 있는 중이다. 기존 Top 3 신한카드, 삼성카드, 국민카드의 점유율이 하락하고 있는 점은 주목해서 볼 필요가 있다.
pie_df=cards_year_df_tot.pivot(index='year',columns='card',values='amount') import plotly.graph_objects as go from plotly.subplots import make_subplots labels = pie_df.columns.tolist() # Create subplots: use 'domain' type for Pie subplot fig = make_subplots(rows=2, cols=3, specs=[[{'type':'domain'}, {'type':'domain'},{'type':'domain'}], [{'type':'domain'}, {'type':'domain'},{'type':'domain'}] ]) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2015'].values, name="2015"),1, 1) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2016'].values, name="2016"),1, 2) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2017'].values, name="2017"),1, 3) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2018'].values, name="2018"),2, 1) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2019'].values, name="2019"),2, 2) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2020'].values, name="2020"),2, 3) fig.update_traces(hole=.4, hoverinfo="label+percent+name") fig.update_layout( title_text="Card Market Share", # Add annotations in the center of the donut pies. annotations=[dict(text='2015', x=0.123, y=0.82, font_size=10, showarrow=False,), dict(text='2016', x=0.5, y=0.82, font_size=10, showarrow=False), dict(text='2017', x=0.88, y=0.82, font_size=10, showarrow=False), dict(text='2018', x=0.123, y=0.175, font_size=10, showarrow=False), dict(text='2019', x=0.5, y=0.175, font_size=10, showarrow=False), dict(text='2020', x=0.88, y=0.175, font_size=10, showarrow=False) ] ) fig.show() total=fig.to_json() for x,y in zip(list(card_name.keys()), list(card_name.values())): total=total.replace(y,x)
데이터 시각화#2 - 개인 이용실적 점유율
개인 이용카드 실적 부분에서는 삼성카드사가 증가하고 있어서 고무적이기는 하다. 신한카드가 감소하는 반면 현대카드와 함께 삼성카드는 꾸준히 점유율이 증가하고 있다.
pie_df_per=cards_year_df_per.pivot(index='year',columns='card',values='amount') import plotly.graph_objects as go from plotly.subplots import make_subplots labels = pie_df_per.columns.tolist() # Create subplots: use 'domain' type for Pie subplot fig = make_subplots(rows=2, cols=3, specs=[[{'type':'domain'}, {'type':'domain'},{'type':'domain'}], [{'type':'domain'}, {'type':'domain'},{'type':'domain'}] ]) fig.add_trace(go.Pie(labels=labels, values=pie_df_per.loc['2015'].values, name="2015"),1, 1) fig.add_trace(go.Pie(labels=labels, values=pie_df_per.loc['2016'].values, name="2016"),1, 2) fig.add_trace(go.Pie(labels=labels, values=pie_df_per.loc['2017'].values, name="2017"),1, 3) fig.add_trace(go.Pie(labels=labels, values=pie_df_per.loc['2018'].values, name="2018"),2, 1) fig.add_trace(go.Pie(labels=labels, values=pie_df_per.loc['2019'].values, name="2019"),2, 2) fig.add_trace(go.Pie(labels=labels, values=pie_df_per.loc['2020'].values, name="2020"),2, 3) fig.update_traces(hole=.4, hoverinfo="label+percent+name") fig.update_layout( title_text="Card Market Share", # Add annotations in the center of the donut pies. annotations=[dict(text='2015', x=0.123, y=0.82, font_size=10, showarrow=False,), dict(text='2016', x=0.5, y=0.82, font_size=10, showarrow=False), dict(text='2017', x=0.88, y=0.82, font_size=10, showarrow=False), dict(text='2018', x=0.123, y=0.175, font_size=10, showarrow=False), dict(text='2019', x=0.5, y=0.175, font_size=10, showarrow=False), dict(text='2020', x=0.88, y=0.175, font_size=10, showarrow=False) ] ) fig.show() total2=fig.to_json() for x,y in zip(list(card_name.keys()), list(card_name.values())): total2=total2.replace(y,x)
데이터 시각화#3 - 법인 이용실적 점유율
신용카드 입장에서 가장 중요한 시장이라고 볼 수 있는 법인 이용 부분을 보면 경쟁이 굉장히 치열하다는 점을 확인할 수 있다. 심히 걱정되는 점은 삼성카드의 법인 점유율이 15년 28%에서 20년 16%로 대폭 감소하였다. 20년 기준 독보적인 1위 기업이 없을 정도로 경쟁사끼리 차이가 거의 없다.
import plotly.graph_objects as go from plotly.subplots import make_subplots labels = pie_df.columns.tolist() # Create subplots: use 'domain' type for Pie subplot fig = make_subplots(rows=2, cols=3, specs=[[{'type':'domain'}, {'type':'domain'},{'type':'domain'}], [{'type':'domain'}, {'type':'domain'},{'type':'domain'}] ]) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2015'].values, name="2015"),1, 1) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2016'].values, name="2016"),1, 2) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2017'].values, name="2017"),1, 3) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2018'].values, name="2018"),2, 1) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2019'].values, name="2019"),2, 2) fig.add_trace(go.Pie(labels=labels, values=pie_df.loc['2020'].values, name="2020"),2, 3) fig.update_traces(hole=.4, hoverinfo="label+percent+name") fig.update_layout( title_text="Card Market Share", # Add annotations in the center of the donut pies. annotations=[dict(text='2015', x=0.123, y=0.82, font_size=10, showarrow=False,), dict(text='2016', x=0.5, y=0.82, font_size=10, showarrow=False), dict(text='2017', x=0.88, y=0.82, font_size=10, showarrow=False), dict(text='2018', x=0.123, y=0.175, font_size=10, showarrow=False), dict(text='2019', x=0.5, y=0.175, font_size=10, showarrow=False), dict(text='2020', x=0.88, y=0.175, font_size=10, showarrow=False) ] ) fig.show() total=fig.to_json() for x,y in zip(list(card_name.keys()), list(card_name.values())): total=total.replace(y,x)
신용카드 시장이 얼마나 치열한지 이번 분석을 통해서 알 수 있었고 삼성카드가 생각보다 많이 뒤처지고 있는 느낌을 받았다. 현대카드처럼 뭔가 좀더 고객에서 어필할 수 있는 공격적인 마케팅이 필요하지 않을까 싶다. 그냥 개인적인 생각이다. 다음 포스팅에서 계속해서 카드 관련된 데이터를 분석해보도록 하겠다.
'Data Analysis > Investment' 카테고리의 다른 글
미국 증시 상장된 식음료 ETF 종목 PBJ, FTXG 데이터 파이썬 분석 (0) 2021.06.06 20년 12월 기준 삼성카드(029780) 주주 분포 현황 분석 With Python (0) 2021.06.05 지난 5년간 국내 주요 시중은행 오프라인 지점 수 현황 분석 with Python, Plotly (0) 2021.06.02 구글트렌드 & 네이버 데이터랩으로 지난 1년간 국내 메이저 카드사 검색량 트렌드 분석 (0) 2021.06.02 국내 상장 시중 은행 18년 ~ 20년 배당 내역 분석 With Python, Open Dart API (0) 2021.05.18