본문 바로가기

컴퓨터 과학/인공지능

CSV 파일 DataLoader로 불러오기

반응형

🧾 CSV 파일도 DataLoader로 불러올 수 있어? 당연하지!

이전 포스트에서는 PyTorch의 DataLoader로 MNIST 이미지 데이터를 불러와봤어요.
그런데 실제 프로젝트나 대회에서 만나는 데이터는 대부분 .csv, .txt, 혹은 직접 만든 데이터셋이죠?

그래서 오늘은:

  • CSV 파일 데이터를 불러오는 방법
  • Dataset 클래스를 상속해서 커스터마이징하는 방법
  • 그리고 실습 예제까지 깔끔하게 정리해드릴게요.

📦 목표: Titanic 생존자 예측 데이터를 DataLoader로 불러오자

 

Kaggle의 대표 입문용 데이터셋, Titanic 데이터를 사용하겠습니다.

 

 

✅ Step 1. CSV용 커스텀 Dataset 클래스 만들기

import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader

class TitanicDataset(Dataset):
    def __init__(self, csv_path):
        self.df = pd.read_csv(csv_path)

        # 간단한 전처리: 필요한 열만 선택하고 결측치 제거
        self.df = self.df[['Pclass', 'Sex', 'Age', 'Fare', 'Survived']].dropna()

        # 범주형 변수 → 숫자형
        self.df['Sex'] = self.df['Sex'].map({'male': 0, 'female': 1})

        # 입력(x), 정답(y) 분리
        self.X = self.df.drop('Survived', axis=1).values.astype('float32')
        self.y = self.df['Survived'].values.astype('int64')

    def __len__(self):
        return len(self.df)

    def __getitem__(self, idx):
        return torch.tensor(self.X[idx]), torch.tensor(self.y[idx])

 

✅ Step 2. DataLoader로 사용하기

# 커스텀 Dataset 인스턴스 생성
dataset = TitanicDataset('train.csv')

# DataLoader로 래핑
dataloader = DataLoader(dataset, batch_size=16, shuffle=True)

# 한 배치 확인해보기
for x_batch, y_batch in dataloader:
    print("🧮 Feature shape:", x_batch.shape)
    print("🎯 Label shape:", y_batch.shape)
    print("🎯 Label example:", y_batch[:5])
    break

 

이제 우리가 만든 TitanicDataset은 PyTorch 학습 파이프라인에 완벽하게 들어맞는 구조입니다.

 

 

🔁 이렇게 활용할 수 있어요!

  • 전처리 과정까지 Dataset 클래스에 통합하면 깨끗한 구조로 학습코드 유지 가능
  • collate_fn, transform 등 확장성도 Good
  • 텍스트, 이미지, 시계열, 그래프 등 모든 커스텀 데이터에 응용 가능!

💬 마무리 요약

  • DataLoader는 이미지뿐만 아니라 CSV, 텍스트 등 모든 데이터 타입과 함께 사용 가능
  • Dataset 클래스를 상속해서 정의하면 어떤 구조의 데이터도 불러올 수 있음
  • 실전에서는 전처리 + 로딩을 Dataset에 묶어두는 방식이 효율적!
반응형