🚨 처음 시도할 때 : lambda x: '10대' if x <20 else '20-30대' ...? 잉 여기서 어떻게 조건을 더 늘려야하지? 고민했음🤔!! 고민한 이유는 else와 '20-30대'가 한 묶음으로 생각했어서... 💡 위 코드처럼, if를 계속 적어주면 되지!
🔍 함수를 적용한 풀이법도 있더군!! (튜터님 해설집)
def to_age_group(x):
if x < 20: return '10대'
if x < 40: return '20-30대'
if x < 60: return '40-50대'
return '60대+'
df['age_group'] = df['age'].apply(lambda x: to_age_group(x))
print(df['age_group'].value_counts())
🚨 질문했던 문제!튜터님 왈: 결과가 잘못된 것 같은 때에는 연어처럼 위로 거슬러 올라가 하나씩 출력해볼 것!! - approx_birth_year.astype(str)을 하지 않아서 결과가 이상하게 나왔었다...ㅎㅎ - 문자열 + 문자열 연산이 가능하다!! (⬅️ 연도 문자열(str) + '-01-01'을 합친다!)
💡 튜터님 해설과 비교 해보자! 뭐가 이리 짧아??
birthdate_str = approx_birth_year.astype(str) + '-01-01'
# errors='coerce' : 형식에 맞지 않게 파싱되는 값들을 오류로 멈추지 않고 NaT(결측 시간)으로 바꾸라는 뜻
df['birthdate'] = pd.to_datetime(birthdate_str, errors='coerce')
print(df['birthdate'].dt.year.value_counts().sort_index().head())
🚨 내가 했던 실수? 기억을 거슬러... ➡️ '2024-12-31'을 변수에 저장하지 않고 진행 # 해설 참고 내용 처럼 새로운 열로 저장하고 주변 컬럼과 같이 뽑아 비교해 볼 것!!!
🔍 2024.csv
🚨 흔히 아는 날짜형식이 아니라 '계약일'과 같이 되어 있을 땐, datetime 변환시 ➡️ format='%Y%m%d' 활용
🚨 궁금증! na=False 는 왜 넣어주는가? - na=False → 결측은 False로 처리(= "빌라 아님") ➡️ 결과 시리즈가 깨끗한 bool 타입이 되어, .sum()이나 필터링이 수월! - na=True → 결측을 True로 처리(보통 원하지 않음) ➡️ 이 경우는 결측도 '빌라'인 것으로 됨. - 기본값(na 생략) → 결과에 NA가 그대로 남음
🚨 errors='coerce' : 형식에 맞지 않게 파싱되는 값들을 오류로 멈추지 않고 NaT(결측 시간)으로 바꾸라는 뜻