프로그래밍/Python

파이썬 CSV 파일 처리 완벽 가이드: 데이터 저장, 읽기, 쓰기 및 실전 활용

shimdh 2025. 2. 25. 13:39
728x90

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 모듈을 사용하면 데이터를 쉽게 읽고 쓸 수 있습니다.
DictReaderDictWriter를 사용하면 딕셔너리 형태로 보다 직관적인 데이터 처리 가능
CSV 파일의 구분자를 변경하거나, pandas를 활용하면 더욱 유연한 데이터 처리가 가능

파일 입출력은 프로그래밍에서 가장 기본적이면서도 필수적인 기능입니다. CSV 파일을 활용하여 데이터를 효율적으로 저장하고 불러오는 방법을 익히면, 데이터 분석, 웹 개발, 머신러닝 등 다양한 분야에서 활용할 수 있습니다.

728x90