왜 CSV?

Kaggle의 입력/출력

캐글은 주어진 데이터셋을 바탕으로 문제 해결을 목표로 합니다. 데이터는 CSV 파일로 주며, CSV로 출력 및 제출해야 합니다.

train.csvtest.csv 등등의 파일을 파이썬으로 읽어봅시다.

CSV란?

들어가기 전에 상식으로 CSV 파일이 무엇인가 알아야 합니다.

CSV 란 comma-separated values의 줄임말로 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일입니다.

확장자는 .csv를 사용하고, MIME 형식은 text/csv입니다. 비슷한 포맷으로 탭으로 구분된 TSV 로 반각 스페이스로 구분하는 SSV 등이 있습니다.

호환되지 않는 포맷을 사용하는 프로그램 끼리 자료를 전달할 때 사용합니다. Split 하여 처리하기 편하다는 장점이 있습니다.

CSV를 읽고 원하는 형식으로 포맷을 변경하는 것이 앞으로 해야할 일이란 것을 알 수 있습니다.

소스코드로 알아보기

Begginer : 읽기/쓰기 기본

읽기

기본적인 csv파일 읽기는 다음과 같습니다. csv 모듈을 import하고, 파일을 열고, reader라는 iterator로 루프를 돌며 읽습니다.

import csv
f = open('file_name.csv', 'r', encoding='utf-8')
rdr = csv.reader(f)
for line in rdf:
  print(line)
f.close()

쓰기

읽기와 비슷하게 할 수 있습니다. 파일을 열고, writer로 추가하고, csv형식으로 적습니다.

import csv
f = open('output.csv', 'w', encoding='utf-8')
wr = csv.writer(f)
wr.writerow([1, "Alice", True])
wr.writerow([2, "Bob", False])
f.close()

Intermediate : 조금 더 있어보이게

보통 파일은 계속 열고 있을 필요가 없기 때문에 다음과 같이 with as문으로 파일 닫는 과정을 생략할 수 있습니다.

또한 DictReader로 파이썬 딕셔너리 폼으로 읽을 수 있고, DictWriter로 쓸 수도 있습니다.

둘을 합쳐서 다음과 같이 사용할 수 있습니다.

with open('./train.csv') as csvfile:
    rdr = csv.DictReader(csvfile))
    for i in rdr:
      print(i)

Advanced : pandas로 읽기

후에 라이브러리 파트와 연결되는 내용입니다. 이 부분은 pandas 라이브러리를 참고해주세요.

import numpy as pd

train = pd.read_csv("./train.csv")
test = pd.read_csv("./test.csv")

# train 데이터 살펴보기
train.describe(include="all")

Ref.

잉고래의 코딩 - 파이썬(Python)의 with…as 문 쉬운이해

Leave a Comment