데이터 전처리: 데이터 프레임과 SQL – 데이터프레임 변환

ㅁ 데이터 프레임과 SQL

ㅇ 정의:
데이터프레임 변환은 데이터 분석 과정에서 원본 데이터프레임의 구조, 컬럼, 데이터 타입, 값 등을 변경하여 분석 목적에 맞게 가공하는 작업을 의미한다. Pandas, R, PySpark 등 다양한 환경에서 지원된다.

ㅇ 특징:
– 컬럼 추가, 삭제, 이름 변경, 데이터 타입 변환, 결측치 처리, 그룹화, 피벗, 병합/조인 등의 다양한 작업을 포함한다.
– 메모리 기반 연산이므로 대용량 데이터에서는 성능 저하가 발생할 수 있다.
– SQL의 SELECT, WHERE, GROUP BY, JOIN 등의 기능과 유사하게 수행 가능하다.

ㅇ 적합한 경우:
– 데이터 분석 전 전처리 단계에서 데이터 구조를 재구성해야 할 때
– 서로 다른 데이터 소스를 통합하거나, 분석 목적에 맞게 피처 엔지니어링을 수행할 때
– SQL 없이도 코드 기반으로 데이터 조작이 필요한 경우

ㅇ 시험 함정:
– 데이터프레임 변환과 데이터 복사의 차이를 혼동하기 쉬움 (얕은 복사 vs 깊은 복사)
– 인덱스 초기화(reset_index) 시 drop 옵션을 잘못 사용하여 원본 인덱스가 컬럼으로 남는 경우
– inplace=True 사용 시 반환값이 None이라는 점을 간과

ㅇ 시험 대비 “패턴 보기” 예시:
O: 데이터프레임에서 특정 컬럼만 선택하여 새로운 데이터프레임을 만들 수 있다.
O: 데이터프레임 변환 작업에는 컬럼명 변경, 데이터 타입 변환 등이 포함된다.
X: 데이터프레임 변환은 SQL에서만 수행 가능하다.
X: inplace=True를 사용하면 항상 원본과 사본이 모두 변경된다.

ㅁ 추가 학습 내용

데이터프레임 변환 시 자주 쓰이는 주요 메서드와 개념 정리

1. assign() vs 직접 대입
– assign(): 새로운 데이터프레임을 반환하며 메서드 체이닝에 유리
– 직접 대입: 원본 데이터프레임에 바로 열을 추가 또는 수정

2. astype()을 통한 데이터 타입 변환
– 지정한 타입으로 변환
– 변환 불가능한 값이 있을 경우 오류 발생
– errors=’ignore’ 또는 errors=’raise’ 옵션으로 처리 방식 지정 가능

3. merge()의 how 옵션
– inner: 양쪽 데이터프레임에 모두 존재하는 키만 결합
– left: 왼쪽 데이터프레임의 키를 모두 유지, 오른쪽은 매칭되는 값만 결합
– right: 오른쪽 데이터프레임의 키를 모두 유지
– outer: 양쪽 데이터프레임의 모든 키를 유지하며 매칭되지 않는 부분은 NaN 처리

4. pivot vs pivot_table
– pivot: 인덱스, 열, 값 지정하여 형태 변환, 중복 키 존재 시 오류 발생
– pivot_table: 집계 함수(aggfunc) 사용 가능, 중복 키 처리 가능

5. melt()
– wide 형식 데이터를 long 형식으로 변환
– id_vars: 식별자 열 지정
– value_vars: 변환할 열 지정

6. SQL과의 비교 관점
– groupby-agg: SQL의 GROUP BY와 집계 함수에 해당
– query(): SQL의 WHERE 절과 유사하게 조건 필터링
– isin(): SQL의 IN 조건과 유사

7. 대용량 데이터 처리
– chunk 단위 로딩: read_csv 등에서 chunksize 지정하여 메모리 절약
– 메모리 절약형 데이터 타입 변환: category 타입으로 변환하여 메모리 사용량 감소

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*