CSV(Comma-Separated Values) 파일은 데이터 저장 및 교환을 위한 가장 널리 사용되는 파일 형식 중 하나입니다. 데이터베이스, 데이터 분석, 웹 애플리케이션, 머신러닝 등 다양한 분야에서 CSV 형식을 사용하면 데이터를 손쉽게 저장하고 불러올 수 있습니다.
파이썬에서는 csv
모듈을 활용하여 CSV 파일을 쉽게 처리할 수 있으며, 기본적인 읽기 및 쓰기 기능뿐만 아니라 딕셔너리 데이터를 다루거나 특정 구분자를 변경하는 등의 고급 기능도 제공합니다.
이번 글에서는 CSV 파일의 구조부터 기본적인 입출력 방법, 딕셔너리를 활용한 고급 처리 기법까지 실전에서 유용하게 활용할 수 있는 다양한 CSV 파일 처리 방법을 알아보겠습니다.
1. CSV 파일이란?
1.1 CSV 파일의 구조
CSV 파일은 각 행(row)이 하나의 데이터 레코드(record) 이며, 쉼표(,)로 구분된 필드(field) 로 이루어진 간단한 텍스트 파일입니다.
예제 CSV 파일 (data.csv
):
이름,나이,직업
홍길동,30,개발자
김철수,25,디자이너
이영희,28,데이터 분석가
각 행(row)은 개별적인 데이터 레코드를 의미하며, 각 열(column)은 특정 속성을 나타냅니다. CSV 파일은 일반 텍스트 파일이므로 엑셀, 데이터베이스, 통계 소프트웨어 등 다양한 도구에서 쉽게 활용할 수 있습니다.
1.2 CSV 파일의 주요 활용 분야
✅ 데이터 분석: Pandas 라이브러리와 함께 사용하여 데이터를 쉽게 분석 가능
✅ 데이터 저장 및 공유: 데이터베이스의 정보를 내보내거나 가져올 때 CSV 활용
✅ 웹 크롤링 및 로그 분석: 크롤링한 데이터를 CSV 파일로 저장하여 관리
✅ 엑셀과 연동: CSV 파일은 마이크로소프트 엑셀, 구글 스프레드시트에서 손쉽게 열 수 있음
2. 파이썬에서 CSV 파일 다루기
2.1 CSV 파일 읽기 (Reading a CSV File)
CSV 파일을 읽을 때는 csv.reader()
함수를 사용합니다. 이 함수는 각 행을 리스트(List) 형태로 변환해 줍니다.
import csv
# CSV 파일 열기 및 읽기
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row) # 각 행을 리스트 형태로 출력
실행 결과:
['이름', '나이', '직업']
['홍길동', '30', '개발자']
['김철수', '25', '디자이너']
['이영희', '28', '데이터 분석가']
2.2 CSV 파일 쓰기 (Writing to a CSV File)
CSV 파일을 생성하거나 데이터를 추가할 때는 csv.writer()
를 활용합니다.
import csv
# 새 CSV 파일 생성 및 데이터 저장
data = [
["이름", "나이", "직업"],
["홍길동", "30", "개발자"],
["김철수", "25", "디자이너"],
["이영희", "28", "데이터 분석가"]
]
with open('output.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data) # 여러 행을 한 번에 저장
💡 newline=''
옵션을 추가하면 Windows 환경에서 발생할 수 있는 빈 줄 문제를 방지할 수 있습니다.
3. CSV 파일 고급 활용
3.1 딕셔너리를 이용한 CSV 파일 읽기/쓰기
딕셔너리를 사용하면 보다 직관적인 방식으로 데이터를 다룰 수 있습니다.
✅ CSV 파일을 딕셔너리 형태로 읽기 (DictReader
)
import csv
# CSV 파일을 딕셔너리 형태로 읽기
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(row) # 각 행을 딕셔너리로 출력
실행 결과:
{'이름': '홍길동', '나이': '30', '직업': '개발자'}
{'이름': '김철수', '나이': '25', '직업': '디자이너'}
{'이름': '이영희', '나이': '28', '직업': '데이터 분석가'}
✅ 딕셔너리를 이용해 CSV 파일 작성 (DictWriter
)
import csv
# 딕셔너리 데이터를 CSV 파일로 저장
data_dict = [
{"이름": "홍길동", "나이": 30, "직업": "개발자"},
{"이름": "김철수", "나이": 25, "직업": "디자이너"},
{"이름": "이영희", "나이": 28, "직업": "데이터 분석가"}
]
with open('output_dict.csv', mode='w', newline='', encoding='utf-8') as file:
fieldnames = ["이름", "나이", "직업"]
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writeheader() # 헤더 작성
writer.writerows(data_dict) # 데이터 작성
4. CSV 파일의 다양한 변형 처리
4.1 특정 구분자(delimiter
) 변경
CSV 기본 구분자는 쉼표(,
)이지만, 세미콜론(;
), 탭(\t
) 등의 다른 구분자를 사용할 수도 있습니다.
import csv
# 세미콜론(;)으로 구분된 CSV 파일 읽기
with open('semicolon_data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file, delimiter=';') # delimiter 변경
for row in reader:
print(row)
5. CSV 데이터를 판다스(Pandas)로 다루기
대량의 데이터를 처리할 때는 pandas
라이브러리를 사용하는 것이 훨씬 편리합니다.
import pandas as pd
# CSV 파일을 데이터프레임으로 읽기
df = pd.read_csv('data.csv')
print(df)
# 데이터 추가 후 CSV로 저장
df.loc[len(df.index)] = ["박민수", 32, "마케팅"]
df.to_csv('updated_data.csv', index=False, encoding='utf-8')
💡 pandas
를 활용하면 CSV 데이터를 보다 효율적으로 필터링, 정렬, 분석할 수 있습니다.
6. 결론: CSV 파일 활용의 핵심 정리
✅ CSV 파일은 데이터 저장 및 공유에 가장 널리 사용되는 형식 중 하나입니다.
✅ 파이썬 csv
모듈을 사용하면 데이터를 쉽게 읽고 쓸 수 있습니다.
✅ DictReader
와 DictWriter
를 사용하면 딕셔너리 형태로 보다 직관적인 데이터 처리 가능
✅ CSV 파일의 구분자를 변경하거나, pandas
를 활용하면 더욱 유연한 데이터 처리가 가능
파일 입출력은 프로그래밍에서 가장 기본적이면서도 필수적인 기능입니다. CSV 파일을 활용하여 데이터를 효율적으로 저장하고 불러오는 방법을 익히면, 데이터 분석, 웹 개발, 머신러닝 등 다양한 분야에서 활용할 수 있습니다.
'프로그래밍 > Python' 카테고리의 다른 글
고급 자료구조: 파이썬 제너레이터 완벽 가이드 (0) | 2025.02.26 |
---|---|
파이썬 리스트 컴프리헨션 완벽 가이드: 고급 활용과 성능 최적화 (0) | 2025.02.25 |
파이썬 파일 입출력 완벽 가이드: 데이터 저장과 활용의 모든 것 (0) | 2025.02.25 |
파이썬 파일 입출력 완벽 가이드: 파일 열기, 닫기, 그리고 실전 활용 (0) | 2025.02.25 |
파이썬 사용자 정의 예외: 프로그램 안정성을 높이는 방법 (0) | 2025.02.25 |