DATA/데이터전처리

[Python] 주민등록번호로 연령, 연령대 구하기

김쿼카 2024. 11. 18. 10:37


고객번호가 문자열일 때 처리하는 방법

 

from datetime import datetime

def calculate_age_from_id(id_number):
    if isinstance(id_number, str) and len(id_number) >= 2:  # 문자열인지 및 앞 2자리 확인
        two_digit_year = int(id_number[:2])  # 주민등록번호의 앞 2자리
        current_year = datetime.today().year
        current_century_year = int(str(current_year)[-2:])  # 현재 연도의 마지막 두 자리

        # 출생 연도를 2000년대와 1900년대로 구분하여 계산
        if two_digit_year <= current_century_year:
            base_year = 2000 + two_digit_year
        else:
            base_year = 1900 + two_digit_year

        age = current_year - base_year
        return age
    else:
        return None  # NaN 또는 유효하지 않은 값 처리
    
# '고객번호' 컬럼을 기반으로 '연령' 컬럼 추가
df['연령'] = df['고객번호'].apply(calculate_age_from_id)

# NaN 값을 0으로 대체한 후 연령대 구분값을 계산하여 '연령대' 컬럼 추가
df['연령대'] = (df['연령'].fillna(0) // 10).astype(int)