Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 

Repository files navigation

💳 우리카드 데이터 분석 프로젝트

📌 프로젝트 개요

본 프로젝트는 우리카드 이용 데이터를 기반으로 사용자 소비 행태를 분석하는 것을 목표로 합니다.
SQL을 활용해 원본 데이터를 전처리 및 가공한 후 Elasticsearch에 적재하고,
Kibana를 통해 주요 소비 지표를 시각화하였습니다.
이 과정에서 분석 방향의 타당성을 확보하고 데이터 전반의 특성과 분포, 변수 간 관계를 사전에 이해하기 위해
가설 기반 탐색적 데이터 분석(EDA)을 수행하였습니다.
데이터에 내재된 패턴과 경향성을 시각적으로 파악함으로써,
분석 결과에 대한 해석 가능성과 직관적 이해도를 높이고 가설의 유효성을 검토하였습니다.
이를 통해 사용자 소비 패턴을 파악하고, 분석 결과를 토대로
잠재 고객군을 정의하여 고객 유치 전략에 활용 가능한 인사이트를 도출합니다.


👥 팀원 소개

서지혜 김종연 이동욱

🧰 기술 스택

  • 🔍 분석 엔진: Elasticsearch v8.19.3
  • 🧹 데이터 가공: SQL, Dbeaver
  • 📊 시각화: Kibana v8.19.3
  • 🔗 버전 관리: Git / GitHub
  • 📝 협업 도구: GitKraken / Notion

🎯 프로젝트 목표

  1. SQL 기반 데이터 전처리를 통해 분석에 적합한 데이터 구조 설계
  2. 잠재 고객군 정의 및 소비 패턴 가설 수립
  3. Kibana 대시보드를 활용한 소비 패턴 시각화
  4. 고객 세분화 및 마케팅 전략 수립에 활용 가능한 인사이트 도출

🧹 데이터 전처리

1️⃣ 결측 행 제거 (cleaned_data.csv 생성)

분석에 필수적인 핵심 컬럼의 결측 행을 제거하여 데이터 품질을 확보했습니다.
해당 컬럼은 개수가 적고 수치형 데이터가 아니므로 행 제거 방식이 적절하다고 판단했습니다. image image

  • read_csv_auto()를 활용한 CSV 자동 스키마 인식
  • WHERE 절을 통해 결측값이 없는 행만 필터링
  • COPY TO 구문으로 cleaned_data.csv 생성
  • 이후 SQL 가공 및 Elasticsearch 적재에 활용

2️⃣ 결측값 0 치환 (final_data.csv 생성)

수치 연산 안정성을 위해 잔여 결측값을 0으로 치환했습니다.

image
  • COALESCE() 함수로 NULL → 0 변환
  • EXCLUDE()를 사용해 기존 컬럼 제외 후 재정의
  • 모든 결측값이 제거된 최종 데이터셋 생성

🤔 문제 정의 & 가설 수립

❓ 문제 정의

본 프로젝트의 핵심 과제는
우리카드 이용 데이터를 분석하여 잠재 고객을 정의하고 소비 패턴을 도출하는 것입니다.

잠재 고객은 다음 두 유형으로 정의했습니다.

  • 🚫 우리카드를 사용하지 않는 고객
  • ⬇️ 우리카드를 사용하지만 회원 등급이 낮은 고객

✅ 가설

  • 가설 1
    디지털 앱 사용 고객이 비사용 고객보다 카드 이용량이 높을 것이며, 앱 기반 마케팅을 통해 고객 전환 및 등급 상향이 가능할 것이다.

  • 가설 2
    경제활동이 시작되는 30대의 신용카드 사용률은 낮을 것이며, 30대를 타켓 마케팅을 통해 수익 향상이 가능할 것이다.

  • 가설 3
    하위 등급(해당없음/일반) 고객의 결제 수단을 체크카드에서 신용카드로 전환 유도한다면, 이용 금액 증대와 함께 은행의 가맹점 수수료 수익이 극대화될 것이다.


🔍 검증 계획

Kibana 대시보드를 활용하여 다음 지표를 시각화하고 가설을 검증합니다.

  • 체크카드 vs 신용카드 이용 패턴
  • 디지털 앱 사용자 vs 비사용자 이용량 비교
  • 회원 등급별 소비 클러스터링

⚙️ 실행 결과

  • 📊 Kibana 대시보드를 활용한 소비 패턴 시각화

가설 1


image image

[인사이트 1] 디지털 채널 가입 여부에 따른 이용 금액 격차

  • 발견
    데이터 분석 결과, 디지털 채널(모바일 앱) 가입 고객의 월 평균 총 이용 금액이 비가입 고객 대비 월등히 높게 나타났습니다. 특히 디지털 채널 가입 고객 중에서도 라이프스타일이 자녀가 있거나 신혼인 고객군은 타 고객군 대비 카드 사용 빈도와 이용 금액 모두 높은 수준을 보였습니다.

  • 활용
    디지털 채널 미가입 고객을 대상으로 앱 가입 유도 캠페인을 강화할 필요가 있으며, 그중에서도 자녀가 있거나 신혼인 고객을 핵심 타겟으로 설정할 경우 마케팅 효율을 극대화할 수 있습니다.

가설 2


image image

[인사이트 1] 30대의 신용카드 사용 패턴

  • 발견
    데이터 분석 결과, 전체 결제 금액 기준(sum)으로는 30대 신용카드 비중이 다른 연령대와 비슷한 수준이지만, 고객별 중앙값(median) 기준으로는 신용카드 비중이 다른 연령대에 비해 현저하게 낮게 나타났습니다. 이는 30대 대다수 고객이 일상 소액 결제에서 체크카드나 모바일페이를 많이 섞어 쓰는 패턴 때문으로 보입니다. 반면 고액 소비자는 거의 신용카드로 결제해 총액을 견인하는 구조가 뚜렷합니다.

  • 활용
    30대는 총 소비 규모로는 이미 신용카드가 주력이지만, 대부분 고객의 실제 결제 습관(median)으로는 체크·모바일 비중이 여전히 높아 전환 잠재력이 가장 큰 세대입니다. 따라서 30대를 핵심 타깃으로 일상 소액 특화 신용카드 혜택을 강화한 마케팅 캠페인을 집중하면 신용카드 이용 확대와 수수료 수익 증가를 동시에 달성할 수 있습니다.

가설 3


image image image image

[인사이트 1] 등급 상승과 신용카드 이용률의 정비례 관계 (가설 3 시각화 2 참고)

  • 발견
    데이터 분석 결과, 등급이 높아질수록 전체 이용액에서 신용카드 이용액 / 체크카드 이용액 비중이 가파르게 상승하는 패턴을 보입니다. 또한 해당없음 등급이 신용카드 대비 체크카드 이용 비중이 가장 높음을 알 수 있습니다.
  • 활용
    해당없음 고객이 신용카드를 발급할 경우, 고객 등급 상승의 직접적인 동인이 될 수 있으며(사용 총액 증가), 이는 곧 충성 고객 확보로 이어집니다. 즉, 해당없음 등급 고객이 신용카드로 결제 수단을 전환하도록 유도한다면, 고객 등급 상승과 카드사 수익성 개선이라는 두 가지 효과를 동시에 기대할 수 있습니다.

[인사이트 2] 소비 데이터 기반 업셀링 시점 포착 (가설 3 시각화 2 참고)

  • 발견
    해당없음 고객 중에서도 체크카드 이용 금액이 특정 수준(ex 월 30만 원 이상)을 넘는 우량 고객들이 존재합니다. 30만 원 이상 고액을 쓰는 사람의 비율 자체는 등급중 가장 낮지만 절대적인 고객 수는 가장 많기에 잠재고객을 유치할 수 있습니다.

  • 활용
    이들에게 실질적 혜택 수치(Benefit Value) 를 시각화하여 앱 푸시 알림을 발송할 경우, 충성 고객 증대 효과를 기대할 수 있습니다.

=> 해당없음 등급 내 우량 고객을 정교하게 타겟팅하여 신용카드로 유도한다면 카드사 측면애서 저수익 체크카드 이용자를 고수익 신용카드 유저로 전환하여 수익성을 개선할수 있습니다.

🚨 트러블슈팅

⚠️ 문제 상황

문제 1. 연령대별 소비 패턴 분석의 한계
원본 데이터에는 사용자의 연령 정보가 포함되어 있었으나, Kibana 상에서 이를 연령대별로 구분하여 소비 패턴을 분석하지 못하는 문제가 발생했습니다. 그 결과 연령대 간 소비 성향 비교 및 주요 타깃 고객군 도출이 제한되었고, 분석 결과의 활용 범위가 축소되었습니다.

문제 2. 프로젝트 초기 단계의 협업 및 커뮤니케이션 문제
프로젝트 초반에 명확한 분석 목표와 공통된 방향성에 대한 합의 없이 분석이 병렬적으로 진행되면서 작업 중복이 발생했습니다. 또한 팀원 간 데이터 해석 기준과 분석 관점이 달라, 중간 결과를 공유하는 과정에서 분석 방향성이 일관되지 않는 문제가 지속적으로 나타났습니다.


🧩 원인

문제 1 관련 원인
연령 정보가 단일 수치 컬럼으로만 존재했으며, 이를 연령대 단위의 그룹 컬럼으로 전처리하지 않은 상태에서 시각화를 시도한 것이 주요 원인이었습니다. 또, 프로젝트 초기 단계에서 각 데이터 컬럼의 의미와 활용 가능성에 대한 충분한 토의가 이루어지지 않아 분석에 적합한 파생 변수를 사전에 설계하지 못했습니다. 이로 인해 Kibana의 집계 및 시각화 기능을 충분히 활용하지 못했습니다.

문제 2 관련 원인
프로젝트 시작 시 분석 목표, 역할 분담에 대한 사전 합의가 부족했습니다. 특히 데이터 탐색 과정을 거치지 않고 바로 분석에 들어가면서, 팀원마다 데이터에 대한 이해 수준과 문제 인식이 달랐습니다. 이로 인해 유사한 분석을 중복 수행하거나, 서로 다른 기준으로 데이터를 해석하는 등 협업 과정에서 비효율이 발생했습니다.


🛠 해결 방법

문제 1 해결 방안
컬럼 정의서 및 전처리 체크리스트를 작성하여, 연령대와 같은 분석 핵심 변수를 사전에 명확히 정의했습니다. 본 프로젝트에서는 연령대 분석의 한계를 보완하기 위해 회원 등급을 대체 변수로 활용하여 소비 수준과 이용 패턴을 간접적으로 분석하는 방향으로 전략을 수정했습니다.

문제 2 해결 방안
분석 주제와 최종 목표를 재정의한 후 팀원별 역할을 명확히 재분배하여 각자의 분석 범위를 구분했습니다. 데이터 해석 기준과 분석 방향을 지속적으로 조율했습니다. 개별 분석 결과 중심의 작업 방식에서 벗어나 결과 공유와 피드백을 중심으로 협업을 진행함으로써, 중복 작업을 최소화하고 팀 단위의 일관된 분석 결과를 도출할 수 있었습니다.

About

Woori-card-Data-elasticProject

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors