본문 바로가기
학습/AI

데이터 전처리 핵심

by 황성안 2025. 11. 16.
728x90
반응형

🧠 데이터 전처리 핵심 요약

(결측치 처리 + 통계 함수 + 정규표현식)


🩺 1️⃣ 결측치 처리 함수

결측치(Null, NaN)는 비어 있거나 누락된 데이터를 의미합니다. 이 데이터를 적절히 처리하지 않으면 통계나 모델 학습 결과가 왜곡됩니다.


isnull()

결측치 여부(True/False)를 확인하는 함수

import pandas as pd

df = pd.DataFrame({
    '이름': ['홍길동', '이몽룡', '성춘향', None],
    '나이': [23, None, 19, 22]
})

print(df.isnull())
이름 나이
False False
False True
False False
True False

dropna()

결측치가 포함된 행(row)이나 열(column)을 삭제

df_drop = df.dropna()
print(df_drop)
이름 나이
홍길동 23.0
성춘향 19.0

🔸 기본값은 axis=0 (행 삭제) 🔸 axis=1로 설정하면 열(column)을 삭제 🔸 how='any' → 결측치 1개라도 있으면 삭제 🔸 how='all' → 모든 값이 NaN일 때만 삭제


💡 참고: 결측치 채우기

df['나이'].fillna(df['나이'].mean(), inplace=True)

➡ 평균값으로 결측치를 대체


📊 2️⃣ 간단한 통계 함수

Pandas에서 자주 사용하는 기본 분석 함수입니다. 데이터프레임의 형태, 요약통계, 값 분포 등을 한눈에 확인할 수 있습니다.


info()

데이터의 구조, 컬럼별 데이터 타입, 결측치 개수 확인

df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   이름     3 non-null      object
 1   나이     3 non-null      float64

describe()

숫자형 데이터의 요약 통계량 출력 (평균, 표준편차, 최소/최대, 사분위수)

df.describe()
count mean std min 25% 50% 75% max
               

value_counts()

시리즈(단일 컬럼)의 각 값별 등장 횟수 확인

df['이름'].value_counts()
홍길동    1
이몽룡    1
성춘향    1

옵션: normalize=True → 비율로 표시 sort=False → 원래 순서대로 표시


unique()

컬럼에 포함된 고유값(중복 제거된 값) 리스트 출력

df['이름'].unique()
# array(['홍길동', '이몽룡', '성춘향', None], dtype=object)

🔤 3️⃣ 정규표현식(Regular Expression, RegEx)

정규표현식은 특정 패턴의 문자열을 검색하거나 정제하는 규칙 언어입니다. 텍스트 전처리, 데이터 정제, 토큰화 등에서 자주 사용됩니다.


✅ 기본 문법 요약

패턴 의미 예시
. 임의의 한 문자 a.b → “acb”, “a_b”
\d 숫자 (0~9) \d{3} → 숫자 3자리
\w 문자+숫자 \w+ → 단어
\s 공백 문자 \s+ → 공백 1개 이상
^ 문자열 시작 ^abc → “abc123”
$ 문자열 끝 xyz$ → “123xyz”
[] 문자 집합 [A-Za-z] → 영문자
{n,m} 반복 횟수 \d{2,4} → 2~4자리 숫자
+ 1회 이상 반복 ㅋ+ → “ㅋㅋㅋ”
? 0~1회 ab?c → “ac”, “abc”
` ` OR 조건

✅ Python에서 사용하기

import re

# 패턴 정의
p = re.compile("010-?[0-9]{4}-?\\d{4}")

# 문자열 탐색
p.search("전화번호: 010-1234-5678")  # 매칭됨
p.search("전화번호: 01012345678")    # 매칭됨
p.search("전화번호: 010-12-5678")    # 매칭 안 됨

✅ 문자열 치환 (replace)

text = "오늘은 ㅋㅋㅋㅋ 너무 즐거운 날이야ㅎㅎㅎ"
clean_text = re.sub("[ㅋㅎ]+", "", text)
print(clean_text)
# 오늘은  너무 즐거운 날이야

📘 전체 요약표

구분 함수/기법 주요 기능 예시
결측치 처리 isnull() 결측 여부 확인 df.isnull()
  dropna() 결측값 포함 행/열 제거 df.dropna()
기초 통계 info() 데이터 구조 요약 df.info()
  describe() 기본 통계량 계산 df.describe()
  value_counts() 빈도 수 집계 df['col'].value_counts()
  unique() 고유값 리스트 출력 df['col'].unique()
정규표현식 re.compile() 패턴 정의 p = re.compile(...)
  re.search() 패턴 검색 p.search(text)
  re.sub() 패턴 치환 re.sub(pattern, '', text)

✨ 한 줄 요약

isnull()·dropna()는 결측치 처리, info()·describe() 등은 데이터 요약, re(정규표현식)은 텍스트 정제의 강력한 도구다.


 

728x90
반응형