본문으로 건너뛰기

CSV의 개념과 파이썬 활용법

CSV의 개념과 파이썬 활용법

CSV(Comma-Separated Values)는 간단한 텍스트 형식으로 데이터를 저장하고 교환하는 데 사용됩니다.

CSV 파일은 표 형식의 데이터를 텍스트로 저장하며, 각 데이터 필드는 쉼표(,)로 구분됩니다.

example.csv
이름,나이,도시
홍길동,24,서울
박민주,30,부산

CSV는 스프레드시트 프로그램(예: Microsoft Excel, Google Sheets) 및 데이터베이스 관리 시스템과 호환됩니다.


CSV의 기본 구조

헤더: 파일의 첫 번째 줄은 옵션으로, 각 열(column)의 이름을 포함할 수 있습니다. 헤더는 데이터를 해석하는 데 도움을 줍니다.

레코드(행): 각 행은 하나의 데이터 레코드를 나타냅니다. 일반적으로 데이터베이스의 하나의 엔트리나 객체를 의미합니다.

필드(열): 행 내의 각 데이터 항목은 필드라고 하며, 쉼표로 구분됩니다. 이 필드들은 각각의 데이터 포인트를 나타냅니다.


CSV 파일 읽기 및 쓰기

파이썬의 csv 내장 모듈을 사용하면 CSV 파일을 쉽게 읽고 쓸 수 있습니다.


csv.reader: CSV 파일 읽기

csv.reader는 CSV 파일을 읽기 위한 객체를 생성합니다.

이 객체는 파일 내의 각 레코드(행)을 순회하며, 각 레코드를 필드(열)의 리스트로 변환하여 반환합니다. 기본적으로 데이터는 쉼표로 구분되지만, 다른 구분자도 지정할 수 있습니다.

csv.reader 예제
import csv

with open('example.csv', 'r', newline='') as file:
reader = csv.reader(file)
for row in reader:
print(row)

위 코드는 example.csv 파일을 열고, 파일의 각 행을 출력합니다.

newline=''는 파일을 열 때 권장되는 방식으로, 플랫폼에 관계없이 일관된 개행 문자(줄바꿈) 처리를 위해 사용됩니다.


csv.writer: CSV 파일 쓰기

csv.writer는 CSV 파일에 데이터를 쓰기 위한 객체를 생성합니다.

이 객체를 사용하여 데이터 필드를 포함한 행을 CSV 파일에 쓸 수 있습니다. csv.writer 역시 기본적으로 쉼표를 필드 구분자로 사용하지만, 필요에 따라 변경할 수 있습니다.

csv.writer 예제
import csv

with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['name', 'age', 'city'])
writer.writerow(['John Doe', '30', 'New York'])
writer.writerow(['Jane Smith', '25', 'Los Angeles'])

이 코드는 새로운 output.csv 파일을 생성하고, 각 행에 데이터를 쓰기 위해 writerow 메소드를 사용합니다.

첫 번째 writerow 호출은 헤더 행을 작성하고, 이후 호출에서는 데이터 행을 추가합니다.


csv 모듈의 다른 기능들

  • csv.DictReader: CSV 파일을 딕셔너리 객체로 읽어들입니다.

  • csv.DictWriter: 사전 객체를 CSV 파일로 작성합니다.


DictReader, DictWriter 예제

동일한 파일 경로의 example.csv 파일 처리
# 동일한 파일 경로의 xample.csv 파일을 딕셔너리로 읽기
with open('example.csv', 'r') as file:
csv_reader = csv.DictReader(file)

# 각 행을 출력
for row in csv_reader:
print(row)

# 필드명
fieldnames = ['name', 'age', 'city']

# 데이터
rows = [
{'name': '김철수', 'age': 20, 'city': '대전'},
{'name': '이영희', 'age': 22, 'city': '광주'}
]

with open('output_dict.csv', 'w', newline='') as file:
# 필드명을 지정
csv_writer = csv.DictWriter(file, fieldnames=fieldnames)

# 헤더 작성
csv_writer.writeheader()

# 데이터 작성
for row in rows:
csv_writer.writerow(row)

참고: 현재 학습 환경에서는 open 함수를 사용하여 파일을 직접 읽고 쓰는 것을 지원하지 않습니다.


실습

화면 오른쪽 코드 실행 버튼을 누르고, 크롤링 결과를 확인하거나 코드를 수정해 보세요!

다음 내용이 궁금하다면?

월 12,500원 PLUS 멤버십 가입 or 강의를 등록해 주세요!