본문 바로가기

DATA/Python

read_csv() 함수 주요 파라미터

 


1. read_csv() 함수 주요 파라미터

1.1 sep / delimiter

  • sep='\t' 또는 delimiter='\t': 탭으로 구분된 데이터를 읽을 때 사용
  • 기본값은 sep=',' 이므로, 일반 CSV(쉼표) 파일은 별도 설정 없이 읽을 수 있습니다.

1.2 header

  • header=0 (기본값): 첫 번째 행을 컬럼 이름으로 사용
  • header=None: 컬럼 이름이 따로 없을 때 사용 (이 경우 자동으로 0, 1, 2, ...라는 숫자가 컬럼명이 됨)
  • 특정 행(예: 2행)을 컬럼명으로 쓰고 싶다면 **header=1**처럼 인덱스를 지정할 수 있습니다.

1.3 names

  • CSV 파일에 컬럼명이 없거나, 사용자가 직접 컬럼명을 지정하고 싶을 때 사용합니다. 
  • df = pd.read_csv('data.csv', sep='\t', header=None, names=['col1', 'col2', 'col3'])

1.4 index_col

  • 특정 칼럼을 DataFrame의 인덱스로 사용하고 싶을 때 사용합니다.
    df = pd.read_csv('data.csv', index_col='UserID')
    

1.5 usecols

  • 불러올 컬럼을 특정 컬럼만 지정해 메모리를 절약하거나, 필요한 부분만 로드할 수 있습니다.
    df = pd.read_csv('data.csv', usecols=['CustomerID', 'Sales'])
    

1.6 dtype

  • 불러올 때 각 컬럼의 자료형(예: int, float, str)을 지정할 수 있습니다.
    대용량 파일에 유리하며, 어떤 컬럼이 숫자인지 문자인지 명확히 알고 있으면 불필요한 형 변환을 줄일 수 있습니다.
    df = pd.read_csv('data.csv', dtype={'CustomerID': str, 'Sales': float})
    

1.7 parse_dates

  • 특정 컬럼(또는 여러 컬럼)을 날짜 형식으로 자동 변환해줍니다.
    df = pd.read_csv('data.csv', parse_dates=['Date'])
    
  • 콤마, 슬래시 등으로 구분된 날짜(YYYY/MM/DD 등)만 정상적으로 인식될 수 있습니다.

1.8 na_values

  • 특정 값(예: '-', '?', 'NULL')을 결측치(NA)로 처리하고 싶다면 na_values 파라미터를 지정합니다.
    df = pd.read_csv('data.csv', na_values=['-', 'null', '?'])
    

1.9 encoding

  • 파일 인코딩(UTF-8, CP949, EUC-KR 등)이 다를 때, 에러가 발생하거나 한글이 깨질 수 있습니다.
    이때 Python이 인식할 수 있는 인코딩을 지정해주어야 합니다.
    df = pd.read_csv('data.csv', encoding='utf-8')
    
  • 윈도우에서 만든 엑셀 CSV 파일이라면 encoding='cp949' 혹은 encoding='euc-kr' 등이 필요할 수 있습니다.

2. 데이터 불러온 뒤 확인해야 할 사항

2.1 df.head(), df.tail(), df.shape

  • df.head(): 상위 몇 개 행(기본 5개)을 확인
  • df.tail(): 하위 몇 개 행을 확인
  • df.shape: 데이터의 (행 개수, 열 개수)를 확인

2.2 df.info()

  • 각 컬럼의 자료형(Dtype), 결측치(Non-Null count) 여부 등을 확인할 수 있습니다.
  • 데이터가 예상한 대로 잘 불러와졌는지, 문자가 숫자로 잘못 인식되거나 숫자가 문자열로 인식되지 않았는지 확인하세요.

2.3 df.describe()

  • 숫자 데이터(columns)들에 대한 기초 통계량(평균, 표준편차, 최소값, 최대값, 사분위수 등)을 확인합니다.
  • 데이터를 전반적으로 이해하는 데 유용하며, 이상치(Outlier)가 없는지 대략 파악할 수 있습니다.

2.4 컬럼명/인덱스 정리

  • 파일에 따라 컬럼명이 불규칙하거나, 헤더 행이 제대로 인식되지 않을 수 있습니다.
  • 이 경우 df.columns = [...] 와 같이 컬럼명을 다시 정의하거나, df.reset_index() 또는 df.set_index() 로 인덱스를 조정할 수 있습니다.

3. 넓은 의미의 전처리에 포함될 수 있는 항목

데이터 파일을 정확하게 읽어오는 건 “데이터 적재(Loading)” 과정에 해당합니다.
다만, 실무에서는 보통 “데이터 불러오기 + 결측값/이상값 처리 + 스케일링/인코딩 + 파생변수 생성” 등을 모두 묶어서 “데이터 전처리/준비(Preprocessing)”라고 부르기도 합니다.

  1. 결측치 처리
    • df.dropna(): 결측치가 있는 행(또는 열)을 제거
    • df.fillna(0): 결측치를 0으로 대체(혹은 평균값 등 다른 값으로 대체)
  2. 이상치(Outlier) 처리
    • 극단적으로 높은/낮은 값이나 논리적으로 말이 안 되는 값들을 제거하거나 대체
  3. 스케일링(Scaling) / 인코딩(Encoding)
    • 모델링 등을 위해 숫자 값을 표준화(Standardization)나 정규화(Min-Max Scaling)
    • 범주형(Categorical) 데이터를 One-Hot 인코딩, Label 인코딩 등으로 변환
  4. 파생변수(Feature Engineering)
    • 기존 컬럼들을 조합해 새로운 컬럼(예: 날짜 → 요일, 주차, 분기 등)을 생성

4. 정리

  1. sep='\t': 탭으로 구분된 파일(예: TSV)을 읽을 때 필요한 옵션이며, 일반적인 CSV(쉼표) 파일에는 사용하지 않아도 됩니다.
  2. 데이터 파일을 불러올 때는 인코딩(한글 문제), 헤더 여부, 결측치 처리 방법 등을 꼭 확인하는 게 중요합니다.
  3. 불러온 후에는 df.head(), df.info(), df.describe() 등을 통해 컬럼 유형, 결측치, 통계량 등을 확인하고, 필요하다면 전처리 작업(결측치/이상값 처리, 인코딩, 스케일링, 파생변수 생성 등)을 진행합니다.
  4. 결국 “정확하게 불러오기 + 잘 정돈하기 + 모델이나 분석에 적합하게 변형하기” 라는 단계를 거친 후, 본격적인 데이터 분석이나 머신러닝 모델링을 수행하게 됩니다.
728x90