컴퓨터/Python

Python (20) - CSV파일을 다뤄보자 (CSV)

달서비 2023. 8. 21. 22:16

회사에서 데이터를 다루다 보면 CSV 파일로 변환하는 경우가 자주 있었습니다. CSV에 대하여 정리하고 파이썬으로 조작하는 방법을 알아보겠습니다.

 

CSV(파일 형식)

CSV는 Comma-Separated Values의 약자로 쉼표(,)로 구분하여 데이터를 저장하고 전송하기 위한 표 방식의 파일 형식입니다. 간단한 구조로 많은 프로그램 및 시스템에서 사용됩니다. 아래는 CSV 파일의 예시입니다.

Name, Age, Job
John, 25, "employee, Student"
Mike, 20, Engineer
Sang, 23, Student

위의 예제는 파일의 첫 줄을 헤더로 사용하여 각 열의 이름을 지정하고 다음 줄 부터는 데이터의 값을 넣습니다. 또한 " "을 통하여 쉼표가 있는 문자열을 포함할 수 있습니다. 이를 통하여 CSV 파일은 데이터를 다루는 다양한 프로그램에 사용되어 데이터 분석, 데이터 이전, 데이터 수집 등 다양한 데이터 작업에 사용됩니다. 

 

추가로 쉼표가 아닌 Tab으로 구분하는 TSV 확장자도 있습니다.

 

파이썬에서 CSV 파일을 다루기

전체 모듈의 사용 방법은 아래 링크를 참조하시면 됩니다. 여기서는 가장 많이 사용하는 읽기 및 쓰기의 예시를 설명하려고 합니다. 또한 파이썬의 내부 모듈로 전용 모듈을 다운로드 하지않고 바로 사용이 가능합니다. 

https://docs.python.org/ko/3/library/csv.html

 

csv — CSV File Reading and Writing

Source code: Lib/csv.py The so-called CSV (Comma Separated Values) format is the most common import and export format for spreadsheets and databases. CSV format was used for many years prior to att...

docs.python.org

CSV 파일 읽기

CSV 파일의 데이터는 위 예제를 따릅니다.

먼저 CSV 파일을 읽는 방법입니다. open함수로 .csv파일을 읽기 모드로 오픈하고 파일 객체를 csv.reader 객체로 넣습니다. csv.reader() 함수는 reader 객체를 리턴하여 한 라인씩 가져올 수 있습니다. 첫 번째 for 문은 한 라인씩 가져옵니다. 각 라인은 리스트 타입입니다. 그래서 두 번째 for 문을 돌릴 때 리스트 타입에 보이는 값을 출력합니다. 마지막 예시는 csv.DictReader 객체에 넣어 리스트 안에 각각 dict로 저장되는 것을 볼 수 있습니다. 해당 방법을 통해 JSON 형식으로 쉽게 뽑을 수 있습니다.

import csv
 
file = open('data.csv','r')
render = csv.reader(file)
 
for line in render:
    print(line)

'''
['Name', 'Age', 'Job']
['John', '25', 'employee, Student']
['Mike', '20', 'Engineer']
['Sang', '23', 'Student']
'''

file.seek(0)  # 파일 포인터를 파일의 처음으로 되돌립니다
render = csv.reader(file)

for row in render:
    print(row[0])

'''
Name
John
Mike
Sang
'''

file.seek(0)

render = csv.DictReader(file)
 
for dict in render:
    print(dict)

'''
{'Name': 'John', 'Age': '25', 'Job': 'employee, Student'}
{'Name': 'Mike', 'Age': '20', 'Job': 'Engineer'}
{'Name': 'Sang', 'Age': '23', 'Job': 'Student'}
'''

file.close()

 

CSV 파일 쓰기

CSV 파일을 쓰는 방법은 .csv 파일을 쓰기 모드로 오픈하고 파일 객체를 csv.writer 객체로 넣습니다. writerow()라는 메서드를 통하여 list 데이터를 한 라인으로 추가됩니다. 아래 예제는 writerow() 메서드를 통하여 위 예제를 파일로 만들었습니다. 실제로 파이썬으로 표와 같은 데이터를 추출할 때 소스 코드를 일부 조작하여 사용할 수 있습니다. 

import csv

f = open('output.csv', 'w', encoding='utf-8', newline='')
wr = csv.writer(f)

wr.writerow(['Name', 'Age', 'Job'])
wr.writerow(['John', 25, 'employee, Student'])
wr.writerow(['Mike', 20, 'Engineer'])
wr.writerow(['Sang', 23, 'Student'])

f.close()

 

마지막으로

CSV 파일을 파이썬에서 잘 사용하기 위해 pandas 모듈을 이용하여 효율적으로 사용할 수 있습니다. 다른 db를 연동하는 모듈을 이용해도 다양하게 사용할 수 있습니다.