퍼포먼스 마케터 부트캠프 5주 4일차 (참여 19일차)

MIN BAEK·2025년 6월 12일
0

데이터 타입 변환 및 날짜 처리

  • 데이터 타입 변환
    • 자주 발생하는 문제: CSV에서 숫자가 문자열로 읽히거나, 범주형/불리언 데이터가 문자열로 저장된 경우
    • df.dtypes: 현재 데이터 타입을 확인
    • astype(): 간단한 타입 변환 (df['컬럼'].astype(int/float))
      • 한계: 결측치나 변환 불가능한 값이 있으면 오류 발생
    • pd.to_numeric(): 문자열을 숫자로 변환할 때, errors='coerce' 옵션을 사용하면 변환 불가능한 값을 자동으로 NaN으로 처리
    • 콤마 포함 숫자 처리: df['컬럼'].str.replace(',', '').astype(float) - 콤마 제거 후 숫자로 변환
    • 불리언 타입 변환: df['컬럼'].map({'Yes': True, 'No': False}) - 문자열 'Yes'/'No' 등을 True/False로 매핑
  • 날짜 데이터 타입 다루기
    • 문제점: 문자열로 저장된 날짜는 날짜 계산이나 분석이 불가능
    • pd.to_datetime(): 대부분의 날짜 형식을 자동으로 인식하여 datetime64[ns] 타입으로 변환
    • 날짜 간 계산:
      • 차이 계산: (date_col_clean - other_date_col_clean).dt.days - 날짜 차이를 일(day) 단위로 계산
    • 날짜에서 정보 추출 (.dt 접근자)
      • .dt.year: 연도 추출
      • .dt.month: 월 추출
      • .dt.day_name(): 요일 이름 추출
      • .dt.dayofweek: 요일 번호 (월=0, 일=6)
      • .dt.quarter: 분기 추출
    • 비즈니스 분석을 위한 파생 변수
      • 주말 주문 여부: orders_df['order_date_clean'].dt.dayofweek >= 5

      • 빠른 배송 여부: orders_df['delivery_days'] <= 3

      • 신규 고객 여부: orders_df['days_since_signup'] <= 30

      • 연도-분기 조합: orders_df['order_date_clean'].dt.year.astype(str) + 'Q' + orders_df['quarter'].astype(str)

      • 월초/월말 주문 여부: orders_df['order_date_clean'].dt.day <= 7 또는 >= 25

        ✅ 판다스 중복 관련 함수 정리표

        함수명적용 대상반환 타입주요 기능 설명주 사용 목적
        drop_duplicates()DataFrame/SeriesDataFrame/Series중복된 행 또는 값 제거 (기본: 첫 번째만 남김)중복 행을 제거하고 깨끗한 데이터 만들기
        duplicated()DataFrame/SeriesSeries (bool)각 행(또는 값)이 중복인지 여부를 True/False로 반환중복 행만 필터링할 때 유용
        unique()Seriesnumpy.ndarray중복 없이 고유한 값들만 추출열(column)의 유일 값만 확인하고 싶을 때
        nunique()Series/DataFrameint고유한 값의 개수만 반환유니크 값 개수 통계 확인할 때
profile
안녕하세요 백민입니다:)

0개의 댓글