
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)
'Artificial Intelligence > 60. Python' 카테고리의 다른 글
| [PYTHON] AWS Lambda로 서버리스 Python 애플리케이션 구축하기 (0) | 2025.07.25 |
|---|---|
| [PYTHON] Python 프로젝트에 Docker 적용하기: 개발과 배포를 혁신하는 방법 (0) | 2025.07.25 |
| [PYTHON] numpy reshape 완벽 가이드: 다차원 배열을 자유자재로 다루는 법 (0) | 2025.07.25 |
| [PYTHON] 파이썬 메모리 관리 완벽 가이드 : 참조부터 최적화까지 (0) | 2025.07.25 |
| [PYTHON] Kafka 연동 완전 가이드 : 실전 중심 데이터 스트리밍 (0) | 2025.07.25 |