회사에서 데이터를 다루다 보면 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 파일의 데이터는 위 예제를 따릅니다.
먼저 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를 연동하는 모듈을 이용해도 다양하게 사용할 수 있습니다.
'컴퓨터 > Python' 카테고리의 다른 글
Python (22) - 로또 API이용하여 당첨번호를 크롤링해보자 (1) | 2024.01.29 |
---|---|
Python (21) - 파이썬을 이용하여 Beep로 연주하기 (winsound) (2) | 2023.10.17 |
Python (19) - 구글 이미지를 크롤링 하는 방법 (Selenium) (0) | 2023.08.09 |
Python (18) - 공공데이터 API를 이용하여 기상청 날씨를 가져오자 (0) | 2023.06.15 |
Python (17) - ChatGPT를 API로 사용해보자 (openai) (0) | 2023.05.15 |