[Machine Learning] Pandas: 데이터 분석을 위한 필수 라이브러리

Date:     Updated:

카테고리:

태그:

🎯 Pandas: 데이터 분석의 핵심

Pandas는 파이썬의 데이터 분석 라이브러리로, 데이터 조작과 분석을 위한 강력한 도구를 제공한다. AI/ML 프로젝트에서 데이터 전처리와 탐색적 데이터 분석(EDA)에 필수적으로 사용된다.

1. Pandas의 역할

데이터 분석에서의 중요성

  • 구조화된 데이터 처리를 위한 직관적인 도구 제공
  • 대용량 데이터셋의 효율적인 처리
  • 다양한 파일 형식(CSV, Excel, SQL 등)과의 호환성
  • 강력한 데이터 전처리 및 변환 기능

실제 사용 사례

  1. 데이터 전처리
    • 결측치 처리
    • 이상치 탐지
    • 데이터 정제
    • 형식 변환
  2. 데이터 분석
    • 기술 통계 분석
    • 그룹화 및 집계
    • 시계열 데이터 분석

2. Pandas의 핵심 기능

DataFrame과 Series

import pandas as pd

# Series 생성 (1차원 데이터)
s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])

# DataFrame 생성 (2차원 데이터)
data = {
    'name': ['John', 'Anna', 'Peter'],
    'age': [28, 22, 35],
    'city': ['New York', 'Paris', 'London']
}
df = pd.DataFrame(data)

데이터 조작

# 데이터 선택
subset = df[['name', 'age']]  # 열 선택
filtered = df[df['age'] > 25]  # 조건부 필터링

# 결측치 처리
df.fillna(0)  # 결측치를 0으로 채우기
df.dropna()   # 결측치가 있는 행 제거

# 데이터 그룹화 및 집계
grouped = df.groupby('city').agg({
    'age': ['mean', 'max', 'min']
})

3. 데이터 분석 예제

기본적인 데이터 분석

# 데이터 불러오기
df = pd.read_csv('data.csv')

# 기술 통계량 확인
print(df.describe())

# 결측치 확인
print(df.isnull().sum())

# 상관관계 분석
correlation = df.corr()

시계열 데이터 분석

# 날짜 데이터 처리
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)

# 시계열 리샘플링
monthly = df.resample('M').mean()

# 이동평균 계산
rolling_mean = df['value'].rolling(window=7).mean()

4. 데이터 전처리 기법

범주형 데이터 처리

# One-Hot 인코딩
encoded = pd.get_dummies(df['category'])

# Label 인코딩
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['encoded_category'] = le.fit_transform(df['category'])

데이터 정규화

# Min-Max 스케일링
def min_max_scaling(series):
    return (series - series.min()) / (series.max() - series.min())

# Z-score 정규화
def standardization(series):
    return (series - series.mean()) / series.std()

df['scaled_value'] = min_max_scaling(df['value'])

5. 실전 팁

성능 최적화

  • 적절한 데이터 타입 사용
    # 메모리 사용량 줄이기
    df['integer_col'] = df['integer_col'].astype('int32')
    df['float_col'] = df['float_col'].astype('float32')
    
  • 효율적인 연산
    # apply 대신 벡터화된 연산 사용
    # Bad
    df['new_col'] = df['col'].apply(lambda x: x * 2)
      
    # Good
    df['new_col'] = df['col'] * 2
    

메모리 관리

  • 불필요한 열 제거
    # 필요없는 열 삭제
    df.drop(['unused_col1', 'unused_col2'], axis=1, inplace=True)
    
  • 청크 단위 처리
    # 대용량 CSV 파일 청크 단위로 읽기
    chunks = pd.read_csv('large_file.csv', chunksize=10000)
    for chunk in chunks:
        # 청크 단위로 처리
        process_chunk(chunk)
    

🎯 결론

Pandas는 데이터 분석과 전처리에 있어 필수적인 도구이다. 특히 AI/ML 프로젝트에서 데이터 준비 단계에서 매우 중요한 역할을 한다. 효율적인 데이터 처리와 분석을 위해서는 Pandas의 기능을 잘 이해하고 활용하는 것이 중요하다.

이번 포스팅은 간략한 소개 포스팅이고 다음 포스팅에서는 머신러닝, 딥러닝에서 데이터 준비 단계에서 어떻게 활용하는지 자세히 다룰 예정이다.

Machine Learning 카테고리 내 다른 글 보러가기