4/18 TIL

정희린·2025년 4월 18일

SQL 코드카타

93. Project Employees I

select project_id,
       round(avg(experience_years), 2) as average_years
from project p join employee e on p.employee_id=e.employee_id
group by project_id

쉬운 문제 ㄱㅅ합니다

오늘의 회고

와 팀플~!
우리 조가 선택한 데이터는 군집 - 금융이다
이것저것 제외하다 보니 선택하게 되었는데 할일이 굉장히 많지만..? 나름 재밌을거같기도 하고.. 모르겠다..
오늘은 전반적인 주제 선정 및 각자 EDA를 했다.
노트북 성능이 구린건지 테이블 하나가 무려 천만행 .. 이라 1분 넘게 돌아가서 답답해 죽을뻔 ㅠ

각 데이터에 대한 나만의 생각

  • 분류

    • 금융: 2개의 데이터셋, 잘 모르는 도메인이다 보니 어떤 식으로 접근해야 할지 잘 모르겠음….
    • 제조: 25개 파일.. 이지만 가이드북 친절, 해당 도메인에 대한 지식이나 관심은 없지만 폭넓게 다뤄보고 싶다면 시도해봐도 괜찮을 듯
      → 분류 데이터 장점은 선택 과제로 예시가 잘 드러나있음
  • 군집

    • 마케팅: 그나마 가장 흥미 있는 주제, 도메인에 대한 지식은 적어도 될듯, 데이터셋 1개 파일이라 join 필요 X, 데이터 이해에 대한 난이도는 쉬울듯
    • 금융: 데이터셋 3개, 비지도 학습으로 정해진 답이 없기에 의미있는 인사이트 뽑아낼 수 있을듯
  • 회귀(에어비앤비): 컬럼 72개 중 중요한 컬럼 고르기 힘들수도.. 목표나 선택 과제가 다른 주제들에 비해 불분명하다는 단점

  • 이상탐지(제조): 확실히 수행하면 도움은 될 듯 한데 ,,,, 어떻게 접근해야할 지 모르겠음

  • 종합: 일단 다른 조에서 잘 안하는 주제를 선정하고 싶은데, 군집은 인기 많을듯.
    회귀 선택한다면 고민해야할 부분이 많을지도. 그나마 가장 끌리는 듯
    분류는 금융, 제조 둘다 잘 모르는 분야라 자신 없음 ,, 그래도 한다면 의미 있을듯 ..

우리가 세운 프로젝트 목표!
➡️ 재무 상태 / 소비패턴에 따른 금융 상품 추천

1. 총 데이터 셋

  • cards_data: 총 6,146행, 13열
  • transactions_data: 총 13,305,915행, 12열
    • 특징: 2010년 ~ 2019년 10월 31일까지의 데이터
  • users_data: 총 2,000행, 14열
  • pk 값: 고객 ID

transactions_data 너무 큰데 기간을 정해 최근 3년 혹은 1년으로 제한해도 되지 않을까.. -> 주제에 따라 다를 듯
➡️ 최근 약 3년치의 데이터 (2017-01-01 ~ 2019-10-31)만 보기로 했음

2. 결측치 확인

  • Cards_data & users_data: 결측치 0
  • Transactions
    • merchant_state(가맹점 위치) - 1,563,700 -> 온라인
    • zip(가맹점 우편번호) – 1,652,706
    • errors(오류) – 13,094,522

3. 생각한 이상치 조건

  • Transaction 테이블
    • amount(거래 금액): (–) 인 값 (혹시 환불 금액일수도?)
    • 중복된 거래 내역 제거
    • 만료 기간보다 결제 기간이 더 이후
#2019년 데이터만 뽑기
df = pd.read_csv('raw data/transactions_data.csv', parse_dates=['date'])
df['year'] = df['date'].dt.year

df_2019 = df[df['year'] == 2019]
df_2019.to_csv('transactions_2019.csv')

#trans 테이블 '$' 제거
trans = pd.read_csv('transactions_2019.csv')

trans['amount'] = trans['amount'].str.replace('$', '', regex=False)
trans['amount'] = pd.to_numeric(trans['amount'], errors='coerce')

#음수 개수 확인
trans_mi = (trans['amount'] < 0).sum()
trans_mi

# 이상치 제거
trans = trans[trans['amount'] > 0]
trans

#users 테이블 '$' 제거
users['per_capita_income'] = users['per_capita_income'].str.replace('$', '', regex=False)
users['per_capita_income'] = pd.to_numeric(users['per_capita_income'], errors='coerce')
users

월요일까지 해올 것!

  • users (EDA 처리)
    - 나이 0살 이하
    - total_debt 부채 음수
    - per_capita_income, yearly_income 1인당소득, 연간소득 음수
    - credit_score 음수
    - num_credit_cards 보유 신용카드 수 0 >> 형진님 확인 / 없음
    - birth_date > expire_date
    - 상관관계도 보기 + 시각화

전체 흐름
분석 배경
- 시장 현황
- 문제 제기(또는 흥미)
- 프로젝트 목적
분석

  • 전체 데이터셋 EDA
    - 결측
    - 이상
    - 시각화(분포)
    - 고객/제품/판매자/대출상품
  • 상세분석(상관관계 및 통계적 가설검정이 사용될 수 있습니다. 또한 시장 동향자료가 배치되어도 좋습니다. )
    - 가설 1
    - 가설 1 결과 해석
    - 가설 2
    - 가설 2 결과 해석
  • ML
    - 실험 반복.
    - 인원을 나눠 K값 분배. 피쳐 변경하시면서 실험 결과값 기록 후 취합.
    - 클러스터 요약(1번군집은 OOO 이다)
    분석 결과
    - 클러스터별 인사이트 및 기대효과
    - 회고

우리 조 화이팅....

profile
스포츠 광인

0개의 댓글