데이터 전처리: 코딩 및 명령어
ㅁ 코딩 및 명령어
1. dropna(inplace=True)
ㅇ 정의:
데이터프레임이나 시리즈에서 결측치(NaN)가 포함된 행 또는 열을 제거하는 메서드로, inplace=True 설정 시 원본 객체를 직접 수정함.
ㅇ 특징:
– inplace=True를 사용하면 새로운 객체를 반환하지 않고 기존 객체를 변경함.
– axis 파라미터로 행(row) 또는 열(column) 기준 제거 가능.
– how=’any’ 또는 ‘all’로 결측치 제거 조건 설정 가능.
ㅇ 적합한 경우:
– 결측치가 있는 데이터 자체를 분석에서 제외해도 문제가 없는 경우.
– 데이터 양이 충분하여 일부 행/열 제거가 결과에 큰 영향을 주지 않는 경우.
ㅇ 시험 함정:
– inplace=True를 설정하지 않으면 원본이 변경되지 않음.
– axis 기본값은 0(행 기준)임을 혼동하기 쉬움.
ㅇ 시험 대비 “패턴 보기” 예시:
O: dropna(inplace=True)는 원본 데이터를 직접 수정한다.
X: dropna(inplace=True)는 항상 새로운 데이터프레임을 반환한다.
================
2. fillna()
ㅇ 정의:
결측치를 지정한 값이나 방법으로 대체하는 메서드.
ㅇ 특징:
– value 파라미터로 특정 값으로 대체 가능.
– method=’ffill'(이전 값으로 채움), method=’bfill'(다음 값으로 채움) 지원.
– inplace=True 가능.
ㅇ 적합한 경우:
– 결측치를 평균, 중앙값, 최빈값 등 통계값으로 채워야 하는 경우.
– 시계열 데이터에서 연속성 확보를 위해 이전/다음 값으로 채워야 하는 경우.
ㅇ 시험 함정:
– method와 value를 동시에 지정하면 value가 우선됨.
– inplace=True를 사용하지 않으면 원본 변경 안 됨.
ㅇ 시험 대비 “패턴 보기” 예시:
O: fillna(method=’ffill’)은 결측치를 직전 값으로 채운다.
X: fillna()는 결측치를 반드시 0으로만 채운다.
================
3. round()
ㅇ 정의:
수치 데이터를 지정한 소수점 자리수로 반올림하는 함수.
ㅇ 특징:
– DataFrame, Series 모두 적용 가능.
– decimals 파라미터로 반올림할 자릿수 지정.
– 기본값 decimals=0 은 정수로 반올림.
ㅇ 적합한 경우:
– 소수점 자릿수를 맞춰야 하는 경우.
– 보고서나 시각화에서 숫자 표현을 단순화할 때.
ㅇ 시험 함정:
– round()는 반올림이며, 버림/올림과 혼동하지 말 것.
– .5에서 짝수 쪽으로 반올림하는 Banker’s rounding이 적용됨.
ㅇ 시험 대비 “패턴 보기” 예시:
O: round(3.5) → 4, round(2.5) → 2
X: round(3.5) → 3
================
4. astype(int)
ㅇ 정의:
데이터의 자료형을 지정한 타입(int, float, str 등)으로 변환하는 메서드.
ㅇ 특징:
– Series나 DataFrame 열 단위로 사용.
– 변환 불가능한 값이 있으면 오류 발생.
– int로 변환 시 소수점 이하 버림.
ㅇ 적합한 경우:
– 모델 학습이나 연산을 위해 자료형을 통일해야 하는 경우.
– 범주형 데이터를 정수형 라벨로 변환할 때.
ㅇ 시험 함정:
– astype(int)는 반올림이 아니라 버림(truncation)임.
– NaN이 있으면 int 변환 불가.
ㅇ 시험 대비 “패턴 보기” 예시:
O: astype(int)는 float의 소수점 이하를 버린다.
X: astype(int)는 float를 반올림하여 int로 변환한다.
ㅁ 추가 학습 내용
dropna(): 결측치가 포함된 행이나 열을 제거하는 메서드. axis로 행(0) 또는 열(1) 지정 가능. subset 파라미터로 특정 열만 기준으로 결측치 여부를 판단하여 제거할 수 있음. how=’any’는 하나라도 결측치가 있으면 제거, how=’all’은 전부 결측치일 때만 제거. inplace=True로 원본 수정 가능.
fillna(): 결측치를 지정한 값이나 메서드로 채우는 메서드. value 파라미터로 특정 값 지정, method=’ffill’ 또는 ‘bfill’로 이전/다음 값으로 채움. inplace=True로 원본 수정 가능하지만, 새로운 변수에 결과를 할당하는 방식도 자주 사용됨. limit로 채울 결측치 개수 제한 가능.
round(): 숫자를 지정한 소수점 자리로 반올림. Banker’s rounding 규칙(짝수 쪽으로 반올림)을 사용. 예: 1.5 → 2, 2.5 → 2. numpy의 around()와 동작이 유사하지만, 일부 버전/환경에서 처리 방식 차이가 있을 수 있음.
astype(): 데이터 타입을 변환하는 메서드. int, float, str뿐 아니라 category, datetime64 등의 특수 자료형으로도 변환 가능. 변환 불가능한 값이 있으면 오류 발생. to_numeric(), to_datetime(), to_timedelta() 등은 변환 불가 값 처리 옵션(errors=’coerce’)을 제공하는 차이가 있음.
결측치 처리 시 주의사항: 결측치 제거(dropna)는 데이터 손실을 초래할 수 있으며, 채우기(fillna)는 데이터 왜곡 가능성이 있음. 처리 방법 선택 시 데이터의 특성, 결측치 비율, 분석 목적을 고려해야 함. 예외 상황(중요 변수의 결측치, 특정 패턴으로 발생한 결측치 등)에서는 단순 제거/대체가 적절하지 않을 수 있음.