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)”라고 부르기도 합니다.
- 결측치 처리
- df.dropna(): 결측치가 있는 행(또는 열)을 제거
- df.fillna(0): 결측치를 0으로 대체(혹은 평균값 등 다른 값으로 대체)
- 이상치(Outlier) 처리
- 극단적으로 높은/낮은 값이나 논리적으로 말이 안 되는 값들을 제거하거나 대체
- 스케일링(Scaling) / 인코딩(Encoding)
- 모델링 등을 위해 숫자 값을 표준화(Standardization)나 정규화(Min-Max Scaling)
- 범주형(Categorical) 데이터를 One-Hot 인코딩, Label 인코딩 등으로 변환
- 파생변수(Feature Engineering)
- 기존 컬럼들을 조합해 새로운 컬럼(예: 날짜 → 요일, 주차, 분기 등)을 생성
4. 정리
- sep='\t': 탭으로 구분된 파일(예: TSV)을 읽을 때 필요한 옵션이며, 일반적인 CSV(쉼표) 파일에는 사용하지 않아도 됩니다.
- 데이터 파일을 불러올 때는 인코딩(한글 문제), 헤더 여부, 결측치 처리 방법 등을 꼭 확인하는 게 중요합니다.
- 불러온 후에는 df.head(), df.info(), df.describe() 등을 통해 컬럼 유형, 결측치, 통계량 등을 확인하고, 필요하다면 전처리 작업(결측치/이상값 처리, 인코딩, 스케일링, 파생변수 생성 등)을 진행합니다.
- 결국 “정확하게 불러오기 + 잘 정돈하기 + 모델이나 분석에 적합하게 변형하기” 라는 단계를 거친 후, 본격적인 데이터 분석이나 머신러닝 모델링을 수행하게 됩니다.
728x90
'DATA > Python' 카테고리의 다른 글
RFM 개념 (0) | 2025.02.05 |
---|---|
DA를 위한 Pandas 학습 기록 (0) | 2025.02.01 |
Pandas에서 데이터 인덱싱 정리 & 예시 (0) | 2025.02.01 |
행복지수 시도별 분석 및 시각화 실습 (0) | 2024.08.28 |
[Python] 조코딩 - 점프투파이썬 강의 독학 D+7 (0) | 2024.06.20 |