본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] CSV 파일 읽기 & 쓰기 완벽 가이드 : csv 모듈부터 pandas까지

by Papa Martino V 2025. 7. 25.
728x90

CSV 파일 읽기 & 쓰기 완벽 가이드 : csv 모듈부터 pandas까지
[PYTHON] CSV 파일 읽기 & 쓰기

 

CSV(Comma-Separated Values) 파일은 가장 널리 사용되는 데이터 저장 형식 중 하나로, 다양한 플랫폼과 언어에서 쉽게 읽고 쓸 수 있다는 장점이 있다. Python은 이러한 CSV 파일을 손쉽게 다룰 수 있는 csv 모듈과 pandas 라이브러리를 제공한다.

본 글에서는 Python에서 CSV 파일을 읽고 쓰는 기본 방법부터, 실무에서 유용한 고급 활용 팁까지 실제 코드 예제와 함께 상세히 소개한다. 특히 csv 모듈과 pandas의 차이점, 각 방식의 장단점도 비교하여 독자의 실력 향상에 실질적인 도움을 줄 것이다.

1. CSV 파일이란?

CSV는 각 행이 레코드(record)를 나타내고, 각 열이 쉼표(,)로 구분되는 단순한 텍스트 파일이다. 구조는 단순하지만 Excel, 데이터베이스, R, Python 등에서 모두 호환되며, 데이터 분석 초기 단계에서 자주 사용된다.

이름,나이,직업
김철수,28,개발자
박영희,31,디자이너

2. Python의 csv 모듈로 CSV 읽기

2.1. 기본 읽기

import csv

with open('example.csv', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
  • csv.reader: 각 줄을 리스트 형태로 반환
  • newline=''은 윈도우에서 줄바꿈 처리 오류 방지용

2.2. 딕셔너리로 읽기

with open('example.csv', newline='', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        print(row['이름'], row['직업'])

헤더를 기준으로 키-값 딕셔너리 형태로 반환해 가독성과 활용성이 좋다.

3. Python의 csv 모듈로 CSV 쓰기

3.1. 리스트로 쓰기

data = [
    ['이름', '나이', '직업'],
    ['홍길동', '35', '기획자'],
    ['이몽룡', '30', '마케터']
]

with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerows(data)

3.2. 딕셔너리로 쓰기

fieldnames = ['이름', '나이', '직업']
rows = [
    {'이름': '심청이', '나이': 25, '직업': '연구원'},
    {'이름': '성춘향', '나이': 29, '직업': '교사'}
]

with open('dict_output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

4. pandas로 CSV 읽기

pandas는 데이터 분석에 최적화된 고급 도구로, CSV를 DataFrame 객체로 읽어와 다양한 전처리 작업이 가능하다.

import pandas as pd

df = pd.read_csv('example.csv')
print(df.head())
  • 자동 인코딩 감지 (또는 encoding='utf-8-sig' 사용 권장)
  • 누락 데이터, 타입 추론, 헤더 처리 등 자동화됨

5. pandas로 CSV 쓰기

df.to_csv('new_output.csv', index=False, encoding='utf-8-sig')
  • index=False는 행 번호를 파일에 저장하지 않음
  • utf-8-sig는 Excel에서 한글이 깨지지 않도록 BOM 포함

6. csv vs pandas: 비교 정리

항목 csv 모듈 pandas
학습 곡선 낮음 (기초적) 중간 (DataFrame 이해 필요)
성능 작은 파일에 적합 대규모 파일 처리에 우수
데이터 처리 기능 제한적 강력함 (필터, 그룹 등)
Excel 연동 간단 다양한 인코딩 지원
파일 구조 가정 명시적 필요 자동 추론

7. 실전 팁

  • 엑셀에서 열면 한글이 깨질 때: utf-8-sig 인코딩 사용
  • 줄바꿈 포함 데이터: quotechar='"' 옵션 추가 필요
  • 빈 값 처리: pandas에서 na_values로 지정 가능
  • 대량 쓰기 최적화: pandas에서 chunksize를 사용해 분할 처리

결론: 상황에 따라 유연하게 도구 선택하자

Python의 csv 모듈과 pandas는 각각의 장점이 있으며, 프로젝트의 규모와 복잡도에 따라 적절히 선택하여 사용할 수 있다. 간단한 입출력에는 csv 모듈이 가볍고 빠르며, 복잡한 데이터 처리나 전처리 작업에는 pandas가 강력한 기능을 제공한다. CSV는 단순한 형식이지만, 그 안에 담긴 데이터의 가치는 매우 크다. 데이터를 안전하게 읽고, 정확하게 쓰는 것은 데이터 중심 프로그래밍의 기본 중 기본이다.


출처 (References)

728x90